【編譯打包】fastdfs-5.0.5-7.el7.centos.src.rpm

來源:互聯網
上載者:User

標籤:fastdfs

官方的spec檔案功能不夠完整,僅僅能夠完成rpm打包,但是rpm包安裝時會有各種問題。極少看到有人反饋spec檔案問題,估計使用rpm包進行安裝的,只有我一人。而使用rpm安裝,可以省略重複無意義且容易出錯的編譯過程,提升軟體安裝體驗。


(文末有百度網盤的連結)


我對官方的spec檔案進行了大幅改造,對預設設定檔也進行了適當調整,改進如下:


1、啟動指令碼

/usr/bin/stop.sh 和/usr/bin/restart.sh 名字過於霸氣,拋棄!

原fdfs_trackerd和fdfs_storaged啟動指令碼由於調用/usr/bin/stop.sh /usr/bin/restart.sh

新的啟動指令碼改為調用 /etc/rc.d/init.d/functions 公用函數進行啟動、關閉和重啟。


2、運行身份

設定檔相關選項預設為空白,即探測目前使用者身份,這容易誤導使用者用root運行程式而造成安全隱患。rpm包安裝時會建立普通使用者fdfs,設定檔改為,run_by_user=fdfs和run_by_group=fdfs

使用root身份執行啟動指令碼,程式會自動切換到fdfs使用者身份。


4、路徑問題

設定檔中的路徑,統一歸於/var/lib/fastdfs之下,屬主fdfs,比如/etc/fdfs/storage.conf

base_path=/var/lib/fastdfs/storage


5、將打包後的二進位包fastdfs-server 拆分成fastdfs-tracker 和fastdfs-storage,便於分別部署。


6、設定檔微調

檔案名稱去掉sample尾碼,直接使用conf檔案,

將可能被修改的參數放入設定檔前面,方便尋找。


附上修改後的fastdfs.spec檔案如下:

