La *_*tra 1124 package-management apt dpkg
尝试使用时出现此错误apt-get
:
E: Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/) is another process using it?
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
zur*_*rdo 932
您可以使用以下命令删除锁定文件:
sudo rm /var/lib/apt/lists/lock
Run Code Online (Sandbox Code Playgroud)
您可能还需要删除缓存目录中的锁定文件
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
Run Code Online (Sandbox Code Playgroud)
之后,再次尝试打开 Synaptic。
Fah*_*tha 728
我看到几乎所有的答案都建议删除锁。我不建议将其作为首要措施;也许如果没有其他选择。该锁在 apt 进程运行时放置,并在进程完成时移除。如果有一个没有明显进程运行的锁,这可能意味着进程由于某种原因卡住了。
如果你试试
ps aux | grep [a]pt
Run Code Online (Sandbox Code Playgroud)
或者
pgrep -a apt
Run Code Online (Sandbox Code Playgroud)
apt
至少会捕获包含单词的进程。如果您看到一个apt-get
进程或一个aptitude
看起来卡住的进程,您可以尝试
sudo kill processnumber
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,请尝试
sudo kill -9 processnumber
Run Code Online (Sandbox Code Playgroud)
这应该会终止进程并可能会移除锁。杀死apt
oraptitude
进程是无害的,除非它实际上是在软件包安装过程中。无论如何,如果进程卡住了,您可能别无选择,只能杀死它。
dpkg
直接杀死一个进程,如果存在的话,不是一个好主意,因为如果dpkg
是活跃的,它很可能正在操纵包数据库,而杀死它可能会使包数据库处于不一致的状态;即损坏。
杀死一个apt-get
oraptitude
进程通常更安全。
Bru*_*ira 232
删除您的/var/lib/dpkg/lock
文件并强制重新配置包。
sudo rm /var/lib/dpkg/lock
sudo dpkg --configure -a
Run Code Online (Sandbox Code Playgroud)
在此之后它应该可以工作。
poo*_*lie 115
最有可能的方法是:
sudo apt-get install whatever
并且命令行apt
与update-manager
自动轮询重叠。
因此,如果您在几分钟内再次尝试应该可以修复它。
Mar*_*mo- 109
如果您sudo
在执行 apt 命令时忘记使用,您将收到此消息。
否则,这表明其他东西正在安装或删除软件,并在执行操作时锁定了 apt 数据库。可以做到这一点的程序是:
重要提示:只能尝试以下作为最后的手段,因为它可能会使您的系统崩溃。首先尝试按照Faheem 的回答中所述杀死apt
或 的任何正在运行的实例。aptitude
您可以通过删除文件来强制关闭锁定,但不建议先关闭安全持有锁定的程序,因为这可能会导致损坏或中断安装(坏)。João 提供的命令应该关闭持有锁的程序,然后移除锁,但不会保护您免受安装中断:
sudo fuser -cuk /var/lib/dpkg/lock; sudo rm -f /var/lib/dpkg/lock
Run Code Online (Sandbox Code Playgroud)
同样的命令可以用于 apt 缓存锁:
sudo fuser -cuk /var/cache/apt/archives/lock; sudo rm -f /var/cache/apt/archives/lock
Run Code Online (Sandbox Code Playgroud)
kar*_*k87 53
只有一个程序可以持有锁。确保您没有运行 aptitude、synaptic 或 adept。关闭程序并再次运行它应该可以工作。您可以打开突触,或者打开另一个终端窗口运行 apt-get,或者运行更新管理器。检查它并查看是否有任何正在运行,如果有的话他们正在运行关闭它并重试。
在终端中尝试此命令以查找正在运行的内容
ps -e | grep -e apt -e adept | grep -v grep
Run Code Online (Sandbox Code Playgroud)
注意:
如果没有打印任何内容,请在终端中键入以下内容以解除锁定
sudo rm /var/lib/dpkg/lock
sudo rm /var/cache/apt/archives/lock
Run Code Online (Sandbox Code Playgroud)
现在您可以安装任何软件包。
Jai*_*lee 50
到目前为止,在不破坏可能的后台运行安装的情况下使其正常工作的最佳方法是使用 apt 停止服务:
错误:
# sudo apt-get upgrade
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?`
Run Code Online (Sandbox Code Playgroud)
解决方案:
sudo systemctl stop apt-daily.timer
Run Code Online (Sandbox Code Playgroud)
升级系统后,我建议重新启用它,因为锁定它的错误可以通过升级修复。
sudo systemctl start apt-daily.timer
我还没有验证这个错误在升级后得到修复。我将在验证后添加新评论
Rav*_*ina 34
首先,我们应该检查哪个进程使用lsof
以下命令创建了锁定文件:
sudo lsof /var/lib/dpkg/lock
Run Code Online (Sandbox Code Playgroud)
或在其他/var/lib/apt/lists/lock
有问题的情况下:
sudo lsof /var/lib/apt/lists/lock
Run Code Online (Sandbox Code Playgroud)
输出将接近于:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apt-get 12127 root 4uW REG 252,1 0 86 /var/lib/apt/lists/lock
Run Code Online (Sandbox Code Playgroud)
然后,我们应该检查一下commad在做,我们可以发现它用ps
,pgrep
等等; 命令是apt-get
这样我运行:
pgrep apt-get -a
Run Code Online (Sandbox Code Playgroud)
该-a
开关列出了完整的命令对我来说,在我的情况是:
pgrep -a apt-get
12127 apt-get update
Run Code Online (Sandbox Code Playgroud)
我们可以看到它正在运行update
子命令,我也可以运行这样的东西:
ps -f 12127
Run Code Online (Sandbox Code Playgroud)
它产生:
UID PID PPID C STIME TTY STAT TIME CMD
root 12127 12126 0 09:39 pts/0 S+ 0:00 apt-get update
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我会等待一分钟以释放资源,如果 2 或 3 分钟后问题仍然存在,或者命令是我不关心或对系统无害的东西(像这样apt-get update
),我会发送一个SIGTERM
给过程:
sudo kill -15 12127
Run Code Online (Sandbox Code Playgroud)
它应该可以完成工作,如果没有,我SIGINT
这次要发送(就像按CTRL+ C):
sudo kill -2 12127
Run Code Online (Sandbox Code Playgroud)
如果它也不起作用,我们应该发送一个SIGHUP
( kill -1
),最后如果没有任何作用,我只是终止进程:
sudo kill -9 12127
Run Code Online (Sandbox Code Playgroud)
或者
sudo pkill -9 apt-get
Run Code Online (Sandbox Code Playgroud)
然后我删除繁忙的资源:
sudo rm /var/lib/apt/lists/lock
Run Code Online (Sandbox Code Playgroud)
Cav*_*vaz 22
此错误可能是由于 Update Manager 尝试在后台自动刷新软件包列表(通常是在您登录后立即刷新)导致的,从而锁定了目录。
在这种情况下,只需等待几秒钟(或更多,如果您的上次更新是很久以前)让它完成或启动更新管理器来检查状态。
小智 17
不要那么快删除某些东西,它可能会完全损坏您的系统;而是等到当前安装或卸载程序完成其任务,然后您将获得访问权限。如果您认为当前没有安装或卸载任何内容,那么只需使用命令重新启动系统sudo reboot
。
小智 16
如果您让“更新管理器”并行运行以进行任何更新检查或在安装过程中安装锁定,则会发生这种情况。如果您在没有运行“更新管理器”的情况下遇到相同的错误,则必须将其从 中删除/var/lib/dgkg/lock
,这绝对是您无法手动执行的
sudo fuser -cuk /var/lib/dpkg/lock
sudo rm -f /var/lib/dpkg/lock
Run Code Online (Sandbox Code Playgroud)
工作正常。摘自:https : //askubuntu.com/a/15469/68707
我已经多次遇到过这个问题。对我来说,这几乎总是由 apt-get 或某些 GUI 引起的,由于某种原因,它被称为挂起。我不得不杀死它,留下了各种锁。
其他答案提出了非常好的观点,即在执行诸如删除锁定文件之类的剧烈操作之前,确保当前没有运行任何更新。然而,一旦你确定情况并非如此,以下通常对我有用。我是通过阅读许多类似问题的答案才得到这一点的。
虽然大部分或全部内容都在其他答案中提供,但这将修复简化为几个命令。
sudo fuser -vki /var/lib/dpkg/lock
sudo fuser -vki /var/cache/apt/archives/lock
sudo fuser -vki /var/cache/debconf/config.dat
sudo dpkg --configure -a
Run Code Online (Sandbox Code Playgroud)
用于在某种更新崩溃或终止而未以其他方式完成后解锁软件包系统。这些命令应按所提供的顺序运行。
归档时间: |
|
查看次数: |
3477249 次 |
最近记录: |