频道栏目
首页 > 系统 > Linux > 正文

误删dpkg的/var/lib/dpkg/info文件夹的解决办法

2013-05-02 14:01:25            作者:f8915345
收藏   我要投稿

误删dpkg的/var/lib/dpkg/info文件夹的解决办法

 

今天安装软件时时,出现这样的错误提示: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终于没有警告了。虽然问题解决,也不知道是否解决彻底,暂时就这样吧,如果在有问题只好重装了,哇咔咔~

 

相关TAG标签 文件夹 办法
上一篇:[ZZ]Linux重定向文件
下一篇:Linux硬盘系统建立分区的步骤
相关文章
图文推荐
文章
推荐
热门新闻

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站