介紹如何將 Ubuntu Linux 舊系統的所有安裝套件列表匯出,並套用至另一台新系統,讓新舊系統安裝完全相同的套件組合。
在安裝新系統、轉移各種伺服器時,通常都要確認新舊系統的開發或執行環境是完全一致的,才不會導致轉移後應用程式出問題,若在 Ubuntu Linux 中,可以使用以下介紹的方法來處理新舊系統套件同步的問題。
原系統匯出套件資訊
apt-mark
指令可以用來管理系統套件的各種設定值,亦可用來將舊系統的套件資訊轉移至新系統中,讓新舊系統的安裝套件狀態完全一致。
首先在原系統中,執行 apt-mark
將所有手動安裝的套件以及自動安裝的相依性套件都列出來,儲存在文字檔案中:
# 列出手動指定安裝的套件(原系統) apt-mark showmanual > pkgs_manual.lst # 列出自動安裝的相依套件(原系統) apt-mark showauto > pkgs_auto.lst
以 dpkg
列出所有安裝的套件列表:
# 列出所有安裝套件(原系統) dpkg --get-selections > installed-packages
如果有使用 PPA 安裝套件的話,可以連同金鑰一起轉移(若沒用到 PPA 則可省略):
# 匯出所有金鑰(原系統) apt-key exportall > repo-keys
新系統安裝套件、同步套件狀態
在新系統中先安裝 dselect
工具:
# 安裝 dselect 工具(新系統)
sudo apt-get install dselect
匯入金鑰(有使用 PPA 的情況才需要):
# 匯入金鑰(新系統)
sudo apt-key add repo-keys
更新可用套件:
# 更新可用套件 sudo apt-cache dumpavail | sudo dpkg --merge-avail
匯入所有套件列表後,自動安裝缺少的套件:
# 設定套件狀態(新系統) sudo dpkg --set-selections < installed-packages # 安裝缺少的套件(新系統) sudo apt-get dselect-upgrade -y
以 apt-mark
恢復手動安裝套件以及自動安裝的相依性套件的狀態:
# 恢復手動安裝套件狀態(新系統) sudo apt-mark manual $(cat pkgs_manual.lst) # 恢復自動安裝的相依套件狀態(新系統) sudo apt-mark auto $(cat pkgs_auto.lst)