標籤: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