误删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终于没有警告了。虽然问题解决,也不知道是否解决彻底,暂时就这样吧,如果在有问题只好重装了,哇咔咔~

时间: 2024-11-05 16:34:48

误删dpkg的/var/lib/dpkg/info文件夹的解决办法 zhuan的相关文章

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 的解决办法

更换mysql数据目录后出现ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 的解决办法 于是关闭mysql服务: service mysqld stop 转移mysql数据目录 mv /var/lib/mysql/ /data/ 编辑my.cnf vi /etc/my.cnf 修改其中的datadir和socket到新的路径 [mysqld

Android配置----DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹的解决办法

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3881477.html 联系方式:[email protected] [正文] Android DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹,问题在于data文件夹没有权限,用360手机助手或豌豆荚也是看不见的. 有以下两种解决方法: 方法一:使用adb

/var/lib/mysql/mysql.sock错误的解决办法

问题描述: 使用mysql -uroot -p登录出现找不到 /var/lib/mysql/mysql.sock或者被使用的问题. 可以用如下命令登录:mysql -p --socket=/tmp/mysql.sock 解决方法: 1.大多数mysql都是rpm方式安装的.它会自动寻找/var/lib/mysql/mysql.sock这个文件. 检查mysql.sock的位置. 通过/etc/my.cnf中的socket的字段. 如果socket如下所示: socket=/tmp/mysql.s

android DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹的解决办法

问题是没有权限,用360手机助手或豌豆荚也是看不见的. 简单的办法是用RE文件管理器(授予root权限),把data和data/data设置成777权限 注意:用RE管理器打开看到默认不是777的,只是可读写还是不够的. 另外就是使用adb shell命令,但android下的shell是阉割了的 不能用-R参数 既使su到root帐号也执行不了 C:\Documents and Settings\Administrator>adb shell [email protected]_spyder:

win7不能在同一窗口打开文件夹,解决办法

1.由于IE浏览器的主页被劫持,总是忽然弹出搜狗的主页,有的时候,忽然弹出IE浏览器(主页是搜狗),然后又自行关闭,我X,我的电脑竟然不受我控制,这可得了,这里我又要骂宁美国度了,made,组装机装了了很多预装软件,都是有绑定的,都怪我当时懒省事,就没有重装下系统,下面说下问题由来 2.既然IE被劫持,各种修改主页的办法又不好使,只能卸载IE,方法安装网上说的(好像不咋地),首先去使能IE11, 3.然后找到IE所在路径,删除所有的文件,最后发现,下面的ieproxy.dll怎么也删除不掉,最后

mysql 5.7版本目录无data文件夹的解决办法

安装mysql 5.7+版本时,若发现因根目录下,缺少data文件夹的情况, ***请不要去拷贝其他版本的data文件夹!*** 因为此操作会出现很多潜在问题:比如我遇到的执行show variables like "%charact%"; 语句时,报错表不存在! 打开cmd命令窗口,并且进入到mysql安装目录的bin目录下.然后输入命令: mysqld --initialize-insecure --user=mysql 然后回车:去目录下查看,已经自动创建好data文件夹. 问题

安装数据库出现不是有效文件夹的解决办法

今天安装数据库时遇到了自己选取的文件夹并不是有效文件夹的问题,大致错误如下 找了一下网上的解决办法,具体如下,成功解决问题. 解决办法:找到安装文件所在的文件夹,然后点击里面的“Setup.exe”进行安装,便可以安装了. 比如,Sql server 2008数据库ISO文件或者是其格式的文件在d盘下的sql文件夹:那么在选择的时候选择这个 d://sql目录就可以了, 即自己的安装文件在哪,就把自己的目录选择在那. 原文地址:https://www.cnblogs.com/henuliulei

Win10弹出需要管理员权限才能删除文件夹,解决办法(100%有用)

1.右键文件夹,选择“属性”,选择"安全",点击右下角的“高级”按钮. 2.点击所有者后面的“更改” 3.在对象名称中输入“everyone”,点击“检查名称”,看到everyone变为“Everyone”后点击确定. 4.勾选“替换子容器和对象的所有者”和“使用可从此对象继承的权限项目替换所有子对象的权限项目”,在弹出的对话框中选择“确定”即可. 原文地址:https://www.cnblogs.com/andyZhang0511/p/11964313.html

E: Unable to lock the administration directory (/var/lib/dpkg/)

如何修复 Ubuntu 中的"Unable to lock the administration directory (/var/lib/dpkg/)" 在 Ubuntu 或者它的衍生版如 Linux Mint(我已经作为日常工作使用的系统)中使用 apt-get 命令或者其相对更新的APT 管理工具时,你可能会在命令行中看到一个 unable to lock the administration directory (/var/lib/dpkg/) is another proces