2012-11-07 24 views
0

我正在設計一個Eclipse功能,其中包含需要依賴項的安裝目標中可能存在的軟件包,但這不一定是這種情況。我想避免安裝不必要的IU。我想知道如何告知p2安裝程序,我希望僅在安裝中不存在所需的IU並提供存儲庫位置才能從中下載IU時才安裝功能。如何在功能安裝期間建議p2添加存儲庫以防尚未安裝功能的依賴關係?

用於主IU中號取決於一個IU d期望的情形是:

  1. P2嘗試安裝M的,發現它需要d
  2. P2發現d在當前丟失安裝
  3. 基於安裝建議,P2求出從與d
  4. P2相關聯的存儲庫URL d安裝d
  5. P2安裝中號
+1

「...如果現有安裝尚未滿足依存關係,則安裝它們」:這是p2的默認設置。如果依賴性例如一個'Require-Bundle',並不在那裏,它會被安裝。您不需要在功能級別建模相同的依賴關係(因爲您需要使用以前的Update Manager)。 – oberlies

+0

有幫助,但沒有提供關於在何處指定依賴關係的存儲庫URL的信息。我不想要求用戶手動將存儲庫添加到候選列表中。這是一個p2.inf指令,當組件安裝時添加一個倉庫?如果是這樣,在決議發生之前是否處理了這個建議? –

回答

0

據我所知,這是既不可能

  • 有條件地添加只有一個依賴是不成立P2存儲庫,也不是
  • 安裝之前添加P2存儲庫 - 你只能添加P2存儲庫如在安裝特徵的過程中,該特徵然後可以用於下一個操作,例如,更新。

但是,您可以通過在您自己的p2存儲庫中包含具有您的功能的依賴項的p2存儲庫來實現您的用例。

從技術上講,有不同的解決方案,但最簡單的方法可能是創建一個所謂的「組合存儲庫」,其中包含存儲庫與您自己的內容以及具有外部依賴項的存儲庫。