如何修复Linux中损坏的软件包?

译文
系统 Linux
Apt和DNF等Linux软件包管理器功能异常强大、界面异常直观,但这并不意味着就不会出岔子。有时软件包安装会出问题,您得收拾残局。软件包管理器能够修复损坏的软件包并跳过损坏的更新,使系统重新运行并避免将来遇到麻烦。本文介绍如何在Linux中修复损坏的软件包。

【51CTO.com快译】Apt和DNF等Linux软件包管理器功能异常强大、界面异常直观,但这并不意味着就不会出岔子。有时软件包安装会出问题,您得收拾残局。软件包管理器能够修复损坏的软件包并跳过损坏的更新,使系统重新运行并避免将来遇到麻烦。本文介绍如何在Linux中修复损坏的软件包。

[[351470]]

这些提示和技巧可在大多数情况下帮助您解决问题。它们都相当普遍,但是每种情况都不尽相同,因此试着自行解决问题时牢记这一点。

修复Ubuntu中损坏的软件包

Apt有几个标志(flag),可用于修复安装过程中因某个原因而损坏的缺失的依赖项或软件包。一个常见的情况是安装第三方.deb,发现它有您不了解的依赖项。这些依赖项可能不会自行获取,dpkg会抱怨缺少软件包。不管怎样,您可以尝试下列步骤。

图1

首先,运行更新以确保没有所需软件包的较新版本。 

  1. sudo apt update --fix-missing 

下一步,您可以试着强制Apt查找并更正所有缺失的依赖项或损坏的软件包。实际上,这将安装所有缺失的软件包,并修复现有的安装。 

  1. sudo apt install –f 

软件包安装中可能出错误的另一个地方是配置过程。在后台负责这部分的是dpkg,而不是Apt,因此有理由认为:软件包在配置期间失灵时,dpkg是用来修复它的工具。

图2

先尝试强制dpkg重新配置所有损坏的或部分配置的软件包。 

  1. sudo dpkg --configure -a 

如果这解决不了问题,可以采取更强制的方法。先列出dpkg标记为要重新安装的所有软件包。 

  1. sudo dpkg -l | grep ^..r 

您应该在这里看到有问题的软件包。只要没有似乎不属于这里的任何软件包,您都可以强行删除损坏的软件包。 

  1. sudo dpkg --remove --force-remove --reinstreq 

dpkg完成后,试着用Apt清理一下。 

  1. sudo apt clean 
  2. sudo apt update 

运气好的话,它们会让您回到开始的地方。它不会给您试图安装的损坏软件包,但至少Apt可以再次发挥作用。

永久DPKG锁

有一个不太常见的问题:可笑的dpkg锁阻止您执行任何操作。每当您试着使用Apt或dpkg,都会出现错误,提示另一个应用程序已经在使用Apt或dpkg,实际上并非如此。

实际上,很容易删除阻止您使用Apt、回去执行要执行的操作的锁定文件。有时,安装出现错误后,这些锁定文件仍会在那里,阻止文件被自动删除。这种情况下,您需要自行操作。 

  1. sudo rm /var/lib/apt/lists/lock 

另外,删除缓存中的锁。 

  1. sudo rm /var/cache/apt/archives/lock 

修复Fedora/CentOS/RHEL中损坏的软件包

修复Fedora/CentOS/RHEL中损坏的软件包不大常见,因为yum和dnf在确保软件包正确安装方面做得非常好。然而有时软件包使用还是会出问题。在基于rpm的系统上执行此操作的命令是:

  1. sudo rpm –Va 

图3

-V选项用于验证,这意味着它将检查安装文件方面的信息,并与rpm数据库中存储的信息进行比较。这一点帮助不大,因为它通常会给出一长串文件,但如果您遇到某个应用程序的问题,至少有地方可以入手。您可以对该列表中看到的任何可能带来麻烦的软件包运行dnf重新安装。 

  1. sudo dnf --refresh reinstall PACKAGE_NAME 

这将所有元数据设为到期,以便它可搜索您启用的每个存储库,查找该软件包的新版本。如果您发现该软件包有坏的依赖项,DNF可能会告诉您使用--skip-broken标志。这还可能意味着您没有启用特定的存储库来提取依赖项,因此您可能得搜寻一番。

结束语

但愿这些修复方法管用,那样您可以正常使用Linux系统了。请记住,要处理完全失控的情况,最佳方法是试着恢复到以前的状态。除非您知道自己到底在干什么,否则不要忙中添乱。

原文标题:How to Fix Broken Packages in Linux,作者:John Perkins

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

责任编辑:华轩 来源: 51CTO
相关推荐

2018-06-11 08:50:46

LinuxArch Linux降级软件包

2023-01-03 15:53:00

LinuxFlatpak软件包

2023-01-02 11:34:04

LinuxFlatpak软件包

2018-10-15 11:00:28

Linux软件包命令

2018-07-10 08:59:07

LinuxArch Linux软件包

2018-06-22 10:05:04

Arch LinuxDEB软件包

2011-09-15 11:14:12

2018-06-19 10:06:16

Linux软件测试Nix包管理器

2019-08-19 11:20:33

Linux软件包命令

2019-08-19 09:19:02

LinuxVimUbuntu

2010-03-01 17:43:55

Linux Xsupp

2021-10-03 14:30:17

Arch LinuxPKGBUILD 文件软件包

2022-05-09 10:51:26

Snap软件包Ubuntu

2019-03-04 11:30:07

修复Windows 10系统文件

2018-10-29 14:10:19

Linux软件包命令

2020-08-25 09:51:40

Android 11开发者软件

2019-06-03 11:15:32

Linux软件包命令

2010-01-07 14:44:14

Linux安装KDE

2010-03-03 16:39:01

Linux软件包依赖

2010-03-03 09:43:34

Linux软件包
点赞
收藏

51CTO技术栈公众号