运行 Debian Lenny 发行版:
我仍然想知道如何“轻松地”制作完整的发行版设置,但就目前而言,我希望能够轻松快速地重新安装,因此我在 rsync 备份 shell 中添加了这样一行:
# Store the list of installed packages
dpkg --get-selections > $PACKAGES
有没有更好的方法使用软件包或者其他工具以便能够在发生故障时从现有系统生成自动重新安装文件?
答案1
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
将输出格式化为仅包含软件包名称。
当您安装软件包时,它们通常会提示您输入更多配置选项。这些选项存储在“debconf”数据库中。您可能还想备份此数据库。可以使用 和 来备份和恢复此数据库,debconf-get-selections
这debconf-set-selections
将需要debconf-utils
软件包。
答案2
对我来说这似乎是一条简单的路。
更复杂和更复杂的方法是使用 Puppet 或 Chef 之类的工具来定义所有内容。为此,我尝试将我的文件分为以下三类之一:
- 软件
- 安装包所拥有的任何内容
- 如果我在生产中自定义安装某些东西,应该通过自定义包进行
- 配置
- 这些可能会覆盖包定义的配置。
- 数据
配置通过 Puppet 进行管理和备份。软件包来自在线镜像和安装媒体。数据是“其他一切”,理想情况下限制在它可以显示的目录中。这使得备份更简单、更小、更快,并且可以轻松迁移到其他机器或出于任何原因重新安装系统。