我有一个机器设置与我需要的应用程序,我想安装在一个新的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论坛有一个很好的答案
来自论坛讨论的一些额外的链接:
更好的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主机上运行它。