如何解决“请注意,删除锁定文件不是解决方案,可能会破坏您的系统”?

Jam*_*tes 9 apt sudo

我做了:

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

我懂了:

Reading package lists... Done
E: Could not get lock /var/lib/apt/lists/lock. It is held by process 1131 (packagekitd)

N: Be aware that removing the lock file is not a solution and may break your system.

E: Unable to lock directory /var/lib/apt/lists/
Run Code Online (Sandbox Code Playgroud)

我曾经只是删除锁定文件,但我以前从未见过该注释(它是否破坏了我的系统?)?

我该怎么办?

Arc*_*ahi 19

只有当您确定没有正在进行的软件安装或更新时,才重新启动计算机,锁定将被解除。请注意,在运行更新期间重新启动计算机可能会破坏您的系统。

如果重新启动没有帮助:尝试重新启动packagekit服务。重启的终端命令packagekit是:

sudo service packagekit restart
Run Code Online (Sandbox Code Playgroud)

更多详细信息 - 这意味着dpkg(或apt) 要么被中断,要么仍在后台运行。

如果您正在更新或安装某些软件,请等待完成。正如评论中提到的,packagekitd 的使用表明 GUI 前端确实正在运行更新或检查更新。

手动删除锁文件是不安全的,其他答案解释了如何安全地做到这一点。重新启动计算机会自动删除旧的锁定文件,这是摆脱该问题的最简单方法之一。

  • Apt 不是为了被中断而设计的。这样做可能会在您的系统上同时安装两组不兼容的软件包。这将使您的系统不稳定、容易崩溃,有时甚至无法启动。 (12认同)

Sti*_*mer 7

锁定文件是由process 1131 (packagekitd). 创建它是为了使该进程可以对包系统进行更改,而不必担心其他程序同时进行其他更改。

如果删除锁定文件,则可以让另一个进程(例如 )apt-getpackagekitd. 由于没有锁定文件,apt-get还将假定它是进行更改的唯一进程。

结果可能是一个进程所做的某些更改可能会被另一个进程覆盖。最终结果将是两个更改集的某种随机混合,这可能会导致系统崩溃。

这是可能的写程序,使他们能够在同一时间工作,而踩着对方的脚趾,但它是困难的,可以给一些真正不明显的错误。这个包系统的作者认为最好只制作一个全局锁文件。这简单而强大,但对多任务处理者不太友好。

现在,所有这些都假设packagekitd仍在运行和做事。如果这个进程实际上在没有删除锁文件的情况下崩溃了,情况就不同了。

可能已经离开了系统中的“半途而废”的状态,但包装系统设计,检测,并从该恢复。(这更容易)

重新启动是确保packagekitd不再运行的一种非常严厉的方式。在启动期间,旧的锁定文件将被删除,因为它们不再相关。

如果您 100% 确定进程已崩溃,则无需重新启动即可删除锁定文件。使用ps检查过程1131仍然存在。

如果您相当确定该过程以某种方式卡住并且永远不会结束,那么您可以kill安全地进行。如果您认为它可能按预期工作,但只是在不方便的时候,最好等到它完成。如果这是不可能的,您仍然可以安全地杀死它。


归档时间:

查看次数:

7798 次

最近记录:

4 年,8 月 前