Rhel

RPM 如何處理文件位置?

  • January 13, 2019

我正在嘗試創建一個 .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}

由於缺少創建該特定目錄的安裝命令,我遇到了這個問題。一旦我在下添加了安裝命令%installrpm生成成功

install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/php.d

引用自:https://unix.stackexchange.com/questions/89407