升级 Debian trixie 差点把系统搞挂了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
darrh00
V2EX    Linux

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

  •  
  •   darrh00 61 天前 4753 次点击
    这是一个创建于 61 天前的主题,其中的信息可能已经有所发展或是发生改变。

    提示 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 居然莫名其妙又可以升级的,真奇怪,不知道哪里出的问题。

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

    Debian 系统

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

    还有 @aresyang #1 提到 usrmerge , 我的系统本来就是 Debian bookworm, 应该已经早已经转换了,/几个主要的目录都是链接。
    cnt2ex
        10
    cnt2ex  
       61 天前
    刚刚升级完,没有遇到任何问题。
    mikewang
        11
    mikewang  
       61 天前   3
    #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
        12
    idssc  
       61 天前 via Android
    已经用了半个月
    w568w
        13
    w568w  
       61 天前
    不能 usrmerge 多半是因为自己手动装了非官方源的软件,覆盖了一些 usr/lib64/ 下的目录
    msg7086
        14
    msg7086  
       61 天前
    谁出的馊主意删/lib64 的(笑
    moefishtang
        15
    moefishtang  
       61 天前
    @zed1018 没看,我直接回滚快照了
    开机进到 BIOS 里了,应该是 grub 引导出了问题
    moefishtang
        16
    moefishtang  
       61 天前
    @mikewang 确实,那台机器都快 6 个月没关机了,而且还配置了自动更新,没崩过
    不升级确实稳如老狗
    darrh00
        17
    darrh00  
    OP
       61 天前
    @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
        18
    BZGOGO  
       61 天前
    13?
    debian12 有些脚本都跑不起来,一直在用 debian11
    HarveyLiu
        19
    HarveyLiu  
       61 天前
    amd cpu 不管家用系列,还是服务器系列,都提升 13%
    Cu635
        20
    Cu635  
       61 天前
    原因还是在这里:“/lib64 is a symbolic link and not pointing at usr/lib64 exactly.”
    这个是 op 你自己配置过么? debian 12 里面应该是默认的了,作为符号链接指向 usr/lib64 这种。
    jocover
        21
    jocover  
       61 天前
    我 debian 升级后 php 变 8.4 了,要自己开启 a2enmod php8.4
    DefoliationM
        22
    DefoliationM  
       61 天前
    一直 testing ,随便升
    ranaanna
        23
    ranaanna  
       61 天前
    @jocover 我的 apache 用的是 mpm-event ,所以是 a2enconf php8.4-fpm 。另外我有用 vnc ,升级后 kde plasma 6 默认用 wayland ,因此导致黑屏,切换回 x11 恢复
    cat55
        24
    cat55  
       61 天前
    升 pve9 我都用备用机演练了好几遍,现在主力机都还没升,等多两个小版本再升
    SayHelloHi
        25
    SayHelloHi  
       61 天前
    @hefish

    多谢老铁回复
    Home Lab 已成功更新
    darrh00
        26
    darrh00  
    OP
       61 天前
    @msg7086 #14 病急乱投医...

    @Cu635 #20 细想应该是自己惹的锅,没有安装过非官方源的软件,应该也不是 systemd 的锅。想起来有一回手欠执行了类似的 mv * . / 脑抽操作,导致根目录混乱,系统没重装也是通过类似/usr/lib64/ld-linux-x86-64.so.2 + 命令恢复的,所以可能当时建立了错的链接埋的祸根
    freaks
        27
    freaks  
       60 天前 via iPhone
    自己环境随便升,生产可不敢这样升
    Radiation
        28
    Radiation  
       60 天前
    @moefishtang #15 我 pve 的 debian 从 12 升到 13 时也是这问题,直接进 bios ,最后直接重装了。
    laminux29
        29
    laminux29  
       60 天前
    生产服务器,应该使用上一个大版本的最后一个小版本。另外如果系统长期稳定运行,除非遇到致命 Bug 或安全漏洞,否则不应该冒进升级。

    自己玩的话,才会选择最新版本,因为吃螃蟹可能会翻车。
    cnbatch
        30
    cnbatch  
       59 天前
    @HarveyLiu 好奇问问,Debian 运行在虚拟机内,CPU 是 AMD ,那么也会有性能提升吗?
    HarveyLiu
        31
    HarveyLiu  
       59 天前
    @cnbatch #30 直通 host 就是提升 13%
    bthulu
        32
    bthulu  
       59 天前
    不升级, 我那 18 年的 windows server 也稳如老狗, 至今连一件事故都没出现过
    Cu635
        33
    Cu635  
       59 天前
    @darrh00 #26
    九成就是了。

    这种情况,不如趁着这次“升级”就干脆重装,配置文件备份一下,apt 安装的包列表有备份恢复的办法: https://unix.stackexchange.com/questions/190853/backup-and-restore-list-of-installed-packages-and-apt-sources (这个是可以用的当作保底,不过还是要注意一下回答时间,现在的新版本 debian 可能有更好的方法)。

    这样得到一个保证没有问题的系统。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3102 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 11:11 PVG 19:11 LAX 04:11 JFK 07:11
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86