我试图让 SFML 在 fedora 24 上工作,并且在此过程中我不小心删除了 usr/include 目录。有什么办法可以重新安装所有丢失的文件吗?或者我必须重新安装整个操作系统?我尝试运行sudo dnf --exclude=kernel\* reinstall \*
,它似乎解决了一些问题,但我仍然丢失了最初位于该目录中的许多文件。有没有什么方法可以重新安装所有内容而不重新安装整个操作系统?
答案1
您可以使用 的“验证”功能来列出缺少包含文件的软件包的列表rpm
。
像这样的东西:
#!/bin/sh
rpm -qa|while read name
do
include=$(rpm -ql "$name" |grep -E '^/usr/include/' |wc -l)
[ $include = 0 ] && continue
missing=$(rpm -V "$name" |grep -E '^missing[[:space:]]+/usr/include/' |wc -l)
[ $missing = 0 ] && continue
printf '# missing %d of %d %s\n' $include $missing $name
printf "sudo dnf -y reinstall %s\n" $name
done
它打印一个脚本,其中包含指示丢失文件数量的注释,以及重新安装损坏的软件包的命令。这是一个例子:
# missing 1 of 1 libXcomposite-devel-0.4.4-7.fc23.x86_64
sudo dnf -y reinstall libXcomposite-devel-0.4.4-7.fc23.x86_64