Ubuntu 22.04升级至24.04.1时do-release-upgrade因usrmerge问题失败
Ubuntu 22.04升级至24.04.1时do-release-upgrade因usrmerge问题失败
我之前也碰到过这种明明usrmerge显示成功,但升级脚本就是不认的棘手情况,给你几个可行的排查和解决步骤,你可以一步步试:
第一步:确认系统是否真的完成了/usr合并
do-release-upgrade的检查逻辑大概率不是看usrmerge的退出码,而是实际验证系统的目录结构。你可以先检查核心目录是否已经变成指向/usr的符号链接:
ls -l / | grep -E "(bin|sbin|lib|lib64)"
如果输出里这些目录的类型是lrwxrwxrwx(开头是l),比如lrwxrwxrwx 1 root root 7 Jul 1 10:00 bin -> usr/bin,那说明合并确实完成了;如果还是drwxr-xr-x的普通目录,那大概率是usrmerge执行过程中没真正完成合并,哪怕返回码是0。
第二步:重新触发usrmerge的合并流程
有时候usrmerge虽然返回成功,但可能因为某些文件冲突没完成链接创建。你可以尝试重新安装usrmerge包,它会自动触发合并逻辑:
sudo apt install --reinstall usrmerge
安装完成后再用第一步的命令检查目录结构,确认是否变成符号链接。
第三步:手动创建缺失的符号链接(谨慎操作)
如果重新安装后还是不行,你可以手动处理(一定要确保这些目录里的文件已经被合并到/usr对应的目录里,否则会丢失文件!):
比如处理/bin目录:
# 先备份原目录(如果里面还有文件) sudo mv /bin /bin.bak # 创建指向usr/bin的符号链接 sudo ln -s usr/bin /bin
用同样的方法处理/sbin、/lib、/lib64(注意不同架构可能目录名不同,比如32位系统可能没有lib64)。
第四步:清理升级缓存后重试
有时候升级脚本会读取旧的缓存信息导致误判,清理缓存后再尝试升级:
sudo apt clean sudo apt update sudo LANG=C do-release-upgrade
第五步:检查usrmerge包的安装状态
确认usrmerge已经正确安装:
dpkg -l usrmerge
输出里的状态列应该是ii(表示已安装),如果不是,先执行sudo apt install usrmerge安装它。
备注:内容来源于stack exchange,提问作者floogy
相关产品推荐
相关产品推荐

