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


30

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

root@sam:~$ rm -r /var/lib/dpkg

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

E: Could not open lock file /var/lib/dpkg/lock - open (2: No such file or directory)

我现在应该怎么做?


您是否尝试过以超级用户身份将Ubuntu Live CD中的文件复制(尝试不删除它们)到系统本身?
Dominic Hayes'2

Answers:


60

根+ 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

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

sudo mkdir -p /var/lib/dpkg/{alternatives,info,parts,triggers,updates}

恢复一些备份:

sudo cp /var/backups/dpkg.status.0 /var/lib/dpkg/status

现在,让我们看看您的dpkg是否正在工作(开始祈祷):

apt-get download dpkg
sudo dpkg -i dpkg*.deb

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

apt-get download base-files
sudo dpkg -i base-files*.deb

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

dpkg --audit
sudo apt-get update
sudo apt-get check

现在,让我们深呼吸。ew 做ls -l /var/lib/dpkg并与上面的列表进行比较。如果-old不存在某些文件,请不要担心它将在明天出现。


1
感谢您的回复。我按照您在此处提到的步骤进行操作,但是在执行sudo dpkg -i dpkg * .deb时,出现了dpkg错误:错误:无法打开包信息文件`/ usr / local / var / lib / dpkg / status “阅读:没有这样的文件或目录
Sambit

@Sambit不可能。您可以编辑问题并添加完整的输出吗?
Braiam

@Sambit ls: cannot access /usr/local/var/lib/dpkg/status: No such file or directory是我唯一得到的东西。/usr/local不适用于安装dpkg文件。
Braiam 2014年

同样的问题,Ubuntu尝试在中安装/usr/local/而不是在中 安装/var/lib/dpkg。如何指出/var/lib/dpkg
bagustris '18

@bagustris从Ubuntu存储库下载软件包。
布里亚姆'18

2

dpkg(Debian软件包管理系统)软件包提供了用于处理Debian软件包的安装和删除的低级基础架构。因此删除它不是一个好主意,您可以通过以下方式将其恢复

使用wget以下命令下载文件:

wget https://launchpad.net/ubuntu/+archive/primary/+files/dpkg_1.16.1.2ubuntu7.2.tar.bz2

将其解压缩到xxx文件夹中。

cd xxx
./configure
make
sudo make install

希望它能工作。


我已经完成了这些步骤并成功安装了。但是我又遇到了同样的问题。
Sambit

./configure失败还是成功?
Sukupa91 2013年

已经重新启动,并且出现与我的问题相同的错误。此外,诸如“ Ubuntu软件中心”,“更新管理器”之类的内置软件也不起作用。
Sambit

嘿,我已经更新了wget第一条命令,尝试从wget命令开始相同的过程
Sukupa91

1
出现错误,cp:无法统计`/ var / lib / dpkg / status-old':没有这样的文件或目录。我面临这些问题,因为“ dpkg”目录在我的系统中不存在。
Sambit

1

从备份中恢复系统。您确实做了备份吗?备份系统和数据对于应对这种意外情况(用户错误)和硬件故障至关重要。如果无法创建备份(如此处所述),则可以尝试恢复数据。

将来,我建议您定期备份以避免灾难性的数据丢失。而且我怀疑您会忘记@Braiam所说的“ root + rm + -r =灾难


-2

只需按照以下步骤操作,确保您可以恢复文件,至少可以使用apt-get或可以恢复dpkg

sudo cp /var/backups/dpkg.status.0  /var/lib/dpkg/

sudo mv /var/backups/dpkg.status.0  /var/backups/status

sudo mkdir /var/lib/dpkg/updates

经过测试后,它是否可以工作。

sudo apt-get install {Package-name}

sudo dpkg -i {package_name}

希望它能起作用。如果没有在下面发表评论。请记住,在玩时要格外小心sudo + rm -rf

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.