題 從apt-get切換到aptitude會導致問題嗎?


我一直在考慮改用aptitude,但我聽說有人說“如果你已經在使用apt-get,你應該等到下次安裝才能切換。”人們為什麼這麼說?這會導致什麼樣的問題(如果有的話)?


8
2018-01-09 21:35


起源




答案:


apt-get和aptitude是不同的UI,它們是同一個包管理系統的一部分, APT,高級包裝工具。例如,兩者都使用配置 /etc/apt/apt.conf,都使用相同的文件空間和格式來表示包狀態,並使用相同的文件空間來存儲下載的.debs。

它們的區別在於它們的內部規則係統來表示包之間的潛在衝突,如何解決它們(比如說 apt-get dist-upgrade 與 aptitude full-upgrade),以及如何在與用戶交互時表達這些內容。一般來說,兩者都可能在棘手的情況下做錯事,但apt-get比aptitude更容易弄錯。


8
2018-02-26 12:48



一個很好的,明確的答案。另外一個細節是它們何時/何時刪除自動安裝的依賴項。 aptitude 將立即刪除它們,但是 apt-get 只會輸入命令提示您刪除它們 apt-get autoremove。通常,他們會想要刪除相同的項目。但是,對於一個他們不同意的複雜案例,請參閱此鏈接: forums.debian.net/viewtopic.php?f=10&t=49589&start=0 - Telemachus


很多好的建議已經在這裡了,但是我想補充一點,沒有人提到過。 如果 你決定切換,你可能想要運行這個命令,這取決於你一直在做什麼 apt-get

aptitude keep-all

該命令重置 aptitude感覺什麼包是孤兒,應該被刪除。

這就是它有時有用的原因:現在一段時間,兩者兼而有之 apt-get 和 aptitude 將跟踪自動安裝的軟件包作為其他東西的依賴項。因此,例如,如果您安裝 mpd,你可能會得到 lib-so-and-so 作為依賴。他們這樣做,所以如果你以後刪除 mpdlib-so-and-so 也被刪除了。但 aptitude 和 apt-get 處理這個清理不同。 aptitude 立即嘗試刪除所有孤立的依賴項;但 apt-get 只是建議你跑 apt-get autoremove 清理。 (所有這些背後的邏輯是你從那以後只得到了庫 mpd 需要它。如果你不保留 mpd,你不應該再需要圖書館了。如果 另一個 包仍然取決於它,然後兩者 aptitude 和 apt-get 會知道這一點,而不是試圖刪除庫。)

我有什麼意義?好吧,如果你一直看到不斷推動 apt-get autoremove 然後切換到 aptitude,那麼你第一次嘗試安裝時可能會感到震驚。 aptitude 將直接嘗試刪除所有這些孤兒。一般來說,這樣會很好(畢竟他們是孤兒,而不是必要的),但有一個複雜的情況。桌面元數據包都涉及復雜的依賴關係鏈,其中每個單獨的程序作為虛擬包裹包裝的依賴項被拉入。例如,如果您安裝了Gnome,因為您安裝了 gnome 包,然後所有正常的桌面程序都作為依賴項安裝。如果你已經卸載了這些程序中的一個(例如,Ekiga或Gedit),那麼在眼中 aptitude 您的桌面的其餘部分也應該被刪除。注意 aptitude  總是 在它刪除之前問道,但是人們經常在沒有閱讀的情況下輸入'Y'。根據我的經驗,對於剛接觸Debian的人來說,這是最常見的抱怨/混淆。

兩條一般建議:

  1. 總是 讀取輸出 aptitude 要么 apt-get 在對任何事情說“是”之前,請仔細
  2. 請記住,你總是可以使用乾跑 aptitude -s safe-upgrade 要么 aptitude -s install foo。該 -s|--simulate 國旗是你的朋友。

5
2018-02-28 18:53





