我在虚拟主机上使用 Debian Stable (squeeze),无法接触内核,它卡在了(并且会持续一段时间,正如支持人员告诉我的)
Linux 2.6.18-028stab070.3 #1 SMP Wed Jul 21 18:33:27 MSD 2010 x86_64
因此,当我尝试更新时,几个软件包会失败,FATAL: kernel too old
例如
Preparing to replace libgcc1 1:4.6.0-11 (using .../libgcc1_1%3a4.6.1-1_amd64.deb) ...
Unpacking replacement libgcc1 ...
Setting up libgcc1 (1:4.6.1-1) ...
FATAL: kernel too old
Segmentation fault
dpkg: error processing libgcc1 (--configure):
subprocess installed post-installation script returned error exit status 139
并随之而来了一些版本混乱:
The following packages have unmet dependencies:
libc-dev-bin : Depends: libc6 (> 2.13) but 2.11.2-13 is installed
libc6 : Depends: libc-bin (= 2.11.2-13) but 2.13-5 is installed
libc6-dev : Depends: libc6 (= 2.13-5) but 2.11.2-13 is installed
libquadmath0 : Depends: gcc-4.6-base (= 4.6.0-2) but 4.6.0-11 is installed
libstdc++6 : Depends: gcc-4.6-base (= 4.6.0-2) but 4.6.0-11 is installed
locales : Depends: glibc-2.13-1
我该怎么办?我想让系统保持最新状态,所以我想尽可能少地固定数据包,但我也不想手动编译任何东西。
尝试确定现状并找出错误的来源:ldconfig
段错误。-v
没有打印更多内容,所以我无法分辨实际的问题是什么。
# ldconfig
FATAL: kernel too old
答案1
这看上去就像是供应商组装起来的系统的一个怪物:
Debian 自 Etch (4.0) 以来就没有搭载 2.6.18 内核,但内核时间戳在 Etch 的 EOL 之后。此外,该内核编号系统不是 Debian,因此它显然是一个自定义内核。
libc6 版本可能是来自 Squeeze (6.0),但是gcc 显然不是。事实上,该 gcc 看上去比当前 sid 中的更新。
您在使用上面列出的其他软件包时也遇到了类似的问题。
这个系统的范围是什么?你真的需要更新内核吗?我问这个问题是因为你可能无法在不降级 gcc 和相关软件的情况下更新内核,这可能会破坏该供应商系统上的任何专有软件。重新编译是另一种选择,但你说你不想这样做……
答案2
感谢帕斯卡。 我的解决方案是从部分喘息恢复到挤压。