我有一台安装了我需要的应用程序的机器,我想在新的 Ubuntu 机器上安装相同的应用程序。
是否有一个脚本可以列出所有已安装的应用程序,以便我可以区分各个框并添加缺失的项目?
提前致谢,克里斯
答案1
除了 pjz 提到的 dpkg 技巧外,你可能还想看看etckeeper(教程) - 一款将您的 /etc/* 置于版本控制之下的应用程序,让您更容易地找到您所做的任何更改并将其复制到其他服务器。
另外,对于比 pjz 方法生成的列表更短的列表,您可以使用
$ deborphan -a --no-show-section > /tmp/mypackagelist
这将为您提供一个软件包列表,这些软件包将安装您需要作为依赖项的所有其他软件包。如果您确实想查看列表,这将很有用。(dpkg --get-selections 将生成一个很长列表)。此外,列表足够短,您可以添加换行符并使用“#”注释掉条目。然后在安装额外软件包时,您可以执行
$ grep -v '#' /tmp/mypackagelist | xargs apt-get install -y
这样,如果您只想在某些机器上安装某些软件包,您不必将它们从软件包列表中完全删除。
答案2
dpkg --get-selections >/tmp/mypackagelist
应该可以解决问题。然后,确保新机器上的 /etc/apt/sources.list 与旧机器上的条目集相同,将 mypackagelist 复制到新机器并执行以下操作:
cat mypackagelist | xargs apt-get -y install
你就可以走了。
请注意,dpkg --get-selections 行也是偶尔放入 /etc/dir 的好信息 - 这意味着您不必费心备份 /bin/ 和 /usr/bin/ 等,因为您知道系统上有哪些软件包。
答案3
Ubuntu 论坛有一个好答案
- 在旧机器上:$ dpkg --get-selections > mounted-software
- 这将获取您已安装的应用程序列表
- 在新机器上:$ dpkg --set-selections
- 这将设置新机器安装新机器上当前尚未安装的软件包。
- 看看新机器是否有一些旧机器上未安装的软件包可能会很有趣,因此您可以在新机器上找到 dpkg --get-selections> 命令,然后使用 diff 比较两者的输出文件。
- 最后,在新机器上:$ dselect 然后软件包就会被安装。
论坛讨论中的一些附加链接:
答案4
如果您不是 CLI 的粉丝(尽管您确实应该是),您可以使用 Synaptic 包管理器保存已安装包的映像,并使用该文件(再次通过 Synaptic)加载新机器。在文件/保存标记选项下,有一个名为“保存完整状态”的复选框。