解决dpkg/apt-get error : 子进程 post-installation script 返回了错误号 1

1 问题发现


前段时间安装screen的时候, 直接Ctrl+C终止了, 导致后来安装软件都报错, 错误信息如下

1 个软件包没有被完全安装或卸载
解压缩后会消耗掉 0B 的额外空间
您希望继续执行吗?[Y/n] y

......


dpkg: error processing screen (--configure):
 子进程 已安装 post-installation 脚本 返回了错误号 1
在处理时有错误发生:
 screen

解决dpkg/apt-get error : 子进程 post-installation script 返回了错误号 1_第1张图片

2 问题解析


一般来说是由于我们在安装的过程中突然中止, 所以导致的环境变量异常, 软件已经可能安装了, 但是系统的信息却没有更新

  • 软件的状态信息有误, 状态信息在/var/lib/dpkg/status查看

  • 软件的配置信息不全, 位于/var/lib/dpkg/info/.*

3 问题解决


在解决问题之前, 请先删除出问题的软件包, 等待问题解决后, 再重新安装

3.1 方法1 清除状态信息


对于dpkg安装的软件包, 我们可以从/var/lib/dpkg/status查看到其安装状态

如果希望查看screen的安装状态, 可以使用如下命令查看其在哪一行

sudo cat -n /var/lib/dpkg/status | grep "Package: screen"  # 查看在某一行

查看到位于第31103行, 然后查看此处的信息

sudo cat /var/lib/dpkg/status | tail -n +31103 | head -n 28

解决dpkg/apt-get error : 子进程 post-installation script 返回了错误号 1_第2张图片

由于我们的往问题已经解决, 可以看到我们的状态时安装成功的, 否则的话, 修改文件的内容将状态的信息删除

sudo vim /var/lib/dpkg/status

找到Package: ,比如Package: screen

删除这部分的描述, 删到下个Package: XXX前就好. 存档后, 再进行操作就OK了。

3.2 方法2 清除info文件


如果安装成功的软件, info目录下会存储着其安装和配置的脚本信息, 用于在安装和卸载的过程中触发执行, 我们可以检查

解决dpkg/apt-get error : 子进程 post-installation script 返回了错误号 1_第3张图片

主要检查文件是否有缺失, 如果有缺失, 那么就删除他们, 然后重装该软件即可

sudo rm /var/lib/dpkg/info/.*

比如sudo rm /var/lib/dpkg/info/scerrn.*, 存档后,再进行重新安装就OK了

3.3 方法3 重新生成info列表


一般来说, 前面两种方法之一即可解决该问题, 如果还是没觉得, 可以重建info列表

首先将info文件夹更名备份

sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_old

再新建一个新的info文件夹

sudo mkdir /var/lib/dpkg/info

更新缓存信息

sudo apt-get update, apt-get -f install

恢复info文件夹的内容, 执行完上一步操作后会在新的info文件夹下生成一些文件,现将这些文件全部移到info_old文件夹下

sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old

把自己新建的info文件夹删掉

sudo rm -rf /var/lib/dpkg/info

把以前的info文件夹重新改回名字

sudo mv /var/lib/dpkg/info_old /var/lib/dpkg/info

你可能感兴趣的:(解决dpkg/apt-get error : 子进程 post-installation script 返回了错误号 1)