Ubuntu,如何设置一个像现有的新机器

我有一个机器设置与我需要的应用程序,我想安装在一个新的Ubuntu框相同。

是否有一个脚本,将列出所有安装的应用程序,以便我可以区分不同的方块,因此添加缺less的项目?

在此先感谢,克里斯

和pjz提到的dpkg技巧一样,你也可以看看etckeeper ( 教程 ) – 一个将你的/ etc / *放在版本控制下的应用程序,使你更容易find你所做的任何更改并将它们复制到其他服务器。

另外,对于比pjz方法产生的列表更短的列表,您可以使用

$ deborphan -a --no-show-section > /tmp/mypackagelist 

这会给你一个软件包列表,它将安装你需要的所有其他软件包作为依赖关系。 如果你真的想查看列表,可以很有用。 (dpkg -get-selections会产生一个loooong列表)。 此外,列表还足够短,您可以添加换行符并用“#”注释条目。 然后当安装额外的软件包,你可以做

 $ grep -v '#' /tmp/mypackagelist | xargs apt-get install -y 

这样,如果有一些软件包只想在某些机器上安装,则不必从软件包列表中完全删除它们。

 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 /等,因为你知道系统上有什么软件包。

Ubuntu论坛有一个很好的答案

  1. 在旧的机器上:$ dpkg –get-selections> installed-software
    • 这会得到您安装的应用程序的列表
  2. 在新机器上:$ dpkg –set-selections
    • 这将设置新机器来安装当前未安装在新机器上的包。
    • 看看新机器是否有一些未安装在旧机器上的软件包可能会很有趣,因此您可以在新机器上finddpkg –get-selections>命令,然后使用diff比较两者的输出文件。
  3. 最后,在新机器上:$ dselect和软件包将被安装。

来自论坛讨论的一些额外的链接:

  1. 不要忘记你的gpg密钥 (来自同一个线程)
  2. 如何安装所有需要的软件包并卸载所有不需要的软件包

更好的dpkg命令可能是[原始机器]

 dpkg --get-selections | grep -v deinstall > packages_list 

那么在安装[新机; 在传递了packages_list之后]

 sudo dpkg --set-selections < packages_list sudo apt-get -u dselect-upgrade 

如果您不是CLI粉丝(尽pipe您确实应该是),则可以使用Synaptic包pipe理器来保存已安装软件包的映像,然后使用该文件(通过Synaptic再次)加载新机器。 在文件/保存标记选项下,有一个名为“保存完整状态”的checkbox。

你为什么不使用dd克隆机器呢?

有一个名为ReMasterSys的工具可以为你做。 见http://geekconnection.org/remastersys/

我希望这将是有用的。

使用FSArchiver复制机器是完全可以接受的。 否则,这里有一对有用的命令,前半部分也可以添加到你的备份cron中:

 debconf-get-selections debconf-set-selections 

 aptitude-create-state-bundle aptitude-run-state-bundle --unpack 

 dpkg --get-selections dpkg --clear-selections; dpkg --set-selections 

你应该复制的位置是/ etc和/ var。 上面的命令直接在/ var中操作几个文件,并通过debconf间接地在/ etc中进行一些调用。 通过复制这些子树和运行aptitude,您将获得相同的效果。

我猜Docker会是现在这样做的方式 – 在Dockerfile中定义需求 – 然后您可以在任何Docker主机上运行它。