AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 15433
In Process
La Ode Adam Saputra
La Ode Adam Saputra
Asked: 2010-11-30 18:12:48 +0800 CST2010-11-30 18:12:48 +0800 CST 2010-11-30 18:12:48 +0800 CST

无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

  • 772

尝试使用时出现此错误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?  

我怎样才能解决这个问题?

package-management dpkg apt
  • 25 25 个回答
  • 3554400 Views

25 个回答

  • Voted
  1. zurdo
    2012-02-07T18:22:32+08:002012-02-07T18:22:32+08:00

    这应该作为最后的手段。如果您不小心使用它,您最终可能会导致系统损坏。在执行此操作之前,请先尝试其他 答案。

    您可以使用以下命令删除锁定文件:

    sudo rm /var/lib/apt/lists/lock
    

    您可能还需要删除缓存目录中的锁定文件

    sudo rm /var/cache/apt/archives/lock
    sudo rm /var/lib/dpkg/lock
    

    之后,尝试再次打开 Synaptic。

    • 945
  2. Faheem Mitha
    2013-07-04T01:01:58+08:002013-07-04T01:01:58+08:00

    (注意:我的原始答案由主要dpkg开发人员Guillem Jover 广泛编辑。)

    我看到几乎所有的答案都建议删除锁。永远不要这样做,总是最好杀死(应该dpkg是对那种事件有弹性),而不是考虑删除它的锁文件(它的存在并不表示锁被持有)。当一个dpkg或一个apt进程正在运行时获取锁,并在进程完成或被终止时释放(如果需要,由内核)。较新dpkg的apt版本将打印持有竞争锁文件的进程的 PID,apt现在甚至默认等待锁被释放。这在dpkg FAQ中有介绍。

    如果你试试:

    sudo fuser -vik -TERM /var/lib/dpkg/lock /var/lib/dpkg/lock-frontend /var/lib/apt/lists/lock
    sudo dpkg --configure --pending
    

    这将提示终止当前持有这些锁文件的任何进程,一旦被杀死,锁就会被释放。如果您看到一个apt-get进程或一个aptitude看起来卡住的进程,杀死它们应该比打包系统处于软件包安装过程中时的危害要小。如果进程真的被卡住并且您别无选择,您可能需要通过传递-KILL而不是-TERM. 然后,您需要完成任何挂起的配置,以便使dpkg它们进入更好的状态,并且它还可以将其日志的更新集成到主状态数据库。

    直接杀死dpkg进程(如果存在)通常不是一个好主意,因为如果dpkg处于活动状态,某些维护者脚本可能正在执行对突然终止(或崩溃)没有弹性的操作,但 dpkg 内部应该对这种突然终止有弹性,并且最好这样做,而不是删除任何锁定文件,因为这更有可能损坏dpkg数据库和文件系统。

    杀死诸如apt-get或aptitude进程之类的前端虽然并不理想,但通常更安全。

    • 745
  3. Bruno Pereira
    2012-01-30T03:27:50+08:002012-01-30T03:27:50+08:00

    删除您的/var/lib/dpkg/lock文件并强制重新配置包。

    sudo rm /var/lib/dpkg/lock
    sudo dpkg --configure -a
    

    它应该在此之后工作。

    • 237
  4. poolie
    2010-11-30T19:08:13+08:002010-11-30T19:08:13+08:00

    最有可能的方法是:

    • 启动 Ubuntu
    • 启动终端
    • 类型sudo apt-get install whatever

    并且命令行与自动轮询apt重叠。update-manager

    因此,如果您在几分钟后重试,应该可以解决它。

    • 118
  5. Martin Owens -doctormo-
    2010-11-30T18:17:07+08:002010-11-30T18:17:07+08:00

    sudo如果您在执行 apt 命令时忘记使用,您将收到此消息。

    否则,这表明其他东西正在安装或删除软件,并在执行操作时锁定了 apt 数据库。可以做到这一点的程序是:

    • 软件中心
    • 更新管理器
    • apt 链接安装程序(我认为现在通过 SC)
    • apt-get 或 aptitude 命令行实用程序。
    • 突触包管理器

    重要提示:仅在不得已的情况下尝试以下方法,因为它可能会使您的系统崩溃。首先尝试杀死任何正在运行的实例apt或aptitude如Faheem 的回答中所述。

    您可以通过删除文件来强制关闭锁定,但不建议先关闭安全持有锁定的程序,因为您可能会导致损坏或中断安装(坏)。João 提供的命令应该关闭持有锁的程序,然后移除锁,但不会保护您免受安装中断:

    sudo fuser -cuk /var/lib/dpkg/lock; sudo rm -f /var/lib/dpkg/lock   
    

    相同的命令可用于 apt 缓存锁:

    sudo fuser -cuk /var/cache/apt/archives/lock; sudo rm -f /var/cache/apt/archives/lock
    
    • 111
  6. karthick87
    2010-11-30T20:55:51+08:002010-11-30T20:55:51+08:00

    只有一个程序可以持有锁。确保您没有运行 aptitude、synaptic 或 adept。关闭程序并再次运行它应该可以工作。您可能打开了突触,或者打开了另一个运行 apt-get 的终端窗口,或者运行了更新管理器。检查它并查看其中是否有任何正在运行,如果有的话他们正在运行关闭它并重试。

    在终端中尝试此命令以查找正在运行的内容

    ps -e | grep -e apt -e adept | grep -v grep
    

    注意:
    如果没有打印任何内容,请在终端中键入以下内容以解除锁定

    sudo rm /var/lib/dpkg/lock    
    sudo rm /var/cache/apt/archives/lock
    

    现在您可以安装任何软件包。

    • 53
  7. Jairelee
    2017-02-03T02:01:40+08:002017-02-03T02:01:40+08:00

    到目前为止,在不破坏可能的后台运行安装(因为它可能通过删除锁定文件而发生)的情况下使其正常工作的最佳方法是使用 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?`
    

    解决方案:

    sudo systemctl stop apt-daily.timer
    

    升级系统后,我建议重新启用它,因为锁定它的错误可以通过升级修复。

    sudo systemctl start apt-daily.timer

    我尚未验证此错误在升级后得到修复。验证后我会添加一条新评论

    • 52
  8. Ravexina
    2017-04-24T23:29:06+08:002017-04-24T23:29:06+08:00

    首先,我们应该检查使用哪个进程创建了锁定文件lsof:

    sudo lsof /var/lib/dpkg/lock
    

    或在其他/var/lib/apt/lists/lock有问题的情况下:

    sudo lsof /var/lib/apt/lists/lock
    

    输出将接近于:

    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
    

    然后我们应该检查 commad 在做什么,我们可以使用 等找到ps它pgrep;命令是apt-get这样我运行:

    pgrep apt-get -a
    

    开关为我列出了完整的-a命令,在我的例子中是:

     pgrep -a apt-get
     12127 apt-get update
    

    我们可以看到它正在运行update子命令,我也可以运行这样的东西:

    ps -f 12127
    

    产生:

    UID        PID  PPID  C STIME TTY      STAT   TIME CMD
    root     12127 12126  0 09:39 pts/0    S+     0:00 apt-get update
    

    在这种情况下,我会等待一分钟以释放资源,如果 2 或 3 分钟后问题仍然存在,或者命令是我不关心或对系统无害的东西(像这样apt-get update),我发送一个SIGTERM到过程:

    sudo kill -15 12127
    

    它应该可以完成工作,如果没有,我SIGINT这次要发送(就像按CTRL+一样C):

    sudo kill -2 12127
    

    如果它也不起作用,我们应该发送一个SIGHUP( kill -1),最后如果不起作用,我就简单地终止该进程:

    sudo kill -9 12127
    

    或者

    sudo pkill -9 apt-get
    

    然后我删除繁忙的资源:

    sudo rm /var/lib/apt/lists/lock
    
    • 34
  9. Cavaz
    2013-10-05T04:39:50+08:002013-10-05T04:39:50+08:00

    此错误可能是由于更新管理器试图在后台自动刷新软件包列表,通常在您登录后立即刷新,从而锁定目录。

    在这种情况下,只需等待几秒钟(或更多,如果您的上一次更新是很久以前)就可以完成或启动更新管理器来检查状态。

    • 23
  10. Wessi
    2015-01-16T01:54:05+08:002015-01-16T01:54:05+08:00

    不要太快删除某些东西,它可能会完全损坏您的系统;而是等到当前安装或卸载程序完成其任务,然后您将获得访问权限。如果您认为当前没有安装或卸载任何内容,则只需使用命令重新启动系统sudo reboot。

    • 19

相关问题

  • 如何从命令行仅安装安全更新?关于如何管理更新的一些提示

  • 如何从命令行判断机器是否需要重新启动?

  • 有没有办法重置所有包/源并从头开始?

  • 如何回滚到 PHP 5.2?

  • 包管理器之间有什么区别?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve