升级 Debian trixie 差点把系统搞挂了

50 天前
 darrh00

提示 base-files 无法升级

apt-listchanges: Reading changelogs...
Extracting templates from packages: 100%                                                                                                                                                                                  O Preconfiguring packages ...                                         
(Reading database ... 117496 files and directories currently installed.)
Preparing to unpack .../base-files_13.8_amd64.deb ...


******************************************************************************
*
* The base-files package cannot be installed because
* /lib64 is a symbolic link and not pointing at usr/lib64 exactly.
*
* This is an unexpected situation. Cannot proceed with the upgrade.
*
* For more information please read https://wiki.debian.org/UsrMerge.
*
******************************************************************************


dpkg: error processing archive /var/cache/apt/archives/base-files_13.8_amd64.deb (--unpack):
 new base-files package pre-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 /var/cache/apt/archives/base-files_13.8_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

找了一下相关帖子,有人提示可以把/lib64 软链接删除,这一删任何命令都执行不了:

ls

这大热天的,实在不想把放在弱电箱里的机器拿出来接键盘接电视,于是又研究了一番,可以如此恢复:

cd /
/usr/lib64/ld-linux-x86-64.so.2 /usr/bin/ln -s usr/lib64 lib64

再次执行 apt dist-upgrade --autoremove -y 居然莫名其妙又可以升级的,真奇怪,不知道哪里出的问题。

4697 次点击
所在节点    Linux
33 条回复
aresyang
50 天前
sudo apt install usrmerge
sudo /usr/lib/usrmerge/convert-usrmerge
HenryHe613
50 天前
吓得我都不敢把 debian12.11 升级的 debian13
moefishtang
50 天前
我昨天晚上也升级挂了,升级完有几个包没给我更新.
然后我用 apt full-upgrade 强制更新,结果重启一下系统起不来了
还好我有快照,回滚了
昨晚更新了四台,就那一台出了问题
~~不是说 Debian 稳如老狗嘛~~
ONEO666
50 天前
我升级了,没问题,有可能是我主机上没东西都在 Docker 里
zed1018
50 天前
@moefishtang 起不来是不是卡 grub ,如果是的话是不是升级过程中 grub 让选分区选错了。要不还有一种,如果和你以为的起不来是 ssh 连不上也可能是网卡名字变了导致没有网。
SayHelloHi
50 天前
借楼问下老铁们

Debian 系统

如何只升级补丁包和安全更新包 不升级系统 😁
ihipop
50 天前
你原来的 /lib64 没有指向 usr/lib64 , 新建的是
hefish
50 天前
@SayHelloHi 不执行 apt dist-upgrade 即可。 只执行 apt update && apt upgrade
darrh00
50 天前
@ihipop #7 反复确认过这个软链接,会有这种可能?这是关键链接,如果是错误的,没有正确的 ld-linux-x86-64.so.2 系统根本无法运行。

还有 @aresyang #1 提到 usrmerge , 我的系统本来就是 Debian bookworm, 应该已经早已经转换了,/几个主要的目录都是链接。
cnt2ex
50 天前
刚刚升级完,没有遇到任何问题。
mikewang
50 天前
#3 @moefishtang
Debian 稳就稳在不怎么升级 ;)
升级大概就是会经历的最不稳的时候了。

---
#9 @darrh00

直接删除软连接会出大问题,因为默认的 ELF 解释器是绝对路径 /lib64/ld-linux-x86-64.so.2 ,删了就找不到了,所有基于 libc 的软件都将无法运行。

正确的修复方法是一步到位:
sudo ln -Tfs usr/lib64 /lib64

解释:-T 是将 /lib64 看作普通文件而不是目录,-f 是强制覆盖,-s 是软连接。

造成软连接不符合预期的情况可能是安装了 debian 官方源之外的包导致冲突了,或者可能是 systemd 干了坏事。

可以看一下之前是不是指向 usr/lib 或者绝对路径 /usr/lib64 了,他们都与 usr/lib64 不匹配,虽然最终目标都是同一个目录。
idssc
50 天前
已经用了半个月
w568w
50 天前
不能 usrmerge 多半是因为自己手动装了非官方源的软件,覆盖了一些 usr/lib64/ 下的目录
msg7086
50 天前
谁出的馊主意删/lib64 的(笑
moefishtang
50 天前
@zed1018 没看,我直接回滚快照了
开机进到 BIOS 里了,应该是 grub 引导出了问题
moefishtang
50 天前
@mikewang 确实,那台机器都快 6 个月没关机了,而且还配置了自动更新,没崩过
不升级确实稳如老狗
darrh00
50 天前
@mikewang #11 学习了

因为之前我的系统一直可以运行运行的,刚才终端历史没保留,已经没法确认之前到底是什么状态了,从错误信息看估计九成应该是链接成绝对路径导致的,

debian 安装的检查脚本 https://salsa.debian.org/sanvila/base-files/-/blob/master/debian/preinst?ref_type=heads

```bash
target=$(readlink "$DPKG_ROOT/$d")
if [ "$target" != "usr/$d" ]; then
if [ "$d" = lib64 ] && [ "$target" = "usr/lib/#DEB_HOST_MULTIARCH#" ]; then
# Work around https://github.com/systemd/systemd/issues/33919
echo "Fixing bad /$d symbolic link created by systemd-nspawn."
if [ -d "$DPKG_ROOT/usr/$d" ]; then
ln -sf "usr/$d" "$DPKG_ROOT/$d"
else
rm "$DPKG_ROOT/$d"
fi
else
msg="/$d is a symbolic link and not pointing at usr/$d exactly"
fi
elif [ ! -d "$DPKG_ROOT/usr/$d" ]; then
msg="/$d is a dangling symbolic link"
fi
```
BZGOGO
50 天前
13?
debian12 有些脚本都跑不起来,一直在用 debian11
HarveyLiu
50 天前
amd cpu 不管家用系列,还是服务器系列,都提升 13%
Cu635
50 天前
原因还是在这里:“/lib64 is a symbolic link and not pointing at usr/lib64 exactly.”
这个是 op 你自己配置过么? debian 12 里面应该是默认的了,作为符号链接指向 usr/lib64 这种。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1151325

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX