Debian
如何找到沒有依賴關係的已安裝 debian 軟體包列表?
我正在嘗試比較兩個 debian 11 系統(伺服器 1 和伺服器 2)、一個 debian 9 和一個 11 系統(伺服器 3 和伺服器 2),並確保它們具有相同的軟體包。我打算使用 ansible 安裝缺少的軟體包。
我查看了Debian 在哪裡儲存已安裝軟體包的列表?但它不顯示 apt 包版本,也顯示依賴項。我只需要安裝在 system1 上的帶有版本號的 debian 軟體包,這樣我就可以在 system2 上進行比較並安裝缺少的軟體包。
apt-mark showmanual
將列出所有手動安裝的包,即顯式安裝而不是作為依賴項拉入(並保持安裝)的包。
要獲取相應的版本,請使用
dpkg-query -W $(apt-mark showmanual)
但是,您不能使用它來可靠地將包選擇從一個系統複製到另一個系統,因為依賴性計算會在不同的時間點產生不同的結果(隨著包依賴性的發展)。這意味著
apt
與幾個月或幾年前相比,現在要求安裝一組軟體包不會在系統上產生完全相同的結果——它可能會產生相同的結果,特別是如果兩個系統都是使用Debian 的相同基本版本,但您不能依賴它來執行此操作。還要注意,依賴特定版本並不是那麼有用:
apt
只能安裝儲存庫中目前可用的任何版本,因此除非您在“源”系統上保留了包含版本的儲存庫,並且知道那里安裝了哪些版本不會提供有關目標的可操作資訊。另請參閱為什麼以前版本的 Debian 軟體包在軟體包儲存庫中消失了?(與版本控制的系統配置高度相關)您真的應該使用如何將已安裝的軟體包選擇從一個 Debian 系統複製到另一個系統中描述的方法之一?(Debian Wheezy) — 本質上,用於
dpkg --get-selections
列出所有軟體包“選擇”,dpkg --set-selections
然後apt-get dselect-upgrade
將它們應用到目標系統上。