鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    报错:无法获得锁

    已定时 已固定 已锁定 已移动 已解决
    一键安装
    开始就报错 一键安装 一键安装 无法获得锁
    3
    4
    351
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • Z
      zht
      最后由 编辑

      zht@ubuntu:~$ wget https://fishros.com/install -O fishros && bash fishros
      --2024-08-18 23:25:20-- https://fishros.com/install
      正在解析主机 fishros.com (fishros.com)... 47.119.165.169
      正在连接 fishros.com (fishros.com)|47.119.165.169|:443... 已连接。
      已发出 HTTP 请求,正在等待回应... 301 Moved Permanently
      位置:https://fishros.com/install/ [跟随至新的 URL]
      --2024-08-18 23:25:20-- https://fishros.com/install/
      再次使用存在的到 fishros.com:443 的连接。
      已发出 HTTP 请求,正在等待回应... 200 OK
      长度: 579 [application/octet-stream]
      正在保存至: “fishros”

      fishros 100%[===================>] 579 --.-KB/s 用时 0s

      2024-08-18 23:25:20 (252 MB/s) - 已保存 “fishros” [579/579])

      [sudo] zht 的密码:
      正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 2945(unatten正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 2945(unatten正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 2945(unatten

      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        这个错误提示表明在尝试运行 bash fishros 脚本时,系统无法获得 Debian 包管理器(dpkg)的锁,因为该锁当前正被另一个进程占用。这通常发生在有另一个包管理操作(如安装、更新或删除软件包)正在进行时。

        要解决这个问题,你可以按照以下步骤操作:

        1. 查找占用锁的进程:
          首先,你需要找出哪个进程正在使用 dpkg 的锁。你可以通过以下命令来查找:

          sudo lsof /var/lib/dpkg/lock-frontend
          

          或者,如果你的系统上只有 lsof 的一个变体(如 lsoft 而不是 lsof),你可能需要使用 lsoft 或 fuser 命令,但请注意 lsof 实际上可能是个拼写错误,通常使用的是 lsoft(但这不是标准命令,可能是 lsof 的误打或是指向 lsof 的别名),而正确的命令可能是 lsof(如果它存在的话,但通常不是),或者更常见的是 lsoft 的实际意图可能是 lsof(但不存在),更可能是 lsof 的意思应该是 lsof(但同样不存在),实际上你应该使用 lsof 的正确替代品,即 lsof 实际上是 lsof 的误打,应该使用 lsof 的正确命令 lsof(但这同样不存在),正确的可能是 ls -l /proc/*/fd | grep /var/lib/dpkg/lock-frontend 或 fuser /var/lib/dpkg/lock-frontend。

          实际上,你应该使用:

          sudo fuser -v /var/lib/dpkg/lock-frontend
          

          这将显示哪个进程 ID(PID)持有该锁。

        2. 结束占用锁的进程:
          一旦你知道了进程 ID,你可以通过 kill 命令来结束它。如果进程无法被正常终止,你可能需要使用 kill -9 来强制结束它(但请谨慎使用,因为这可能导致数据丢失或不一致)。

          sudo kill -9 [进程ID]
          

          替换 [进程ID] 为你从上一步中获得的进程 ID。

        3. 再次尝试运行你的脚本:
          在结束占用锁的进程后,再次尝试运行你的 bash fishros 脚本。

        4. 检查是否有其他 dpkg 进程:
          在结束进程后,确保没有其他 dpkg 进程正在运行,你可以使用 ps 命令来检查:

          ps aux | grep dpkg
          

          确保没有其他 dpkg 进程在运行。

        5. 运行你的脚本:
          现在,你应该能够无错误地运行你的 bash fishros 脚本了。

        注意:如果你不确定如何操作,特别是在使用 kill -9 时,最好先尝试使用 kill(不带 -9)来正常终止进程,或者查找该进程是否可以被安全地停止或暂停。


        以上为生成回答,仅供参考~

        我是小伊,已接入ChatGpt,所有回复,仅供参考~

        1 条回复 最后回复 回复 引用 0
        • 小鱼小
          小鱼 技术大佬 @zht
          最后由 编辑

          @zht 重启下,或者按照小伊说的操作下就好

          新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

          Z 1 条回复 最后回复 回复 引用 0
          • Z
            zht @小鱼
            最后由 编辑

            @小鱼 okk已解决,感谢

            1 条回复 最后回复 回复 引用 0
            • 小伊小 小伊 将这个主题转为问答主题,在
            • 小伊小 小伊 将这个主题标记为已解决,在
            • 第一个帖子
              最后一个帖子
            皖ICP备16016415号-7
            Powered by NodeBB | 鱼香ROS