Rpm

在 RPM 規範文件中指定解壓位置

  • September 17, 2014

我已經在整個網際網路上尋找答案,但無法得到任何答案。我正在建構自己的 RPM,我需要它來將某些文件解壓到特定目錄。這些目錄屬於使用者support,因此應映射到:~/exporttool~/bin~/jlog( /home/support/directory)。但是當我執行命令來建構 rpm 時:

rpmbuild -v -bb SPEC/supportScripts.spec

我明白了:

File not found: /root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/cmd2
File not found: /root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/cmd
File not found: /root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/cmd8
File not found: /root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/exportToTransferSyntax.sh

我在這個連結中有規範文件。有人可以告訴我我做錯了什麼以及如何配置規範文件以正確映射到/home/support/directoryOfWhereFilesShouldGo

絕不應使用 RPM 將軟體安裝到/home目錄中。這只是個壞主意。RPM 應僅用於系統管理的目錄(/bin/usr/bin等)。

相反,該軟體應安裝在這些目錄之一下,並且:

  1. 可以對它們進行符號連結,或者
  2. 比如說/usr/bin,一旦安裝到 中的工具將通過系統的$PATH.

每當您嘗試在 Linux/Unix 中做某事時,您發現自己在做這件事時遇到了困難,您應該退後一步。這是架構/系統告訴你一些事情。您可能正在做一些您不應該做的事情,並且您正在與它的設計使用方式背道而馳。

規格文件

宏以其目前形式對%install我來說沒有意義。

%install
mkdir -p %buildroot/%name
tar -xvf /home/vagrant/rpm/SOURCE/supportScripts-1.tar
mkdir /home/support/exporttool
mkdir /home/support/bin
mkdir /home/support/jlog

mkdir解壓 tarball 後為什麼要’ing 這些目錄?你為什麼還要製作它們?如果它們包含在 tarball 中,那麼這是不必要的。如果這些目錄未包含在 tarball 中,那麼它們只是空的,並且您收到的錯誤正在告訴您這一點。

找不到文件:/root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/cmd2

沒有cmd2包含文件,因為它不在 tarball 中或在%install.

您可以通過檢查 tarball 的清單來確認這一點:

$ tar tvf /home/vagrant/rpm/SOURCE/supportScripts-1.tar | \
   grep -E 'support/{exporttool,bin,jlog}'

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