无法打开锁定文件 /var/lib/dpkg/lock 权限被拒绝 - 即使使用 sudo

无法打开锁定文件 /var/lib/dpkg/lock 权限被拒绝 - 即使使用 sudo

我最近安装了新版本的 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 的服务器复制一个文件夹。

如果其他人也遇到了同样的事情,希望这会有所帮助。

相关内容