子进程 post-installation script 返回了错误号

在ubuntu上使用apt-get安装软件的时候出现如下错误:

正在设置 nfs-common (1:1.2.2-4ubuntu5) ...
dpkg:处理 nfs-common (--configure)时出错:
 子进程 已安装 post-installation 脚本 返回了错误号 10
正在设置 samba-common (2:3.5.8~dfsg-1ubuntu2.3) ...
dpkg:处理 samba-common (--configure)时出错:
 子进程 已安装 post-installation 脚本 返回了错误号 10
dpkg:依赖关系问题使得 samba 的配置工作不能继续:
 samba 依赖于 samba-common (= 2:3.5.8~dfsg-1ubuntu2.3);然而:
  软件包 samba-common 尚未配置。
dpkg:处理 samba (--configure)时出错:
 依赖关系问题 - 仍未被配置
dpkg:依赖关系问题使得 smbclient 的配置工作不能继续:
 smbclient 依赖于 samba-common (= 2:3.5.8~dfsg-1ubuntu2.3);然而:
  软件包 samba-common 尚未配置。
dpkg:处理 smbclient (--configure)时出错:
 依赖关系问题 - 仍未被配置
因为错误消息指示这是由于上一个问题导致的错误,没有写入 apport 报告。
                                                          由于已经达到 MaxReports 限制,没有写入 apport 报告。
                                        在处理时有错误发生:
 nfs-common
 samba-common
 samba
 smbclient
E: Sub-process /usr/bin/dpkg returned an error code (1)

在终端切换python版本之后安装cython库出现这个错误。

办法如下: 
1.$ sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_old //现将info文件夹更名 
2.$ sudo mkdir /var/lib/dpkg/info //再新建一个新的info文件夹 
3.$ sudo apt-get update, apt-get -f install //不用解释了吧 
4.$ sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old //执行完上一步操作后会在新的info文件夹下生成一些文件,现将这些文件全部移到info_old文件夹下 
5.$ sudo rm -rf /var/lib/dpkg/info //把自己新建的info文件夹删掉 
6.$ sudo mv /var/lib/dpkg/info_old /var/lib/dpkg/info //把以前的info文件夹重新改回名字

我也不太清楚自己安装那几个出现问题了,然后还是没有解决了,继续尝试方法:

上网查了一下,info文件夹保存各个软件的配置文件列表,真是粗心大意啊。
 
试了很多网上传说的方法都不好用,只好祭出谷歌神器,终于在国外的一个文章中找到了解决方案
 
执行下面的脚本
#!/bin/bash
set -e
 
# Clean out /var/cache/apt/archives
apt-get clean
# Fill it with all the .debs we need
apt-get --reinstall -dy install $(dpkg --get-selections | grep '[[:space:]]install' | cut -f1)
 
DIR=$(mktemp -d -t info-XXXXXX)
for deb in /var/cache/apt/archives/*.deb
do
    # Move to working directory
    cd "$DIR"
    # Create DEBIAN directory
    mkdir -p DEBIAN
    # Extract control files
    dpkg-deb -e "$deb"
    # Extract file list, fixing up the leading ./ and turning / into /.
    dpkg-deb -c "$deb" | awk '{print $NF}' | cut -c2- | sed -e 's/^\/$/\/./' > DEBIAN/list
    # Figure out binary package name
    DEB=$(basename "$deb" | cut -d_ -f1)
    # Copy each control file into place
    cd DEBIAN
    for file in *
    do
        cp -a "$file" /var/lib/dpkg/info/"$DEB"."$file"
    done
    # Clean up
    cd ..
    rm -rf DEBIAN
done
rmdir "$DIR"
原理是重新下载所有安装过的软件包,然后从中提取文件列表信息复制到info文件夹里

然后电脑好像恢复正常了。

参考链接:

http://blog.csdn.net/love254443233/article/details/19636191

http://www.bkjia.com/Linuxjc/550181.html

http://blog.csdn.net/sftxlin/article/details/8680815

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值