Debian

計算安裝在兩台主機上的軟體包之間的差異列表

  • January 15, 2014

我只是在我的 Debian 虛擬伺服器上添加了一些問題,然後我添加了從頭開始重新安裝所有這些問題。但是,我仍然可以訪問舊版本,並且可以檢索已安裝軟體包的列表。

為了方便將來恢復虛擬伺服器的過程,我想為我的每台伺服器創建一個特定包的列表。

為了更好地解釋我想要實現的目標。我已經有一個自動化的過程來創建一個新的虛擬伺服器,其中包含一些隨處使用的基本包和配置。現在我想用這個“骨架”保存增量,以簡化特定伺服器的重新安裝。

一個真正的優點是還可以保存預設更改的配置文件,但我只能使用包列表。

簡而言之,我想要一種方法來創建安裝在主機上但不在另一個主機上的軟體包列表。

如果列表只包含手動安裝的包而不是所有依賴項的列表,那就太好了。

如果您有一些旨在完成此特定任務的現有工具,請隨意提出它們,但我希望使依賴關係盡可能小。作為資訊,它們並不完全是虛擬伺服器,而是 LXC 容器。

在參考安裝上(僅一次):

dpkg-query -W -f='${Package}\n' | sort > baselist.txt

(以下假設bash

要從參考安裝中添加軟體包(這不顯示刪除的內容):

comm -1 -3 baselist.txt <(dpkg-query -W -f='${Package}\n' | sort)

更好的是,避免複製baselist.txt

comm -1 -3 <(ssh user@refserver cat /path/to/baselist.txt) <(dpkg-query -W -f='${Package}\n' | sort)

在舊伺服器上,執行:

dpkg –get-selections > 舊包列表

將上述文件複製到新伺服器並在新伺服器上執行:

dpkg –set-selections < 舊包列表

apt-get 更新

d選擇更新

另外,請記住在遷移包之前將所有額外的儲存庫從/etc/apt/sources.list舊伺服器添加到新伺服器,如果您不這樣做,那麼大多數包都將被解除安裝。

引用自:https://serverfault.com/questions/328642