hornetbzz Asked: 2012-05-17 04:28:43 +0800 CST2012-05-17 04:28:43 +0800 CST 2012-05-17 04:28:43 +0800 CST 生成自动重新安装文件 772 运行 Debian Lenny 发行版: 我仍然想知道如何“轻松”地安装完整的发行版设置,但目前,我希望能够轻松快速地运行重新安装,所以我在 rsync 备份 shell 中添加了这样一行: # Store the list of installed packages dpkg --get-selections > $PACKAGES 是否有更好的方法使用dpkg或其他工具以便在出现故障时能够从现有系统生成自动重新安装文件? debian dpkg 2 个回答 Voted Best Answer stew 2012-05-17T09:31:47+08:002012-05-17T09:31:47+08:00 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包。 Jeff Ferland 2012-05-17T09:18:25+08:002012-05-17T09:18:25+08:00 这对我来说似乎是简单的方法。 更复杂和复杂的方法是使用 Puppet 或 Chef 等工具定义所有内容。就此而言,我尝试将我的文件归为以下三类之一: 软件 安装包拥有的任何东西 如果我在生产中自定义安装某些东西,它应该通过自定义包 配置 这些可能会覆盖包定义的配置。 数据 通过 Puppet 管理和备份配置。软件包来自在线镜像和安装介质。数据是“其他一切”,理想情况下限制在它可以显示的目录中。这使得备份更简单、更小、更快,并允许轻松迁移到其他机器或出于任何原因重新安装系统。
apt 现在跟踪哪些软件包是手动安装的,哪些是自动安装的。手动安装的软件包是您明确要求安装的软件包。当您运行时
apt-get install foo
, foo 被标记为“手动安装”。当为了满足 foo 的依赖,它也必须安装 bar 时,则 bar 被标记为“自动安装”。这很有用,以便以后当您 时apt-get remove foo
,系统可以知道您也不再需要 bar 了。您的方法,使用
dpkg --get-selections
将丢失此信息。通过获取仅手动安装的包的列表可以获得更好的包列表:~i
意思是“已安装的包”。!~M
表示“未自动安装”。-F %p
将输出格式化为仅包名称。当您安装软件包时,它们通常会提示您提供更多配置选项。这存储在“debconf”数据库中。您可能还想备份此数据库。这个数据库可以用它来备份和恢复,
debconf-get-selections
这debconf-set-selections
将需要这个debconf-utils
包。这对我来说似乎是简单的方法。
更复杂和复杂的方法是使用 Puppet 或 Chef 等工具定义所有内容。就此而言,我尝试将我的文件归为以下三类之一:
通过 Puppet 管理和备份配置。软件包来自在线镜像和安装介质。数据是“其他一切”,理想情况下限制在它可以显示的目录中。这使得备份更简单、更小、更快,并允许轻松迁移到其他机器或出于任何原因重新安装系统。