![我只是想安裝一個套件!](https://rvso.com/image/50568/%E6%88%91%E5%8F%AA%E6%98%AF%E6%83%B3%E5%AE%89%E8%A3%9D%E4%B8%80%E5%80%8B%E5%A5%97%E4%BB%B6%EF%BC%81%20.png)
我花了幾個小時嘗試安裝軟體包但沒有成功;似乎在 Linux 環境中有時會發生這種情況。
背景:我想要安裝的軟體包可以作為 1).deb
用於 x86 而不是 x64 的軟體包、2) a .Run
、3) 原始碼和 4) OSX 安裝程式提供。 OSX 安裝程式可以正常運作。在全新安裝 Debian 7 時,我嘗試了從原始碼編譯 、 和.deb
。.Run
這三個人帶領我經歷了一連串的困難。最基本的問題似乎是,透過這些途徑,Debian 7 給了我太舊的版本LibC
和太舊的Ocaml
.我大部分的時間都花在執行一個又一個 apt-get 指令來嘗試解決依賴關係。
問題:有哪些工具可以透過盡可能自動化的流程來簡化軟體包的安裝?所有包,甚至從原始碼構建,都會明確它們需要哪些依賴項的哪個版本,對吧?那為什麼不能自動解決所有依賴關係呢?
我什至很樂意在我的系統上建立目錄,其中包含我的包所需的每個依賴項的副本,以便它可以在自己的小環境中運行,而無需修改我係統上其他包的版本;我不確定這是否可能。我確信一定有某種方法可以說“給我一個名為 Foo 的軟體包,版本 4.2.3”,然後其他一切都為我完成。
答案1
體驗幾乎相同。你的問題是 Debian(穩定)不是一個尖端發行版,它是穩定的。這意味著它將在其儲存庫中包含舊版本的軟體包(順便提及軟體包名稱可能是個好主意)。您將其與新版本的 OSX 進行比較,後者俱有更新版本的基本庫,例如libc
.
安裝.deb
為您正在運行的 Debian 版本打包的軟體包非常簡單且輕鬆。相信我,我過去必須從原始碼安裝大多數東西。當你運行aptitude install foo.4.2.3.deb
你的時候是說“給我一個名為 Foo 的軟體包,版本 4.2.3”,然後其他一切都為您完成。如果因為您使用的是舊版本而沒有在儲存庫中,那不是套件管理器的錯。
因此,我建議發布一個新問題並詢問如何安裝您嘗試獲取的特定軟體包。請記住,如果需要更新版本,libc
將整個系統升級到testing
或experimental
儲存庫可能會更容易。雖然可以只升級 libc,但這既不簡單也不直接,請參閱這裡。
另外,您應該知道這是不是一個小問題。雖然套件管理器可以很好地管理依賴關係,但它們可能會發生衝突。尤其是在使用像libc
.
該命令將列印出依賴於libc
.
apt-cache rdepends libc6
在我的 Debian 上,該清單包含 16056 個不同的軟體包。如果因為軟體包foo
依賴較新的版本而升級 libc,那麼軟體包管理器應如何處理 16056 軟體包依賴已安裝版本的事實?它如何知道它們是否也與新版本相容?
答案2
我想在這裡順便說一句,我認為你的期望是錯的。
這些解決方案針對的是兩個完全不同的受眾。蘋果嚴格控制可用的軟體,而且它只是一小部分應用程式。
我幫助了更多的人,我承認他們正在使用 OSX 系統,他們想要安裝開源專案“X”,但他們在 OSX 上使用錯誤版本的 Xcode 經歷了所有相同類型的麻煩,或者他們是使用官方版本的subversion,需要從MacPorts或HomeBrew安裝版本。在安裝這個套件“X”之前,與不同的庫和依賴項進行鬥爭實際上沒有什麼區別。
我見過沒有任何神奇的工具可以讓您將依賴項放入目錄中並安裝應用程式“X”。它根本不存在,而且永遠不會存在。人們已經進行了許多嘗試來使依賴管理和套件管理變得更好,但這只是一個需要解決的極其複雜的問題。
Apt、Yum 等都做得很好,但問題是他們試圖解決一個不受約束的問題,而這通常是不可能的。您只能獲得 80% 類型的解決方案,或適用於「大多數」情況的解決方案。
就這麼簡單。