不幸的是我删除了软件包目录,同时移除锁。我错误地输入了
root@sam:~$ rm -r /var/lib/dpkg
现在,当我尝试安装/卸载软件包时,它会显示以下错误。
E: Could not open lock file /var/lib/dpkg/lock - open (2: No such file or directory)
我现在应该怎么做?
答案1
使用 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
您删除了 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
ls -l /var/lib/dpkg
与上面的列表进行比较。如果某个-old
文件不存在,请不要担心,因为它会在系统正常使用时创建。
答案2
嗯dpkg
(Debian 包管理系统)包提供了处理 Debian 软件包安装和删除的低级基础设施。因此删除它不是一个好主意,你可以通过以下方式将它恢复:
使用以下方式下载文件wget
:
wget https://launchpad.net/ubuntu/+archive/primary/+files/dpkg_1.16.1.2ubuntu7.2.tar.bz2
将其解压到xxx文件夹内。
tar -xvf dpkg_1.16*
cd dpkg-1.16*
./configure
make
sudo make install
希望它能够起作用。