Rhel
RPM 如何處理文件位置?
我正在嘗試創建一個 .spec 文件,用於將 mapserver 創建為 rpm 包。我在 RHEL6 64 位伺服器上建構。
在 rpm 文件中,我可以使用一些 dir 引用,例如
%{_libdir}
,%{_bindir}
和%{_libexecdir}
. 這些 dir 路徑在哪裡配置,哪些可以使用?我的 rpm 規範的 %files 部分看起來像這樣:
%files %defattr(-,root,root) %doc README COMMITERS GD-COPYING HISTORY.TXT %doc INSTALL MIGRATION_GUIDE.txt %doc symbols tests %doc fonts %{_bindir}/* %{_libdir}/libmapserver*.so %{_libexecdir}/mapserv
但是當我執行我的建構時,我得到了錯誤:
File not found by glob: /home/kfadm/rpmbuild/BUILDROOT/mapserver-6.2.1-3.x86_64/usr/lib64/libmapserver*.so File not found: /home/kfadm/rpmbuild/BUILDROOT/mapserver-6.2.1-3.x86_64/usr/libexec/mapserv
似乎失去的文件位於
/home/kfadm/rpmbuild/BUILDROOT/mapserver-6.2.1-3.x86_64/usr/lib/libmapserver-6.2.1.so /home/kfadm/rpmbuild/BUILDROOT/mapserver-6.2.1-3.x86_64/usr/lib/libmapserver.la /home/kfadm/rpmbuild/BUILDROOT/mapserver-6.2.1-3.x86_64/usr/lib/libmapserver.so /home/kfadm/rpmbuild/BUILDROOT/mapserver-6.2.1-3.x86_64/usr/lib/debug/usr/lib/libmapserver-6.2.1.so.debug /home/kfadm/rpmbuild/BUILDROOT/mapserver-6.2.1-3.x86_64/usr/lib/debug/usr/lib/libmapserver.so.debug /home/kfadm/rpmbuild/BUILDROOT/mapserver-6.2.1-3.x86_64/usr/bin/mapserv /home/kfadm/rpmbuild/BUILDROOT/mapserver-6.2.1-3.x86_64/var/www/cgi-bin/mapserv
如何修復 rpm 規範以在正確的路徑中找到文件?
這個問題源於 RHEL 希望將 64 位庫安裝到 /usr/lib64 目錄,而不是預設的 /usr/lib 目錄。
mapserver 6.2.1 使用 autoconf,並包含一個 –libdir 選項。在您的 .spec 文件中修改 ./configure 命令:
%configure --libdir=$RPM_BUILD_ROOT%{_libdir}
由於缺少創建該特定目錄的安裝命令,我遇到了這個問題。一旦我在下添加了安裝命令
%install
,rpm
生成成功install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/php.d