2016-08-05 56 views
0

我是RPM大樓中的一名newby。我必須構建RPM,只有在目標機器上存在文件/ etc/i-am-a-require時纔會安裝軟件包。所以我寫了如何在SPEC文件腳本的%pre部分返回false時回滾RPM安裝

%pre 
if test -f "/etc/i-am-a-requirement"; then 
echo "I'm OK to continue" 
else 
echo "The file is not found, the RPM won't be installed" 
-- How to add failure here? -- 
fi 

我知道,通常我們期望RPM有依賴的包,但在這種情況下,在「/ etc/I-AM-A-要求」分佈二進制,所以它不會有一個包在所有。

+0

http://stackoverflow.com/questions/9932562/how-to-exit-rpm-install-in-case-of-an-error?rq = 1 –

回答

1

%pre,%post等腳本無法停止安裝rpm。一旦你在腳本里面,安裝將繼續執行腳本的退出代碼。

你應該使用要求:

Requires: /etc/i-am-a-requirement 
+1

如果'/ etc/i-am-a-requirements'不在rpm包中,它能起作用嗎? – WilQu

+1

'%post'不能,但'%pre'可以 - 只需調用'false'。它不會「回滾」你在腳本中做的任何事情。至於你回答的「需求」標誌,這是正確的解決方案。如果直接查看文件系統或檢查RPM數據庫,我不確定。 –

+0

感謝@aaron的澄清。 wilqu:是的,它只與一個文件一起工作,但正如Aaron所說,不確定是否會在磁盤上搜索文件或者只是在rpm數據庫中搜索文件。 –

相關問題