2013-05-10 66 views
1

我目前正在開發我的第一個Linux RPM包以供發佈。在%post掛鉤期間,我想確保特定文件駐留在目標系統上。如果此文件存在,我想安裝繼續。如果這個文件丟失,我想讓RPM中止安裝並報告錯誤代碼。在Linux RPM安裝/升級過程中設置錯誤狀態

.spec文件中的條件邏輯工作正常,但在錯誤情況下添加「返回1」會導致RPM引發錯誤(並且具有諷刺意味的是,在這種情況下,RPM確實會返回錯誤代碼)。但是,告訴RPM安裝失敗並正常退出的「正確」方式是什麼?

謝謝!

回答

2

該特定文件是RPM的一部分?如果不是,則執行此檢查的正確位置位於%pre部分中。如果是,您可以使用%驗證進行驗證。當%運行後,包已經安裝,所以它不可能是「失敗」

1

要麼把支票在%pre部分,或將其添加到Requires領域做出rpm自己檢查你。

0

什麼是「正確」的方式告訴RPM安裝已失敗,並 優雅地退出?

最佳實踐是,如果滿足所有列出的依賴關係,RPM安裝應該不會失敗。

這聽起來非常像文件的依賴性,在這種情況下,它應該被列爲要求: /路徑/到/文件

如果它是你控制的部署站點特定的文件,則RPM應該部署自己預設好的,您可以在%文件%配置(了noreplace)指定。這將確保任何現有配置都不會被覆蓋,並且默認設置爲/path/to/file.rpmnew

如果要替換現有的配置,你可以使用%配置沒有(了noreplace)選項,這將導致現有的文件被擱置移到/path/to/file.rpmsave