在遇到一些 pacman 问题后,我无法在 grub 之后启动 arch linux 系统。我只看到黑屏,无法输入任何内容。我认为这是因为意外删除了 base-devel 包,并且可能存在我之前不知道的 pacman 问题。
发生了什么:
我试图安装 PHP,用于我为面试过程做的一个家庭作业项目。我使用了
sudo pacman -S php
几个不同版本的变体,但总是收到错误。我忘了是哪个错误,但我相信我收到的消息是它无法识别包。这是我几个月来第一次尝试安装的包,所以我不确定我之前是否遇到过 pacman 问题,还是现在才出现。不管怎样,我决定测试一下这是 pacman 问题还是 php 包本身的问题。所以,我天真地想,“我会尝试下载一些 PHP 以外的随机包,看看它是否有效,然后如果确实下载了就删除它,因为我反正不在乎它。”我很愚蠢,在谷歌上搜索了类似“很酷的 arch 包”的内容,看到有人提到了这一点基础开发很酷。所以我决定安装它。它成功了!或者我是这么认为的?要么它成功了,要么它已经在我的系统上了,所以我认为它成功了,因为我没有太仔细地阅读输出。因为我认为我不需要我大概作为 pacman 测试下载的包,所以我运行它
sudo pacman -R base-devel
以避免占用那个空间,结果一切都变糟了。我猜这是一个基础包,我毁了我的计算机。之后,pacman 真的完全停止了工作。我收到一个与未找到 glibc 和 lib32-glibc 有关的错误,pacman 无法运行。我尝试了其他方法,比如使用热键打开终端和打开 nemo,但都没有用。正是在这时我意识到,我搞砸了。现在,当我启动计算机时,在 grub 之后,我只会看到一个黑屏,无法输入任何东西。
我已尝试过:
1.我目前正在通过实时 USB 启动,试图找到一种方法来让一切正常工作。我正在将我的分区安装到 /mnt 并尝试修复 pacman。我已查阅此链接寻求帮助:https://wiki.archlinux.org/index.php/Pacman#Pacman_crashes_during_an_upgrade 并尝试了以下方法:
mount /dev/sdaX /mnt
mount -t proc proc /mnt/proc; mount --rbind /sys /mnt/sys; mount --rbind /dev /mnt/dev
pacman --sysroot /mnt -Syu
当我完成最后一步时,我得到了
错误:无法从以下位置检索文件“community.db”:无法解析主机:
我插入了以太网电缆,并且确实有互联网,因为我已成功使用 ping。在我挂载的位置,我的 /etc 是空的,因此将 pacman 从实时 USB 复制到我挂载的分区以尝试使用它。它仍然不起作用,所以我想也许我的镜像有问题。我点击了此链接:https://wiki.archlinux.org/index.php/Mirrors
在 pacman.conf 中的 Include 行上方包含美国镜像后,我尝试
pacman -Syyu
按照页面所述运行,看起来确实下载了一些东西。但是,我仍然无法检索“linux-firmware-20210315...pkg.tar.zst”和“logrotate-3.18.0...pkg.tar.zst”。我不知道我的镜像是否过期,或者是否存在其他问题。在此之后,我
pacman --sysroot /mnt -Syu
再次运行,但仍然得到
错误:无法从以下位置检索文件“community.db”:无法解析主机:
2.我尝试的另一件事是通过此链接:更新一个包后 Arch GLIBC_2.33 未找到错误
我将分区挂载到 /mnt,然后运行,
pacstrap /mnt glibc lib32-glibc
其输出为:
==>在 /mnt 创建安装根目录
mount:/mnt/proc:proc 已安装在 /proc 上。
==>错误:无法设置 chroot /mnt
我(显然)绝不是一位经验丰富的用户,所以我甚至不知道这两种方法是否正确,但我很乐意听取您对这个问题的意见,并感谢任何人的时间和智慧。事实上,我本周有 4 次面试,还有 2 次现场面试,所以我需要扭转我的愚蠢,希望在为时已晚之前解决这个问题哈哈。谢谢!
答案1
问题是你删除了GlibC包(并且在你这样做的时候,你删除了它的所有依赖项,大多数包都依赖这些依赖项),因为包含在基础开发组取决于GlibC,因此你删除了几乎所有的包,剩下的唯一选择就是完全重新安装。
答案2
我能够使用此处的步骤解决此问题线
具体细节如上。总之,我做了以下事情。
我要做的是制作一个新的实时 USB,安装我的根分区,更新我的镜像,使用pacstrap
base、linux 和 linux-firmware 更新损坏的软件包(不确定最后一部分是否必要,也许?),然后将 arch-chroot 放入我安装的根分区。到达那里后,我运行,pacman -Syu
结果由于 npm 而出现错误。我卸载了 npm,运行pacman -Syu
,然后重新安装 npm,一切正常!对我来说,关键是在我的实时 USB 上获取最新版本的 arch。