在 RPM 規範文件中指定解壓位置
我已經在整個網際網路上尋找答案,但無法得到任何答案。我正在建構自己的 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
等)。相反,該軟體應安裝在這些目錄之一下,並且:
- 可以對它們進行符號連結,或者
- 比如說
/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}'