我最近安装了新版本的 Ubuntu LTS 12.04。我一直在使用 LTS 10.4 并保存了我的 package.list 并计划使用
$> sudo dpkg --set-selections < package.list && apt-get dselect-upgrade
Run Code Online (Sandbox Code Playgroud)
在新版本中安装相同的软件包
但是,计算机无法运行并出现错误
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?
Run Code Online (Sandbox Code Playgroud)
对此的简单答案是我是 root 还是 sudo 的成员?
$> whoami
surfer
$> groups
surfer adm cdrom sudo dip plugdev lpadmin sambashare
Run Code Online (Sandbox Code Playgroud)
简单的答案就这么多。
根据类似的帖子 无法锁定管理目录 (/var/lib/dpkg/) 是另一个使用它的进程吗? 推荐的解决方案是
$> sudo fuser -cuk /var/lib/dpkg/lock; sudo rm -f /var/lib/dpkg/lock
Run Code Online (Sandbox Code Playgroud)
执行该命令后,我的屏幕变为空白,键盘无响应,我唯一的选择是按下电源按钮并重新启动......(我原以为这是一个恶意建议,但许多其他人似乎喜欢它。 )
我试过列出任何可能正在使用的程序 /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.
Run Code Online (Sandbox Code Playgroud)
请注意,没有列出任何程序。
同样,没有运气
$> ps -e | grep -e apt -e adept | grep -v grep
Run Code Online (Sandbox Code Playgroud)
什么都没有列出。
顺便说一句,我可以从命令行运行 apt-get 。
$> sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
按预期运行并更新我的包列表...
@izx:尝试您的建议后,我无法运行
$> sudo dpkg --set-selections < package.list && apt-get dselect-upgrade
Run Code Online (Sandbox Code Playgroud)
它因相同的错误而失败。我试过这个
a)紧接着 F1 终端中的 rm 命令
b)执行 rm 命令并使用 Ctrl+Alt+F7 返回 X
c)执行 rm 命令并重新启动
仅感兴趣的选项c)产生了不同的(但类似的错误消息),它是
dpkg: error: dpkg status database is locked by another process
Run Code Online (Sandbox Code Playgroud)
虽然我无法使用/var/lib/dpkg/lockwith终止进程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
Run Code Online (Sandbox Code Playgroud)
所以我尝试从 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
Run Code Online (Sandbox Code Playgroud)
文件和链接似乎消失了,但是在执行 dpkg命令时,我得到了同样的错误......锁定文件又回来了。
我真的很困惑,并欢迎任何帮助。
ate*_*enz 10
你的第一步应该是
sudo dpkg --set-selections < package.list && sudo apt-get dselect-upgradeRun Code Online (Sandbox Code Playgroud)
以下错误
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
Run Code Online (Sandbox Code Playgroud)
本来从未发生,即使second time你使用相同的代码,并得到了同样的错误。
通过按上述添加sudo来尝试正确的命令,并发布您的发现。
注意:&&的使用使您可以在同一行上执行多个命令,在通常意义上&&仅在第一个命令返回值报告成功时才执行第二个命令。因此,这里的sudo需要在第二个命令中指定。
| 归档时间: |
|
| 查看次数: |
76766 次 |
| 最近记录: |