zoukankan      html  css  js  c++  java
  • 误删dpkg的/var/lib/dpkg/info文件夹的解决办法 zhuan

      
     
    今天安装软件时时,出现这样的错误提示:E: Sub-process /usr/bin/dpkg returned an error code (1)
     
    上网查解决方案,被网上误导,一不小心误删了dpkg的info文件夹,之后在使用apt-get 或者 dpkg命令总是提示
     
    “dpkg:警告:无法找到软件包 ******* 的文件名列表文件,现假定该软件包目前没有任何文件被安装在系统里”
     
    上网查了一下,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文件夹里。
     
    执行完毕后提示x11-common有空文件列表,原因不明,只能执行替换法了,从别的ubuntu上拷贝了x11-common的文件,
     
    但是依然提示dpkg警告,例如chrome的,对于这些软件只好手动安装了,手动重新安装chrome和WPS之后问题解决
     
    apt-get和dpkg终于没有警告了。虽然问题解决,也不知道是否解决彻底,暂时就这样吧,如果在有问题只好重装了,哇咔咔~
     
  • 相关阅读:
    013.ES6 -对象字面量增强型写法
    012. ES6
    011. ES6 语法
    10. 9. Vue 计算属性的setter和getter 以及 计算属性的缓存讲解
    4. Spring MVC 数据响应方式
    3. SpringMVC 组件解析
    9. Vue 计算属性
    【洛谷 2984】给巧克力
    【洛谷 1821】捉迷藏 Hide and Seek
    【洛谷 1821】银牛派对Silver Cow Party
  • 原文地址:https://www.cnblogs.com/huashiyiqike/p/4022325.html
Copyright © 2011-2022 走看看