你好,
我用它apt-get install
来在 PC 上安装各种软件。我有几台 PC,它们都需要安装相同的软件包。我如何获取通过安装的软件列表apt-get install
以及安装软件包的顺序。好吧,顺序并不那么重要,因为包管理器会解决依赖关系...我想创建一个脚本,一旦运行,就会在其他 PC 上安装所有需要的软件。所有这些 PC 都是 Ubuntu 默认安装。很明显,软件包列表不能包括通过默认安装安装的所有软件包 :)
此外,如果可能的话,该列表不应包含通过synaptic
或安装的软件dpkg
。
答案1
您可以使用命令在旧机器上保存已安装软件包的列表dpkg --get-selections > ~/packages
,然后使用在新机器上恢复它sudo dpkg --set-selections < ~/packages && apt-get dselect-upgrade
。
您不必担心默认安装已经包含大量内容,apt-get 将为您处理一切。
您最终会得到几个名为 的文本文件,packages
其中列出了每台机器上需要安装的软件包。如果您愿意,可以将所有这些文件加在一起,然后使用 删除重复项uniq
,这意味着您将有一组要安装的软件包,而不是每台机器一组。
答案2
aptitude
实际上,可以做你想做的事情,甚至更多。
aptitude search '?installed ?not(?automatic)'
或者更短:
aptitude search '~i!~M'
将列出所有手动安装的软件包。不会列出任何依赖软件包(即自动安装的 mysql-data 或 *-common)。
如果您只想要包名称,请使用-F '%p'
参数。
您可以查看搜索模式参考,几乎没有它不能搜索到的标准。