Name:fastdfsVersion:        5.0.5Release:        7%{?dist}Summary:FastDFS server and clientLicense:        GPLGroup:Arch/TechURL:        https://github.com/happyfish100/fastdfsBuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Source0:%{name}-%{version}.tar.gzSource1:fdfs_trackerd.initSource2:fdfs_storaged.initSource10:fdfs_trackerd.serviceSource20:fdfs_storaged.serviceSource3:tracker.confSource4:storage.confSource5:client.confSource6:http.confRequires:%__cp %__mv %__chmod %__grep %__mkdir %__install %__idBuildRequires:gccBuildRequires:  glibc-develBuildRequires:  libtoolBuildRequires:  makeBuildRequires:libfastcommon-develRequires(post): chkconfig%descriptionThis package provides tracker & storage of fastdfs%package  trackerSummary:  fastdfs trackerRequires: fastdfsRequires: libfastcommon%package  storageSummary:  fastdfs storageRequires: fastdfsRequires: libfastcommon%package toolSummary: fastdfs toolsRequires: libfastcommon%package -n libfdfsclientSummary: The client dynamic library of fastdfsRequires: libfastcommon%package -n libfdfsclient-develSummary: The client header of fastdfsRequires: libfdfsclient%description trackerThis package provides tracker of fastdfs%description storageThis package provides storage of fastdfs%description -n libfdfsclientThis package is client dynamic library of fastdfs%description -n libfdfsclient-develThis package is client header of fastdfs client%description toolThis package is tools for fastdfs%prep%setup -q%build# FIXME: I need to fix the upstream Makefile to use LIBDIR et al. properly and# send the upstream maintainer a patch.# add DOCDIR to the configure part./make.sh%installrm -rf %{buildroot}DESTDIR=$RPM_BUILD_ROOT ./make.sh installmkdir -p $RPM_BUILD_ROOT%{_bindir}mkdir -p $RPM_BUILD_ROOT%{_initrddir}mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/fdfsmkdir -p $RPM_BUILD_ROOT%{_sharedstatedir}/fastdfs/{client,storage,tracker}cp conf/storage_ids.conf $RPM_BUILD_ROOT%{_sysconfdir}/fdfs/cp conf/mime.types $RPM_BUILD_ROOT%{_sysconfdir}/fdfs/rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/init.d/fdfs_storaged rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/init.d/fdfs_trackerdrm -rf $RPM_BUILD_ROOT%{_bindir}/restart.shrm -rf $RPM_BUILD_ROOT%{_bindir}/stop.shrm -rf $RPM_BUILD_ROOT%{_sysconfdir}/fdfs/tracker.conf.samplerm -rf $RPM_BUILD_ROOT%{_sysconfdir}/fdfs/storage.conf.samplerm -rf $RPM_BUILD_ROOT%{_sysconfdir}/fdfs/client.conf.samplerm -rf $RPM_BUILD_ROOT%{_sysconfdir}/fdfs/storage_ids.conf.sample# install SYSV init stuff%{__mkdir} -p $RPM_BUILD_ROOT%{_initrddir}%{__install} -m 755 %{SOURCE1}  $RPM_BUILD_ROOT%{_initrddir}/fdfs_trackerd%{__install} -m 755 %{SOURCE2}  $RPM_BUILD_ROOT%{_initrddir}/fdfs_storaged%{__install} -m 644 %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/fdfs/tracker.conf%{__install} -m 644 %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/fdfs/storage.conf%{__install} -m 644 %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/fdfs/client.conf%{__install} -m 644 %{SOURCE6} $RPM_BUILD_ROOT%{_sysconfdir}/fdfs/http.conf%pre# Add the "fdfs" usergetent group fdfs >/dev/null || groupadd -r fdfsgetent passwd fdfs >/dev/null ||     useradd -r -g fdfs -s /sbin/nologin     -d /var/lib/fastdfs -c "fastdfs user"  fdfsexit 0%post tracker/sbin/chkconfig --add fdfs_trackerd%preun trackerservice stop fdfs_trackerd || true/sbin/chkconfig --del fdfs_trackerd%post storage/sbin/chkconfig --add fdfs_storaged%preun storageservice stop fdfs_storaged || true/sbin/chkconfig --del fdfs_storaged%postun%cleanrm -rf $RPM_BUILD_ROOTpushd common;make -s clean ;popdpushd tracker;make -s clean ;popdpushd storage;make -s clean ;popdpushd test;make -s clean ;popdpushd client ;make -s clean ;popd%files%defattr(-,root,root,-)%dir %{_sysconfdir}/fdfs%dir %attr(0755,fdfs,fdfs) %{_sharedstatedir}/fastdfs%files tracker%defattr(-,root,root,-)%{_bindir}/fdfs_trackerd%{_initrddir}/fdfs_trackerd%config(noreplace) %{_sysconfdir}/fdfs/tracker.conf%dir %attr(0755,fdfs,fdfs) %{_sharedstatedir}/fastdfs/tracker%files storage%defattr(-,root,root,-)%{_bindir}/fdfs_storaged%{_initrddir}/fdfs_storaged%config(noreplace) %{_sysconfdir}/fdfs/storage.conf%dir %attr(0755,fdfs,fdfs) %{_sharedstatedir}/fastdfs/storage%files -n libfdfsclient%{_libdir}/libfdfsclient*%config(noreplace) %{_sysconfdir}/fdfs/client.conf%config(noreplace) %{_sysconfdir}/fdfs/http.conf%config(noreplace) %{_sysconfdir}/fdfs/mime.types%config(noreplace) %{_sysconfdir}/fdfs/storage_ids.conf%dir %attr(0755,fdfs,fdfs) %{_sharedstatedir}/fastdfs/client%files -n libfdfsclient-devel%defattr(-,root,root,-)%{_includedir}/fastdfs/*%files tool%{_bindir}/fdfs_monitor%{_bindir}/fdfs_test%{_bindir}/fdfs_test1%{_bindir}/fdfs_crc32%{_bindir}/fdfs_upload_file%{_bindir}/fdfs_download_file%{_bindir}/fdfs_delete_file%{_bindir}/fdfs_file_info%{_bindir}/fdfs_appender_test%{_bindir}/fdfs_appender_test1%{_bindir}/fdfs_append_file%{_bindir}/fdfs_upload_appender%changelog* Thu Nov 05 2015  Purple Grape <[email protected]>- new init scripts- run as user fdfs by default* Mon Jun 23 2014  Zaixue Liao <[email protected]>- first RPM release (1.0)




附件數量較多,移步百度網盤

http://pan.baidu.com/s/1pJszKHP


如果將srpm包經過重新編譯,也適用於CentOS 6


本文出自 “專註Linux 營運” 部落格,請務必保留此出處http://purplegrape.blog.51cto.com/1330104/1710514

【編譯打包】fastdfs-5.0.5-7.el7.centos.src.rpm

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.