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


27

我在机器上安装了所需的应用程序,我想将其安装在新的Ubuntu机器上。

是否有一个脚本将列出所有已安装的应用程序,以便我可以在各个框之间进行区分并添加缺少的项?

预先感谢克里斯

Answers:


18

除了pjz提到的dpkg技巧外,您可能还需要查看etckeeper教程)-一个将/ etc / *置于版本控制下的应用程序,可以更轻松地查找已完成的任何更改并将它们复制到其他服务器。

此外,对于比pjz方法生成的列表短的列表,可以使用

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

这将为您提供一个软件包列表,这些软件包将安装您需要作为依赖项的所有其他软件包。如果您确实想浏览列表,则可能会很有用。(dpkg --get-selections将产生一个长期列表)。另外,该列表足够简短,您可以添加换行符并用'#'注释掉条目。然后,在安装额外的软件包时,您可以执行

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

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


etckeeper看起来真的很有趣(+1)。
jkp

17
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 /等,因为您知道系统上有哪些软件包。


是的,Jeff,但是对配置文件的修改又如何呢?dpkg-reconfigure选项如何?关于主机名...用户,共享,安装...参见我关于dd波纹管的回复
elcuco

2

Ubuntu论坛有一个很好的答案

  1. 在旧计算机上:$ dpkg --get-selections>已安装软件
    • 这会获取您已安装的应用程序列表
  2. 在新机器上:$ dpkg --set-selections
    • 这会将新机器设置为安装新机器上当前未安装的软件包。
    • 看看新机器上是否有未安装的软件包可能会很有趣,因此您可以在新机器上找到dpkg --get-selections>命令,然后使用diff比较两者的输出文件。
  3. 最后,在新机器上:$ dselect并将安装软件包。

论坛讨论中的一些其他链接:

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

2

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

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

然后在安装[新机器时;在转移packages_list之后]

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

1

如果您不是CLI迷(虽然确实应该如此),则可以使用Synaptic软件包管理器来保存已安装软件包的映像,并使用该文件(再次通过Synaptic)来加载新计算机。在文件/保存标记选项下,有一个复选框称为“保存完整状态”。


我认为这是Cory发现的方法
jbdavid

1

您为什么不克隆机器使用dd


1
这个。只需克隆机器并更改名称,这是迄今为止最快的方法。
pjc50


1

使用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中处理一些conffile。您只需复制那些子树并运行智能即可获得相同的效果。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.