幾年前在Debian郵件列表上說過,從apt-get切換到aptitude是有風險的。這是兩個Debian版本(比如說10年前)。所有這些問題現在似乎已經解決了,當然我沒有在Debian或Ubuntu上看到過問題。


4
2018-01-10 04:38



你有郵件列表帖子的鏈接嗎? - Matthew
馬修,你能想像我在這裡保存了整個debian用戶郵件列表的完美索引存檔嗎?從上面可以清楚地看到我甚至還記不起這一年? - CarlF
@Matthew:不久前(Sarge或早期蝕刻),有很多人擔心轉換 apt-get 至 aptitude。那時,他們處理許多基本功能的方式截然不同隨著時間的推移,它們變得更加相似,而且 aptitude 已經成熟了一噸。對於現在的90%的情況,如果你切換應該沒有問題。查看我的帖子了解一個邊緣案例。 - Telemachus


我也會說繼續使用 aptitude
Aptitude 擁有更好的依賴管理 apt-get。這將有助於保持孤立軟件包的數量較少。
我剛讀過那篇文章 aptitude 具有更好的dist升級算法 apt-get。但這並不是一個殺手級的功能,因為它在系統的生命週期中通常不會被使用。

此外,您將在一個工具中擁有更多東西。而不是記住什麼時候打電話 apt-getapt-cache 要么 dpkg 我只使用aptitude並完成大部分工作。

關於“中間”切換時的並發症:我不記得有什麼時候我做了。


2
2018-01-10 00:13





它們不僅僅是同一後端的不同接口嗎?


1
2018-01-09 23:53



aptitude是一個更有特色的界面...... - quack quixote
那可能是。但是具有更多功能的界面並不一定意味著不同的後端。 - Svish
不,你是對的,兩者都是前端 dpkg。但 dpkg 只需安裝包;它是負責搜索,依賴解析和下載的前端。 - quack quixote
但搜索,下載和依賴解析不會破壞任何東西。或者如果確實如此,我認為這會非常奇怪...... - Svish
剛剛注意到你的上一條評論請記住,這是決定的前端 什麼 安裝; 的dpkg 只是安裝。如果出現問題,通常是因為依賴項解析失敗,或者因為用戶關閉了依賴關係解析(例如,使用 - 力 選項)。 - quack quixote


根據我的經驗,他們有不同的方式來固定包版本。在我的情況下,我告訴aptitude鎖定某些軟件包,假設我將來可以安全地從未來更新。我錯了;使用apt-get的cron-scheduled更新管理器繼續將它升級為我的沮喪。

Drats,正如我寫的那樣,我用Google搜索並發現了這個bug(#557580 aptitude不服從preferences.d / *中的引腳已經修復了!


1
2018-03-22 08:24





我同時使用apt-get和aptitude沒有任何問題:我有同樣的問題......為什麼人們這樣說? :d

繼續,不要擔心:aptitude只是apt-get的文本,你甚至可以用作命令行應用程序,例如 apt-get install foo 是相同的 aptitude install foo

問候


-1
2018-01-09 23:23



我不相信他們是一樣的。除非事情發生變化,否則aptitude會進行更多依賴項跟踪並刪除它自動安裝的所有軟件包,而apt-get則不會。也就是說,如果foo依賴於bar並且您使用apt-get安裝和刪除foo,則bar將保留在您的系統上。如果你對aptitude做同樣的事情,那就不會。 - William Pursell
你沒錯:看下面的~quack的評論。 - dag729
@William,@ dag729:當前版本的 apt-get 還提供自動刪除僅作為依賴項安裝的軟件包。這方面的剩餘差異是 aptitude 立即刪除依賴項(視情況而定),但是 apt-get 只會刺激你運行命令 apt-get autoremove。但他們現在都以同樣的方式跟踪依賴關係。但是,它們在處理複雜的依賴關係和邊緣情況(非常複雜的安裝或刪除)方面仍然不同,但對於大多數人和大多數情況,它們現在的工作方式相同。 - Telemachus