生成一个自动重新安装文件

运行Debian Lenny发行版:

我仍然想知道如何“轻松地”完成一个完整的发行版设置,但是现在我想能够轻松快速地运行重新安装,所以我在rsync备份shell中添加了这样一行代码:

# Store the list of installed packages dpkg --get-selections > $PACKAGES 

有没有更好的方法使用dpkg或其他工具,以便能够从现有的系统中生成一个自动重新安装文件在失败的情况下?

现在,apt会跟踪哪些软件包是手动安装的,哪些是自动安装的。 手动安装的软件包是您明确要求安装的软件包。 当你运行apt-get install foo ,foo被标记为“手动安装”。 当为了满足foo的依赖关系,还需要安装bar,然后bar被标记为“自动安装”。 这是很有用的,以后,当你apt-get remove foo ,系统可以知道你不再需要bar了。

你的方法,使用dpkg --get-selections将会失去这个信息。 通过获取手动安装的打包列表可以获得更好的软件包列表:

 aptitude search '~i!~M' -F %p 

~i意思是“已安装的软件包”。 !~M表示“不自动安装”。 -F %p将输出格式化为仅包名称。

安装软件包时,通常会提示您input更多configuration选项。 这存储在'debconf'数据库中。 你可能也想备份这个数据库。 这个数据库可以使用debconf-get-selectionsdebconf-set-selections进行备份和恢复,这需要debconf-utils包。

这对我来说很简单。

更复杂和更复杂的方法是使用像Puppet或Chef这样的工具来定义所有的东西。 就这一点而言,我尝试将我的文件分为三类:

  • 软件
    • 任何由安装包拥有的东西
    • 如果我在生产中定制安装某些东西,应该通过一个自定义的包
  • configuration
    • 这些可能会覆盖程序包定义的configuration。
  • 数据

configuration通过Puppet进行pipe理和备份。 软件包来自在线镜像和安装媒体。 数据是“所有其他事物”,理想情况下限制在其可以显示的目录中。这使得备份更简单,更小,更快,并且允许轻松迁移到其他机器或出于任何原因重新安装系统。