Chris Kimpton Asked: 2009-05-01 05:20:43 +0800 CST2009-05-01 05:20:43 +0800 CST 2009-05-01 05:20:43 +0800 CST Ubuntu,如何像现有机器一样设置新机器 772 我有一台机器安装了我需要的应用程序,我想在一个新的 Ubuntu 机器上安装它。 是否有一个脚本可以列出所有已安装的应用程序,以便我可以区分这些框并添加缺少的项目? 在此先感谢,克里斯 linux ubuntu 9 个回答 Voted Best Answer Hamish Downer 2009-05-01T09:23:03+08:002009-05-01T09:23:03+08:00 除了 pjz 提到的 dpkg 技巧,您可能还想查看etckeeper ( tutorial ) - 一个将您的 /etc/* 置于版本控制之下的应用程序,从而更容易找到您所做的任何更改并将它们复制到其他服务器。 此外,对于比 pjz 方法生成的列表更短的列表,您可以使用 $ deborphan -a --no-show-section > /tmp/mypackagelist 这将为您提供一个软件包列表,这些软件包将安装您需要的所有其他软件包作为依赖项。如果您真的想浏览列表,这可能很有用。(dpkg --get-selections 将产生一个loooong列表)。此外,该列表足够短,您可以添加换行符并用“#”注释掉条目。然后在安装额外的包时你可以做 $ grep -v '#' /tmp/mypackagelist | xargs apt-get install -y 这样,如果您只想在某些机器上安装某些软件包,则不必将它们从软件包列表中完全删除。 pjz 2009-05-01T05:26:52+08:002009-05-01T05:26:52+08:00 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/ 等,因为您知道系统上有哪些软件包。 pcapademic 2009-05-24T13:44:18+08:002009-05-24T13:44:18+08:00 Ubuntu 论坛有一个很好的答案 在旧机器上: $ dpkg --get-selections > installed-software 这将获取您已安装应用程序的列表 在新机器上: $ dpkg --set-selections 这会将新机器设置为安装当前未安装在新机器上的软件包。 看看新机器是否有一些未安装在旧机器上的软件包可能会很有趣,因此您可以在新机器上找到 dpkg --get-selections> 命令,然后使用 diff 比较两者的输出文件。 最后,在新机器上: $ dselect 和软件包将被安装。 论坛讨论中的一些附加链接: 不要忘记您的 gpg 密钥(来自同一个线程) 如何安装所有需要的包并卸载所有不需要的包 Benji 2015-06-06T06:04:02+08:002015-06-06T06:04:02+08:00 更好的 dpkg 命令可能是【原机】 dpkg --get-selections | grep -v deinstall > packages_list 然后在安装[新机器; 转移 packages_list 后] sudo dpkg --set-selections < packages_list sudo apt-get -u dselect-upgrade Nerdfest 2009-05-29T04:09:40+08:002009-05-29T04:09:40+08:00 如果您不是 CLI 粉丝(尽管您确实应该是),您可以使用 Synaptic 包管理器来保存已安装包的映像,并使用该文件(再次通过 Synaptic)加载新机器。在文件/保存标记选项下,有一个名为“保存完整状态”的复选框。 elcuco 2009-05-29T04:32:48+08:002009-05-29T04:32:48+08:00 你为什么不只是克隆机器使用dd? user46844 2010-06-26T10:49:26+08:002010-06-26T10:49:26+08:00 有一个名为 ReMasterSys 的工具可以为您完成。见http://geekconnection.org/remastersys/ 我希望这会有用。 Tobu 2010-06-26T14:41:53+08:002010-06-26T14:41:53+08:00 使用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。通过复制这些子树并运行 aptitude,您将获得相同的效果。 Chris Kimpton 2016-03-14T03:12:23+08:002016-03-14T03:12:23+08:00 我猜Docker将是现在执行此操作的方法 - 在 Dockerfile 中定义要求 - 然后您可以在任何 Docker 主机上运行它。
除了 pjz 提到的 dpkg 技巧,您可能还想查看etckeeper ( tutorial ) - 一个将您的 /etc/* 置于版本控制之下的应用程序,从而更容易找到您所做的任何更改并将它们复制到其他服务器。
此外,对于比 pjz 方法生成的列表更短的列表,您可以使用
这将为您提供一个软件包列表,这些软件包将安装您需要的所有其他软件包作为依赖项。如果您真的想浏览列表,这可能很有用。(dpkg --get-selections 将产生一个loooong列表)。此外,该列表足够短,您可以添加换行符并用“#”注释掉条目。然后在安装额外的包时你可以做
这样,如果您只想在某些机器上安装某些软件包,则不必将它们从软件包列表中完全删除。
应该做的伎俩。然后,确保新机器上的 /etc/apt/sources.list 具有与旧机器上相同的条目集后,将 mypackagelist 复制到新机器并执行以下操作:
你应该很高兴。
请注意,dpkg --get-selections 行也是偶尔放入 /etc/dir 的好信息 - 这意味着您不必费心备份 /bin/ 和 /usr/bin/ 等,因为您知道系统上有哪些软件包。
Ubuntu 论坛有一个很好的答案
论坛讨论中的一些附加链接:
更好的 dpkg 命令可能是【原机】
然后在安装[新机器; 转移 packages_list 后]
如果您不是 CLI 粉丝(尽管您确实应该是),您可以使用 Synaptic 包管理器来保存已安装包的映像,并使用该文件(再次通过 Synaptic)加载新机器。在文件/保存标记选项下,有一个名为“保存完整状态”的复选框。
你为什么不只是克隆机器使用
dd
?有一个名为 ReMasterSys 的工具可以为您完成。见http://geekconnection.org/remastersys/
我希望这会有用。
使用FSArchiver复制机器是完全可以接受的。否则,这里有一些有用的命令对,您也可以将其中的前半部分添加到备份 cron 中:
~
~
您应该复制的位置是 /etc 和 /var。上面的命令直接操作 /var 中的一些文件,通过 debconf 间接操作 /etc 中的一些 conffile。通过复制这些子树并运行 aptitude,您将获得相同的效果。
我猜Docker将是现在执行此操作的方法 - 在 Dockerfile 中定义要求 - 然后您可以在任何 Docker 主机上运行它。