2015-02-05 79 views
1

的路徑我有2個誰應該被放置在同一個目標依賴包。包B依賴於包A.建築RPM包:力安裝在相關的搬遷包

包A可被重新定位到任何其他位置。 我現在想要將包B強制置於與包A相同的目標中。或者簡單地說,如果沒有相同的--prefix,包B應該無法安裝。

任何想法如何acieve呢?

我認爲把一個%的預腳本來檢查這一點。但是,我認爲這沒有幫助,因爲我無法閱讀此腳本中給定的「前綴」 - 或者我可以嗎?

謝謝你的幫助!

+0

你知道一種查詢軟件包的方法嗎?我不是非正式的(但我從未嘗試過)。這就是說你不需要這樣做,而只需檢查你的*前綴是否有你依賴的文件。 (其實我不知道文件的先決條件是否會受到給定前綴的影響。) – 2015-02-05 16:06:19

+1

是的,這是'rpm -qa --queryformat'%{instprefixes}'NAME_OF_PACKAGE' – Karl 2015-02-05 17:18:12

+0

有趣。那麼,關於爲* current *包獲取前綴的問題呢?基於參數,'%{DEFAULTPREFIX}'或'%{INSTALLPREFIX}'是否在'%pre'中正確擴展? – 2015-02-05 17:47:34

回答

0

哈。所以我做了一些源代碼潛水,並發現,顯然(至少在rpm 4.8.0我沒有看其他版本)RPM_INSTALL_PREFIXRPM_INSTALL_PREFIX#環境變量設置爲%pre(可能還有其他腳本)的值(似乎是%{INSTPREFIXES}和/或%{INSTALLPREFIX}宏)。 [source link]

我會嘗試那些在您%pre腳本。他們看起來像他們會給你想要的。

Same code in rpm head.

+0

但是,這將是正在安裝的包,而不是他正試圖匹配的* other *包... – 2015-02-07 01:07:59

+0

@ AaronD.Marasco他可以查詢'''''在'%pre'期間,'rpm'作爲已安裝軟件包的前綴我假設(或者只是從其他軟件包中搜索已知文件的當前軟件包的前綴)。 – 2015-02-08 22:35:00

+0

謝謝你!那就是我需要的!多好:D – Karl 2015-02-09 10:01:19