提示 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 居然莫名其妙又可以升级的,真奇怪,不知道哪里出的问题。
1 aresyang 61 天前 sudo apt install usrmerge sudo /usr/lib/usrmerge/convert-usrmerge |
![]() | 2 HenryHe613 61 天前 吓得我都不敢把 debian12.11 升级的 debian13 |
![]() | 3 moefishtang 61 天前 我昨天晚上也升级挂了,升级完有几个包没给我更新. 然后我用 apt full-upgrade 强制更新,结果重启一下系统起不来了 还好我有快照,回滚了 昨晚更新了四台,就那一台出了问题 ~~不是说 Debian 稳如老狗嘛~~ |
![]() | 4 ONEO666 61 天前 via iPhone 我升级了,没问题,有可能是我主机上没东西都在 Docker 里 |
5 zed1018 61 天前 @moefishtang 起不来是不是卡 grub ,如果是的话是不是升级过程中 grub 让选分区选错了。要不还有一种,如果和你以为的起不来是 ssh 连不上也可能是网卡名字变了导致没有网。 |
![]() | 6 SayHelloHi 61 天前 借楼问下老铁们 Debian 系统 如何只升级补丁包和安全更新包 不升级系统 |
![]() | 7 ihipop 61 天前 你原来的 /lib64 没有指向 usr/lib64 , 新建的是 |
8 hefish 61 天前 @SayHelloHi 不执行 apt dist-upgrade 即可。 只执行 apt update && apt upgrade |
![]() | 9 darrh00 OP |
![]() | 10 cnt2ex 61 天前 刚刚升级完,没有遇到任何问题。 |
![]() | 11 mikewang 61 天前 ![]() #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 不匹配,虽然最终目标都是同一个目录。 |
12 idssc 61 天前 via Android 已经用了半个月 |
13 w568w 61 天前 不能 usrmerge 多半是因为自己手动装了非官方源的软件,覆盖了一些 usr/lib64/ 下的目录 |
![]() | 14 msg7086 61 天前 谁出的馊主意删/lib64 的(笑 |
![]() | 15 moefishtang 61 天前 @zed1018 没看,我直接回滚快照了 开机进到 BIOS 里了,应该是 grub 引导出了问题 |
![]() | 16 moefishtang 61 天前 @mikewang 确实,那台机器都快 6 个月没关机了,而且还配置了自动更新,没崩过 不升级确实稳如老狗 |
![]() | 17 darrh00 OP @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 ``` |
![]() | 18 BZGOGO 61 天前 13? debian12 有些脚本都跑不起来,一直在用 debian11 |
![]() | 19 HarveyLiu 61 天前 amd cpu 不管家用系列,还是服务器系列,都提升 13% |
![]() | 20 Cu635 61 天前 原因还是在这里:“/lib64 is a symbolic link and not pointing at usr/lib64 exactly.” 这个是 op 你自己配置过么? debian 12 里面应该是默认的了,作为符号链接指向 usr/lib64 这种。 |
21 jocover 61 天前 我 debian 升级后 php 变 8.4 了,要自己开启 a2enmod php8.4 |
22 DefoliationM 61 天前 一直 testing ,随便升 |
23 ranaanna 61 天前 @jocover 我的 apache 用的是 mpm-event ,所以是 a2enconf php8.4-fpm 。另外我有用 vnc ,升级后 kde plasma 6 默认用 wayland ,因此导致黑屏,切换回 x11 恢复 |
24 cat55 61 天前 升 pve9 我都用备用机演练了好几遍,现在主力机都还没升,等多两个小版本再升 |
![]() | 25 SayHelloHi 61 天前 |
![]() | 26 darrh00 OP |
![]() | 27 freaks 60 天前 via iPhone 自己环境随便升,生产可不敢这样升 |
![]() | 28 Radiation 60 天前 @moefishtang #15 我 pve 的 debian 从 12 升到 13 时也是这问题,直接进 bios ,最后直接重装了。 |
29 laminux29 60 天前 生产服务器,应该使用上一个大版本的最后一个小版本。另外如果系统长期稳定运行,除非遇到致命 Bug 或安全漏洞,否则不应该冒进升级。 自己玩的话,才会选择最新版本,因为吃螃蟹可能会翻车。 |
32 bthulu 59 天前 不升级, 我那 18 年的 windows server 也稳如老狗, 至今连一件事故都没出现过 |
![]() | 33 Cu635 59 天前 @darrh00 #26 九成就是了。 这种情况,不如趁着这次“升级”就干脆重装,配置文件备份一下,apt 安装的包列表有备份恢复的办法: https://unix.stackexchange.com/questions/190853/backup-and-restore-list-of-installed-packages-and-apt-sources (这个是可以用的当作保底,不过还是要注意一下回答时间,现在的新版本 debian 可能有更好的方法)。 这样得到一个保证没有问题的系统。 |