我正在尝试修复 Ubuntu 20.04 安装,其中有许多软件包需要重新安装。我通过执行dpkg --audit
(或dpkg -C
) 发现了这一点(正如人们所料),它返回了必须重新安装的软件包列表。
出于某种原因,它返回了一个很长的软件包列表。我可以采取的措施之一是执行,apt install --reinstall [package-name]
但至少有几百个软件包,所以这会很累人也很无聊。
有没有办法使这个过程自动化?理想情况下,我正在考虑一种方法来dpkg -C
生成可以提供给 apt 的软件包名称数组,但我不知道这是否可行。
有什么办法可以利用审计结果吗?还是我必须自己想出一个机制?
答案1
这是一行代码,它(几乎)可以完成您想要做的事情。
for p in $(dpkg --audit | tail +4 | awk -F " " "{print $1}"); do echo sudo apt install $p --reinstall -y ; done
我说“几乎”是因为它会打印出一堆这样的行:
sudo apt install zstd --reinstall -y
sudo apt install zsync --reinstall -y
您可以按您想要的顺序进行排序。或者,您可以删除一行中的单词“echo”,让它直接通过。