如何按儲存庫取得已安裝軟體套件的摘要並查看與全新安裝的差異?

如何按儲存庫取得已安裝軟體套件的摘要並查看與全新安裝的差異?

我剛剛將幾台 PC 升級到 Ubuntu Trusty 14.04。為此,我曾經從頭開始安裝所有內容以獲得乾淨的系統,僅保留 /home (和 /etc 以供參考)。

不過,這次我使用升級工具進行了升級,我想知道我的電腦與標稱系統相比有什麼差異。因為我從不同的來源安裝了許多不同的軟體包,並且可能到處編輯了一些文件。當然,我知道 apt 應該自動神奇地處理所有事情,但我是偏執型的,我真的想確定一下。

基本上,我想要的是:

  1. 取得所有已安裝軟體包的清單以及每個軟體包的來源儲存庫(如果可用)。這基本上是apt-cache policy每個包的一個,但總結在一個整潔的清單中。

  2. 對於來自「非官方來源」的軟體包,指示是否有來自官方來源的可用版本(我的意思是 /etc/apt/sources.list 中列出的儲存庫)。

    有時我安裝了一些第三方的補丁包,但由於版本號衝突,該包沒有更新。我想要一個清單來告訴我回退到官方版本是否有意義。

  3. 檔案系統上來自已安裝軟體包(包括設定檔)但隨後被修改的所有檔案的列表

  4. 檔案系統上所有非來自已安裝軟體套件的檔案的清單(不包括 /home,可能還包括 /etc)

基本上,我想知道升級與全新安裝時我的系統有何差異,並根據具體情況決定這些差異是否會導致一些不穩定。

答案1

我的問題已經部分得到解答如何取得過時軟體包的清單?

答案建議使用

apt-show-versions | grep 'No available version'   # Show all package not coming from repo
aptitude search '~o'                              # Similar

我想我們也可以這樣做:

apt-show-versions | grep -v uptodate              # All packages that are not up-to-date

這將提供不是最新的軟體包,即可以從啟用的儲存庫升級的軟體包,或不是來自此類儲存庫的軟體包。

要獲取此類軟體包的所有可用版本的列表,我們可以這樣做:

apt-show-versions -a $(apt-show-versions | grep -v uptodate | sed -r 's/:.*//')

我還發現了一個問題引用deborphan -a如何列出 apt 中已安裝但不受儲存庫支援的軟體包?

deborphan -a             # List all packages that have no reverse dependencies

總而言之,我對第 1 項和第 2 項有一些答案,但仍在尋找第 3 項和第 4 項:

  1. apt-show-versions是一個很好的答案
  2. 同上,上面的命令組合之一。當然,這裡的關鍵步驟是先確保 /etc/apt.conf 中僅啟用官方儲存庫。

相關內容