0
我有一個規範文件,該文件是類似於:的rpmbuild規範文件%安裝部分的錯誤
BuildRoot: /tmp/build_%{name}-%{version}-%{release}
%prep
...
...
%install
# Directories
install -m 755 -d %{buildroot}/usr/app/mypackage/config
install -m 755 -d %{buildroot}/usr/app/mypackage/src
....
# Bash script
install -m 755 script/script1.sh %{buildroot}/usr/app/mypackage/config/script1.sh
install -m 755 script/script2.sh %{buildroot}/usr/app/mypackage/config/script2.sh
install -m 755 script/myapp-log %{buildroot}/etc/logrotate.d/myapp-log
當我運行的rpmbuild我得到的錯誤:
install: cannot create regular file `/tmp/build_my_app-1.0-2/etc/logrotate.d/myapp-log'
我可以解決這個問題手動創建/etc/
,然後在/tmp/build_my_app-1.0-2/
目錄中創建/etc/logrotate.d
目錄。
當我重新運行rpmbuild時它會起作用。
我想這是因爲我沒有在我的安裝部分,但其沒有直接關係,我的申請,我不希望把他們在創建這個目錄。
我的猜測是,有一些聰明的標籤我可以用來解決這個問題,這樣的構建將無需任何手動干預。
我的問題: 可能有人請提出一個辦法,我做到這一點(假設其可能的),還是我需要寫周圍的rpmbuild腳本先設置此。
好的,這是有道理的。安裝-d $ {buildroot}/etc/logrotate.d'會比'mkdir'更好嗎?我只是想知道,因爲大多數linux系統似乎已經有了logrotate設置,並且我不想在構建或安裝時發生任何錯誤 – ghostJago
@ghostJago,安裝命令不會在部署時安裝到操作系統,它們將安裝到$ {buildroot}中,以便%files部分可以開始驗證構建是否將所有預期的文件正確放置在預期位置。您可以使用'install -d'或'mkdir -p',這並不重要,當執行'rpm --install package.rpm'時,這些命令都不會被執行。 –