在 Arch 上取消“rm -rf /usr/”后该怎么办?

在 Arch 上取消“rm -rf /usr/”后该怎么办?

所以我只是在我最新的 Arch 系统上这样做了:

[anna@home ~]$ sudo rm -rf /usr/
^C[anna@home ~]$ ^C
[anna@home ~]$ ^C

rm很快就终止了。/usr/肉眼看不出什么毛病。

有哪些选项可以查看是否造成任何损坏?我应该运行一些 pacman 完整性检查吗?我应该检查哪些特定文件以确保系统可以再次启动?

从现在开始,我会保留以下内容的备份全部的系统。

答案1

我认为 Dennis Kaarsemaker 写了正确的事情:重新安装所有软件包。

几分钟的谷歌搜索揭示了这一点Arch 维基文章,其中有一节介绍重新安装所有软件包。由于您没有删除/var/cache/pacman/pkg,因此该过程应该在本地进行。该命令如下所示:

pacman -Qenq | pacman -S -

pacamn -Qeng仅按组列出“显式安装”、“本机”软件包。它可能会丢失“额外”或“社区”存储库中的一些软件包,或者您已安装的任何 AUR 软件包。我个人不敢尝试这个,因为我的 Arch 安装正在运行,但是

pacman -Qn | awk '{print $1}' | pacman -S -

可能会重新安装它可以重新安装的每个软件包。我不确定它将如何处理稍后在此过程中显式安装的依赖项。您最终可能会重新安装已经作为依赖项重新安装的软件包。

如果您设法删除pacman,我认为该过程可能只涉及使用 Arch 安装 ISO 的部分“新安装”,但我不敢推荐这样做。

答案2

如果您不想(重新)安装所有软件包,您可以使用一个技巧:检查/var/lib/pacman/local的子目录及其子目录files,其中包含每个软件包的所有已安装文件。

这是一个简单的、未经测试(且不完美)的脚本:

cd /var/lib/pacman
for package in *; do
    for file in $(grep ^usr ${package}/files); do
        [ -e "/${file}" ] || echo Bad package: ${package}
    done
done

您可以改进此脚本(也许如果${file}不存在,请运行pacman -S ${package}并继续),但我认为主要思想还不错:)

相关内容