如何恢复已删除的“dpkg”目录?

Sam*_*bit 37 dpkg

不幸的是,我在删除锁时删除了dpkg目录。我打错了

root@sam:~$ rm -r /var/lib/dpkg
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试安装/卸载软件包时,它会显示以下错误。

E: Could not open lock file /var/lib/dpkg/lock - open (2: No such file or directory)
Run Code Online (Sandbox Code Playgroud)

我现在该怎么办?

Bra*_*iam 78

使用 root 和递归 rm ( rm -r) 是灾难的秘诀,不要这样做。删除的文件和目录如下:

ls -l /var/lib/dpkg/
total 9964
drwxr-xr-x 2 root root    4096 nov 28 11:18 alternatives
-rw-r--r-- 1 root root      11 sep 18 14:08 arch
-rw-r--r-- 1 root root 2573807 nov 28 11:18 available
-rw-r--r-- 1 root root 2561322 nov 28 10:25 available-old
-rw-r--r-- 1 root root       8 abr 24  2013 cmethopt
-rw-r--r-- 1 root root     538 sep 25 17:24 diversions
-rw-r--r-- 1 root root     457 sep 25 17:24 diversions-old
drwxr-xr-x 2 root root  483328 nov 28 11:17 info
-rw-r----- 1 root root       0 nov 28 11:18 lock
drwxr-xr-x 2 root root    4096 mar 22  2013 parts
-rw-r--r-- 1 root root     135 abr 24  2013 statoverride
-rw-r--r-- 1 root root 2269113 nov 28 11:18 status
-rw-r--r-- 1 root root 2268870 nov 28 11:18 status-old
drwxr-xr-x 2 root root    4096 nov 28 11:18 triggers
drwxr-xr-x 2 root root    4096 nov 28 11:18 updates
Run Code Online (Sandbox Code Playgroud)

您删除了 5 个目录、状态文件等。因此,让我们尝试修复这些内容。首先,创建目录:

sudo mkdir -p /var/lib/dpkg/{alternatives,info,parts,triggers,updates}
Run Code Online (Sandbox Code Playgroud)

恢复一些备份:

sudo cp /var/backups/dpkg.status.0 /var/lib/dpkg/status
Run Code Online (Sandbox Code Playgroud)

检查 dpkg 是否正常工作:

apt-get download dpkg
sudo dpkg -i dpkg*.deb
Run Code Online (Sandbox Code Playgroud)

如果一切正常,那么也修复您的基本文件:

apt-get download base-files
sudo dpkg -i base-files*.deb
Run Code Online (Sandbox Code Playgroud)

现在尝试更新您的包裹清单等:

dpkg --audit
sudo apt-get update
sudo apt-get check
Run Code Online (Sandbox Code Playgroud)

ls -l /var/lib/dpkg与上面的列表进行比较。如果某个-old文件不存在,请不要担心,因为它会在系统的正常使用中创建。