使用 `dpkg --set-selections` 将包配置复制到新服务器

使用 `dpkg --set-selections` 将包配置复制到新服务器

我正在尝试创建一个测试服务器,其中包含与实时服务器相同的所有软件包,并按照说明进行操作这里(以及其他地方的类似说明)

但是当我运行apt-get -u dselect-upgrade命令时我得到了:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages have unmet dependencies:
 cron : Depends: adduser but it is not going to be installed
 upstart : Depends: initscripts
           Depends: mountall
           Depends: ifupdown (>= 0.6.10ubuntu5)
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
E: Internal error, problem resolver broke stuff

两台服务器都在 Rackspace 云中,但使用不同的帐户,因此我无法使用 Rackspace 的克隆功能。

答案1

我设法通过保留系统上已安装的所有软件包来解决该问题。

我使用了以下配方:

dpkg --get-selections | grep "\binstall$" | sed s/install/hold/ > toHold.txt
dpkg --set-selections < selections.txt
dpkg --set-selections < toHold.txt
apt-get dselect-upgrade

此时,只有一个包 libxml2-dev:i386 仍然导致问题,因此我使用以下命令手动将其删除:

echo libxml2-dev:i386 hold | dpkg --set-selections
apt-get install -f

相关内容