前言


在使用 dpkg -i 安装.deb软件包的过程中,会出现安装失败的可能。之后无论用 sudo apt install -f or sud apt autoremove 等常见的修复命令都是无效的。网络上很多解决方案都直接给出需要运行的命令,不分析原因也不说明理由。我从来不尝试这样的解决方案,除非我自己知道或是只能死马当活马医。

不过针对Sub-process /usr/bin/dpkg returned an error code (1)的问题,很简单的就能找到原因。参考博客:https://phoenixnap.com/kb/fix-sub-process-usr-bin-dpkg-returned-error-code-1

错误的原因

Sub-process /usr/bin/dpkg returned an error code (1)说明dpkg这一package installers 出现了问题。这一错误一般是使用dpkg安装软件失败或者被中断后出现的。

命令行中/use/bin/dpkg这一关键信息说明了系统的dpkg软件出错了。任意一次新的安装都会报这样的错误。

针对这一问题有很多解决方案,有简单的也有复杂的。接下来就告诉大家如何修复这一问题。

解决方法

方案一:重新配置 dpkg database(慎重,具体看评论区)

重新配置 package database,直接运行一下命令即可:

sudo dpkg --configure -a

这一命令把那些已经解压但是没有被安装的package进行重新配置。在特定的时间中断安装可能会造成这一错误。这一命令尤其适用于安装进程被中断的情况。

方案二:强制安装该软件

如果方案一不行,你可以尝试自动解决依赖问题,安装该软件。执行以下命令:

sudo apt-get install -f

-f选项意味着修复问题。它会尝试修复损坏的依赖信息。这常常适用于解决因为网络问题而导致的安装失败。

方案三:卸载存在问题的软件

如果你知道是哪个软件导致了这个问题,你可以卸载它。运行如下命令:

sudo apt-get remove --purge package_name

这一命令会卸载相关软件的所有痕迹。

方案四:清除所有无用的软件

如果是旧的、过时的、无用的软件造成的错误,运行如下命令

sudo apt autoremove

卸载无用的软件

方案五:删除 post file

如果你知道导致这一错误的软件,你可以手动删除相关的文件。这些文件通常在/var/lib/dpkg/info文件夹下。执行如下命令

sudo ls –l /var/lib/dpkg/info | grep –i package_name

这一命令会将你安装的软件的所有引用列出来,之后通过如下命令删除它们:

sudo mv /var/lib/dpkg/info/package_name.* /tmp

这一命令将相关文件移动到/tmp文件夹下,之后运行如下命令进行更新
sudo apt-get update

方案六:重写package file

执行以下命令:
sudo dpkg –i ––force–overwrite /var/cache/apt/archives/full_name_of_package
如果你不知道实际的package name,可以执行以下命令进行搜索:

ls /var/cache/apt/archies/*package_name*