每当我键入sudo apt-get remove然后按Tab自动完成键时,我都会收到以下消息:
grep-status: /var/lib/dpkg/status:15945: expected a colon
.
Run Code Online (Sandbox Code Playgroud)
我在状态文件的第 15945 行没有看到任何特别奇怪的东西。这是单声道库包的描述字段中的点字符,插入冒号没有帮助。删除包含点的行也不起作用。用 status-old 覆盖文件会导致相同的消息。
有没有办法重建状态文件?
Jim*_*Jim 19
您应该能够使用以前已知的良好状态文件并从那里更新。每次进行安装或更新时,状态文件都会保存到/var/backups下的 gzip备份中。在目录上执行ls -l dpkg * 显示:
-rw-r--r-- 1 root root 2266732 2010-09-30 08:35 dpkg.status.0
-rw-r--r-- 1 root root 624182 2010-09-29 08:49 dpkg.status.1.gz
-rw-r--r-- 1 root root 623844 2010-09-28 08:55 dpkg.status.2.gz
-rw-r--r-- 1 root root 620358 2010-09-24 11:04 dpkg.status.3.gz
-rw-r--r-- 1 root root 619021 2010-09-23 15:34 dpkg.status.4.gz
-rw-r--r-- 1 root root 619013 2010-09-23 08:03 dpkg.status.5.gz
-rw-r--r-- 1 root root 618968 2010-09-21 08:33 dpkg.status.6.gz
Run Code Online (Sandbox Code Playgroud)
还有一个在 /var/lib/dpkg/ 目录中创建的名为 status-old 的文件的备份。在目录上执行ls -l status * 显示:
-rw-r--r-- 1 root root 2266732 2010-09-30 08:35 status
-rw-r--r-- 1 root root 2267191 2010-09-30 08:35 status-old
Run Code Online (Sandbox Code Playgroud)
因此,要从损坏中恢复,您应该能够执行以下操作:
1. 备份损坏的状态文件:
mv /var/lib/dpkg/status /var/lib/dpkg/status_bkup
Run Code Online (Sandbox Code Playgroud)
2. 将最近的 dpkg 状态文件从上述任一来源复制到位:
任何一个
cp /var/lib/dpkg/status-old /var/lib/dpkg/status
Run Code Online (Sandbox Code Playgroud)
或者
cp /var/backups/dpkg.status.#.gz /var/lib/dpkg/
gunzip -d /var/lib/dpkg/dpkg.status.#.gz
mv /var/lib/dpkg/dpkg.status.# /var/lib/dpkg/status
Run Code Online (Sandbox Code Playgroud)
3.然后运行apt-get更新:
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
那应该这样做。
我终于修复了我的系统。恢复状态文件的备份不起作用,因为我遇到这个问题已经很长时间了,它存在于我的所有备份中。
修复包括搜索实际格式中断并手动修复它们。这并不像听起来那么难。
http://thepcspy.com/read/fixing-dpkg-status-corruption/
小智 6
我能够通过删除状态文件中已损坏条目的包来解决此问题。
sudo dpkg -r handbrake-cli
Run Code Online (Sandbox Code Playgroud)
通过 pcregrep 接受的解决方案不起作用(pcregrep 没有找到任何东西)。
在这种情况下,我将备份损坏的/var/lib/dpkg/status文件,然后使用来自
apt-cache show libssl0.9.8
apt-cache show udev
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
77255 次 |
| 最近记录: |