我刚刚买了一个 VPS 供个人使用,想将其升级到 Debian 测试版 (squeeze) 以便获得更新的软件包。实际版本是 Debian 稳定版 (lenny)。
我所做的很简单:
- 编辑
/etc/apt/sources.list
并替换lenny
为squeeze
- 跑步
apt-get update
- 跑步
apt-get dist-upgrade
据我所知,这是升级机器的标准方法。但是,我收到以下错误:
Selecting previously deselected package insserv.
dpkg: considering deconfiguration of sysv-rc, which would be broken by installation of insserv ...
dpkg: yes, will deconfigure sysv-rc (broken by insserv).
(Reading database ... 37095 files and directories currently installed.)
Unpacking insserv (from .../insserv_1.12.0-14_i386.deb) ...
De-configuring sysv-rc ...
Setting up insserv (1.12.0-14) ...
(Reading database ... 37124 files and directories currently installed.)
Preparing to replace sysv-rc 2.86.ds1-61 (using .../sysv-rc_2.87dsf-8_all.deb) ...
touch: setting times of `/etc/init.d/.legacy-bootordering': Bad address
dpkg: error processing /var/cache/apt/archives/sysv-rc_2.87dsf-8_all.deb (--unpack):
subprocess new pre-installation script returned error exit status 1
Errors were encountered while processing:
/var/cache/apt/archives/sysv-rc_2.87dsf-8_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
尝试安装 sysv-rc 本身时,我收到以下错误。有问题的文件 ( /etc/init.d/.legacy-bootordering
) 存在,但是为空。
有人知道是什么原因导致了这个错误,以及如何解决它?
答案1
问题来自 preinst 脚本(在安装软件包之前运行的软件包维护脚本)。它可能是 '/var/lib/dpkg/info/sysv-rc.preinst'
touch 无法设置 /etc/init.d/.legacy-bootordering 的修改日期。
尝试自己“触摸”任何文件。尝试删除它并重新运行。
apt 是否在 sysv-rc 之前升级了 glibc ?有很多关于该问题的错误报告,不仅在 Debian 上。
在搜索引擎上搜索“触摸错误地址”...
我相信这与内核和 libc 都有关
答案2
标准升级说明通常在步骤之前包含基本升级(upgrade
或safe-upgrade
)dist-upgrade
。您应该阅读发行说明中的升级说明。不出所料,Sqeeze 的说明似乎尚未可用,但 Lenny 的说明应该是一个好的开始:http://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.en.html