发新话题
打印

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

解决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

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
31103行, 然后查看此处的信息" title="" style="box-sizing: border-box; outline: 0px; margin: 24px 0px; max-width: 100%; word-break: break-all; cursor: zoom-in;">
由于我们的往问题已经解决, 可以看到我们的状态时安装成功的, 否则的话, 修改文件的内容将状态的信息删除
sudo vim /var/lib/dpkg/status
  • 1
找到Package: ,比如Package: screen
删除这部分的描述, 删到下个Package: XXX前就好. 存档后, 再进行操作就OK了。
3.2 方法2
清除info文件如果安装成功的软件, info目录下会存储着其安装和配置的脚本信息, 用于在安装和卸载的过程中触发执行, 我们可以检查

主要检查文件是否有缺失, 如果有缺失, 那么就删除他们, 然后重装该软件即可
sudo rm /var/lib/dpkg/info/<package name>.*
比如sudo rm /var/lib/dpkg/info/scerrn.*, 存档后,再进行重新安装就OK了
3.3 方法3
重新生成info列表(OK)
一般来说, 前面两种方法之一即可解决该问题, 如果还是没觉得, 可以重建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


版权声明:本文为博主原创文章 && 转载请著名出处 @ http://blog.csdn.net/gatieme        https://blog.csdn.net/gatieme/article/details/52839814


[ 本帖最后由 linda 于 2018-7-19 17:57 编辑 ]

TOP

发新话题