鉴于最近archlinux系统根目录结构的改变,导致大量用户出现系统无法更新,更新后系统崩溃等等问题。为了便于网友搜索必要信息,在此另开一帖进行消息的汇总。
首先,当运行pacman -Syu出现:
error: failed to commit transaction (conflicting files)
glibc: /lib exists in filesystem
Errors occurred, no packages were upgraded.
时绝对不能强制更新(--force),否则系统必崩溃!!(不过我相信看到此信息的大部分人已经运行了--force。。。)
产生问题的原因我在另一帖:http://tieba.baidu.com/p/1711262490
中大致进行了描述,此帖着重介绍正确的升级方法即可能遇到的问题。
正确的命令是(注意是两步):
pacman -Syu --ignore glibc
pacman -Su
如果依旧出现无法更新,并提示/lib已经存在,请运行以下两条命令:
pacman -Qo /lib/*
grep '^lib/' /var/lib/pacman/local/*/files
前者是查找/lib文件夹下文件的软件包归属,后者是在所有已安装的软件包中寻找依赖/lib的软件包。正常情况下pacman -Syu --ignore glibc运行后以上两条命令的结果应该只是和glibc相关。但是,由于每个人使用情况的不同,往往会有一些文件或者软件包残留在/lib导致更新无法进行。此时需要手动将/lib下不属于glibc的软件包手动移动到别的备份目录,或者将依赖/lib的软件包暂时删除,之后就可以顺利运行
pacman -Su
来升级系统。
首先,当运行pacman -Syu出现:
error: failed to commit transaction (conflicting files)
glibc: /lib exists in filesystem
Errors occurred, no packages were upgraded.
时绝对不能强制更新(--force),否则系统必崩溃!!(不过我相信看到此信息的大部分人已经运行了--force。。。)
产生问题的原因我在另一帖:http://tieba.baidu.com/p/1711262490
中大致进行了描述,此帖着重介绍正确的升级方法即可能遇到的问题。
正确的命令是(注意是两步):
pacman -Syu --ignore glibc
pacman -Su
如果依旧出现无法更新,并提示/lib已经存在,请运行以下两条命令:
pacman -Qo /lib/*
grep '^lib/' /var/lib/pacman/local/*/files
前者是查找/lib文件夹下文件的软件包归属,后者是在所有已安装的软件包中寻找依赖/lib的软件包。正常情况下pacman -Syu --ignore glibc运行后以上两条命令的结果应该只是和glibc相关。但是,由于每个人使用情况的不同,往往会有一些文件或者软件包残留在/lib导致更新无法进行。此时需要手动将/lib下不属于glibc的软件包手动移动到别的备份目录,或者将依赖/lib的软件包暂时删除,之后就可以顺利运行
pacman -Su
来升级系统。