我最近安装了新版本的 Ubuntu LTS 12.04。我一直在使用 LTS 10.4,保存了我的 package.list,并计划使用
$> sudo dpkg --set-selections < package.list && apt-get dselect-upgrade
在新版本中安装相同的软件包
但是,计算机无法运行并出现错误
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
对此问题的简单回答是:我是 root 还是 sudo 成员?
$> whoami
surfer
$> groups
surfer adm cdrom sudo dip plugdev lpadmin sambashare
这是简单的答案。
根据类似的帖子 无法锁定管理目录(/var/lib/dpkg/),是否有另一个进程正在使用它? 推荐的解决方案是
$> sudo fuser -cuk /var/lib/dpkg/lock; sudo rm -f /var/lib/dpkg/lock
执行该命令后,我的屏幕变黑,键盘没有响应,我唯一的选择是按下电源按钮并重新启动......(我本来以为这是一个恶意的建议,但其他人似乎喜欢它。)
我尝试列出可能使用/var/lib/dpkg/lock
$> sudo lsof
lsof: WARNING: can't stat() fuse.gvfs-fuse-daemon file system /home/surfer/.gvfs
Output information may be incomplete.
请注意,没有列出任何程序。
同样,
$> ps -e | grep -e apt -e adept | grep -v grep
沒有列出。
顺便说一句,我可以从命令行运行 apt-get。
$> sudo apt-get update
按预期运行并更新我的包列表......
@izx:尝试了你的建议后,我无法运行
$> sudo dpkg --set-selections < package.list && apt-get dselect-upgrade
它失败并出现相同的错误。我试过这个
A)在 F1 终端中执行 rm 命令后立即执行
b)执行 rm 命令并使用 Ctrl+Alt+F7 返回 X
C)执行 rm 命令并重新启动
仅感兴趣的选项C)产生了不同的(但类似的错误消息)
dpkg: error: dpkg status database is locked by another process
/var/lib/dpkg/lock
虽然我无法使用with终止进程fuser
,但我确实获得了与其链接的进程的以下输出。
$> fuser -cv /var/lib/dpkg/lock
USER PID ACCESS COMMAND
/var/lib/dpkg/lock: root kernel mount (root)/var
surfer 1641 ....m (surfer)gnome-settings-
surfer 1656 ....m (surfer)compiz
surfer 1679 ....m (surfer)nm-applet
surfer 1688 ....m (surfer)nautilus
surfer 1731 ....m (surfer)gtk-window-deco
surfer 1733 ....m (surfer)unity-panel-ser
surfer 1831 ....m (surfer)gnome-terminal
surfer 1899 f.... (surfer)unity-applicati
surfer 2029 F...m (surfer)update-notifier
于是我尝试从 F1 终端终止每个进程,并删除锁定文件。没有问题。结果是
$> fuser -cv /var/lib/dpkg/lock
USER PID ACCESS COMMAND
/var/lib/dpkg/lock: root kernel mount (root)/var
$> ls /var/lib/dpkg/lock
ls: cannot access /var/lib/dpkg/lock: No such file or directory
文件和链接似乎消失了,但在执行dpkg
命令时,我收到相同的错误...并且锁定文件又回来了。
我真的很困惑,希望得到任何帮助。
答案1
你的第一步应该是
sudo dpkg --set-selections < package.list && sudo apt-get dselect-upgrade
以下错误
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
将有绝不发生了,即使second time
您使用相同的代码,也会遇到相同的错误。
通过添加来尝试正确的命令须藤按照上述操作,并发布您的发现。
笔记: 指某东西的用途&&使您可以按照通常的方式在同一行上执行多个命令&&仅执行第二命令如果第一的命令返回值报告成功。 所以 ,须藤这里需要指定第二命令 。
答案2
sudo dpkg --configure -a
然后重试。
如果有其他安装正在运行,也会出现此问题。
答案3
尝试
sudo apt-get update
如果你仍然收到锁定错误,请尝试此命令它将提供进程详细信息
ps -e | grep -e apt -e adept | grep -v grep
然后使用进程 ID 终止进程,然后执行更新命令
你也可以删除这个文件,你的问题就解决了
rm /var/lib/dpkg/lock
sudo dpkg --set-selections < package.list && sudo apt-get dselect-upgrade
答案4
在极少数情况下,您可能会遇到此问题,而无需dpkg
具有 sudo 权限的用户进行其他进程锁定。
我遇到了这个问题,由于未知原因,我丢失了这个文件夹。
/var/lib/dpkg
我尝试了这里建议的所有其他解决方案,但都没有奏效。我的简单方法是从另一台具有相同版本 Ubuntu 的服务器复制一个文件夹。
如果其他人也遇到了同样的事情,希望这会有所帮助。