如何导出系统上已安装的 Debian 软件包列表,然后在新系统上安装相同的软件包?
答案1
备份:
sudo dpkg --get-selections > /tmp/dpkglist.txt
恢复:
sudo dpkg --set-selections < /tmp/dpkglist.txt
sudo apt-get -y update
sudo apt-get dselect-upgrade
另请参阅此问题以了解更多选项和信息:Ubuntu,如何像现有机器一样设置新机器
我每天都会在一个 cronjob 中运行上述程序,将 dpgklist 检查到 SVN 中作为我们服务器清单的一部分。这样您就可以在服务器上保存一份合理准确的已安装软件包清单,并且可以轻松进行快速的并排比较以查看服务器是否缺少特定软件包。
答案2
aptitude
也满足此用例,并且它保留了其他方法没有的有关“自动安装”软件包的信息。在参考机上运行以下命令:
aptitude search -F '%p' '~i!~M' > package_list
复制package_list
到另一台机器并运行
xargs aptitude --schedule-only install < package_list; aptitude install;
答案3
这是个好主意,你也可以设置一个服务器apt-proxy如果你养成这个习惯。
答案4
在 Debian/Ubuntu/Mint 的最新版本中,dpkg
需要将可用软件包放入其“可用”数据库中dpkg --set-selections
上班。
示例序列:
- (在其他系统上)
dpkg --get-selections > installed.dselect
sudo apt update
apt-cache dumpavail | sudo dpkg --merge-avail
sudo dpkg --set-selections < installed.dselect
sudo apt-get dselect-upgrade
第三个命令填充 dpkg 的“avail”数据库。运行此命令很重要前设置要安装的附加包的选择。
这需要 dpkg v1.17.7 及更高版本。请参阅问:为什么“dpkg --set-selections”不记录未知包的选择?在 Debian wiki 上查看更多详细信息。