如何避免修復破損包的能力?

如何避免修復破損包的能力?

我正在使用運行以這種方式安裝的伺服器應用程式之一所需的 ruby​​gems 版本:

dpkg --install /tmp/rubygems1.8_1.3.7-2_all.deb

每次使用它時,aptitude 都希望回滾到 ruby​​gems 的舊版本(儲存在儲存庫中)。

我怎麼能告訴 aptitude 忽略這個問題?

我想要一個命令列解決方案,因為我使用的是伺服器(Ubutun 10.04),所以這不是以下內容的重複:告訴 aptitude 忽略損壞的包

答案1

只需在 apt 之外安裝所需的 gems 版本即可。這實際上是更好的也是如此,因為它將位於/usr/local/bin(您安裝的東西)中,而不是/usr/bin應該用於發行版的(您正在下載的存儲庫中構建的東西)。在這種情況下,發行版顯然試圖拒絕您的 gem 版本。

此外,隨您的 Ruby Gems 版本一起安裝的東西可能會位於更高版本的不同目錄中。包含路徑喜歡/usr/local/share而不是/usr/lib。這意味著當您使用它來安裝東西時,/usr/local/bin/gem它會轉到一個特殊的位置,不會幹擾/usr/bin/gem安裝的東西。

答案2

我使用 來保存包裹aptitude hold <package>。我不確定它是否也可以防止回滾,但值得一試。

您也可以使用 dpkg: echo “<package> hold” | dpkg --set-selections

參考

答案3

如果我是你,我會重新編譯(修改)該包,這樣它就不會破壞依賴關係。

因為我認為沒有一種可以接受的方法來告訴 dpkg/apt 對未滿足/損壞的依賴項感到滿意......因為這基本上就是它們創建的目的。

答案4

您可以使用equivs建立提供缺少的包的虛擬包。

當然,只有在安裝的軟體包之間不存在衝突的情況下,這才有效。

相關內容