如何在Linux服务器上查找和修复损坏的软件包

Linux系统服务器中的软件包管理器允许你控制软件包的安装和删除。除此之外,软件包管理器还可以帮助你找到系统中损坏的软件包,并重新安装它们,以解决与Linux软件包相关的各种问题。
如果你不知道使用哪些命令来寻找Linux中的破损软件包,那么本指南就是为你准备的。我们将简要详细的讨论损坏的软件包,如何检查你的系统是否包含损坏的软件包,以及如何正确的重新安装它们。
什么是破损的软件包?
当你在Linux服务器中安装一个新的软件包时,系统的软件包管理器负责整个安装过程。这些包管理器有内置的方法来处理异常和错误。但有时,在出现意外问题的情况下,安装会停止,完整的软件包没有安装。这样的包在Linux中被称为Broken包。
如果在系统中发现了破损的软件包,Apt等软件包管理器不允许继续安装软件包。在这种情况下,修复破损的软件包是唯一的选择。
如何查找和修复破损的软件包
每个包管理器都会处理不同类型的包。例如,DNF和Yum与RedHat软件包管理器(RPM)合作,下载和安装RPM软件包。同样的,Apt也是基于Debian的发行版中基本dpkg软件的前端封装器。
在 Debian 上重新安装损坏的软件包
Apt 是每一个基于 Debian 的发行版上预装的默认软件包管理器。除了 Apt,Debian 用户也可以使用 dpkg 手动下载和安装软件包。
要使用Apt修复Debian发行版上的破损软件包。
按键盘上的Ctrl + Alt + T打开你的终端,然后回车。
sudo apt --fix-missing update
更新系统中的软件包。
sudo apt update
现在,使用 -f 标志强制安装损坏的软件包。Apt会自动搜索你系统中的破损包,并从官方仓库中重新安装它们。
sudo apt install -f
如果上述步骤对你不起作用,那么你可以尝试使用 dpkg 来解决这个问题。
强制 dpkg 重新配置所有已经解压但需要进行配置的待处理包。命令中的 -a 标志代表 All。
sudo dpkg --configure -a
用dpkg管grep来获取所有被dpkg标记为 "需要 "的包的列表。
sudo dpkg -l | grep ^.r
使用 --remove 标志来删除所有被破坏的软件包。
sudo dpkg --remove --force-remove-reinstreq
使用Apt clean清理缓存。
sudo apt clean
使用以下命令更新你的系统包。
sudo apt update
在Fedora/CentOS上
虽然Yum和Dnf在管理破损的软件包时很好用,但有时也会出现问题,因为Linux系统上安装了成千上万的软件包。在这种情况下,你可以使用RPM(Fedora和CentOS的基础包管理器)来快速解决这种问题。
使用-V标志来验证你系统上的所有软件包。
sudo rpm -Va
你会看到一个长长的列表,其中包含了你系统上所有安装的软件包。
重新安装你认为可能导致软件包损坏问题的软件包。
sudo dnf --refresh reinstall packagename
以上步骤非常不方便------从上百个软件包列表中找出导致问题的软件包是令人厌烦的。虽然RPM是一个强大的软件包管理器,你很少会遇到这样的问题,但知道如何解决这些问题还是很重要的,以防你在不久的将来遇到类似的情况。
管理Linux发行版上的软件包
Linux上的包管理器能够处理大部分的问题,包括安装失败。但有时会出现各种问题,只能靠直觉解决。解决破损软件包的方法包括几个步骤------确定破损的软件包,重新安装,更新系统的软件包列表。
互联网上有无数的Linux发行版值得尝试,但从深层来看,每一个发行版都有一个相似的基础。桌面环境通过提供独特的用户体验使每个发行版与众不同。如果你最终决定继续使用Linux系统,选择一个适合你口味的理想桌面环境应该是你的首要任务。