
我正在使用運行以這種方式安裝的伺服器應用程式之一所需的 rubygems 版本:
dpkg --install /tmp/rubygems1.8_1.3.7-2_all.deb
每次使用它時,aptitude 都希望回滾到 rubygems 的舊版本(儲存在儲存庫中)。
我怎麼能告訴 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
建立提供缺少的包的虛擬包。
當然,只有在安裝的軟體包之間不存在衝突的情況下,這才有效。