2015-07-13 66 views
1

我的包取決於FOO這樣:可以`建立 - 取決於:`指定一個包的舊版本?

Build-Depends: foo (>= 2.99.2) 

不過,我發現,由於API破損,富v2.99.3和2.99.4導致不兼容與我的包的版本。

我可以指定一個Build-Depends字段,指出它只能拉2.99.2版本嗎? (不是更高或更低)

我只是嘗試foo(= 2.99.2),但它不起作用。它說Unmet build-dependency in source

回答

0

是的,你可以指定一個確切的版本=(relevant section of Policy)

這並不完全清楚,但您可能會遇到麻煩,因爲foo的版本具有Debian修訂版;也就是說,整個版本可能是2.99.2-3或類似的。如果你想要一個確切的版本,你需要指定確切的版本。

如果是這種情況,您可能需要執行類似foo (>= 2.99.2), foo (<< 2.99.3)的操作,以涵蓋整個2.99.2s的範圍。

編輯添加:我一直假設你確實已經安裝了必要的版本,但是你對「pull」這個詞的使用讓我想知道你的問題是不是在apt一邊。可能你正在使用像pbuilder這樣的構建框架,它試圖自動安裝它的構建依賴項,而自動安裝是失敗的部分。如果是這樣的話,您需要通過apt源創建2.99.2版本,或者在構建之前手動將其安裝到構建環境中。

0

如果API破損是暫時的,說是由於錯誤,那麼你可以使用這些特定版本內建衝突,但你可能必須處理所有可能的修改,等等。在Debian中,我們通常不考慮這樣的並假定對於短暫的錯誤,它們必須被修正。否則,我們可能會陷入非常混亂的依賴關係。

如果這是一個永久性的API破損,並且這是發行版的一部分,那麼您需要更新您的軟件包,請求恢復構建依賴關係時請求API破壞,或者使用另一個名稱打包舊構建依賴項,通常沒有辦法解決這個問題。

相反,如果這是一個本地/自定義庫,在這裏,你可能有可用於構建依賴多個版本,那麼你仍然可以加上像Build-Conflicts: foo (>= 2.99.3)一個版本內建衝突。或者如果這真的只適用於2.99.2,那麼像 Build-Depends: foo (>= 2.99.2), foo (<< 2.99.3)可能會更好地工作。

相關問題