之前折腾 Ubuntu 24.04 升级到 26.04,经常碰到 apt 报错:Could not get lock /var/lib/dpkg/lock-frontend。很多网上教程上来就让直接删锁文件,操作不当很容易把 dpkg 搞崩,我踩过坑,这里分享一套稳妥有效的排查顺序,从简单到激进,优先不删文件。
出现这个报错本质就是:有另一个 apt、dpkg 进程正在运行,系统加了锁防止多个包管理器同时操作损坏数据库。Ubuntu 桌面版最常见的就是后台软件更新程序、更新通知悄悄在跑,很多时候你都没注意。
第一步先看有没有正在运行的 apt 相关进程,打开终端输入
ps aux | grep apt
看输出里有没有 apt、apt-get、dpkg 进程,如果有,正常等待它跑完就行。如果确认进程卡死,先尝试温和终止,用 kill 命令,优先用 15 信号,不要直接 – 9。
kill 进程号
等一会再重新执行 apt 命令。如果杀不掉,再用强制终止
kill -9 进程号
进程处理完之后,再检查 dpkg 是否被中断导致状态异常,执行修复命令,这个步骤很关键,很多人跳过直接删锁文件,最后包管理器坏掉。
sudo dpkg --configure -a
这条命令会修复被打断的软件安装任务,等待执行完成,没有报错再往下。
上面两步做完还不行,才考虑删除锁文件。注意:一定要确认没有 apt/dpkg 进程在运行,再删锁!
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/dpkg/lock
sudo rm /var/cache/apt/archives/lock
删除完成之后,再次执行 dpkg 配置修复,再更新软件列表
sudo dpkg --configure -a
sudo apt update
正常情况下锁报错就消失了。
补充几个 Ubuntu 桌面用户高频踩坑点:软件更新器、GNOME 的自动更新服务会后台占用 apt 锁。如果你经常遇到这个问题,可以临时关掉自动更新,或者等系统后台更新完成再手动执行 apt。另外不要同时开多个终端执行 apt、apt-get,这也是触发锁冲突的主要原因。
还有一种少见情况,系统开机自动执行 unattended-upgrades 自动更新,这时候手动 apt 一定会报锁。可以查看自动更新状态:
systemctl status unattended-upgrades
如果正在运行,耐心等待自动更新结束,不要强行杀进程。
重要提醒:锁文件是系统保护机制,删除锁属于兜底操作,优先排查进程,不要一上来就 rm 锁文件,一旦 dpkg 正在写入数据时删除锁,会造成软件包数据库损坏,修复起来更麻烦。这套方法实测在 Ubuntu24.04、24.10、26.04 都可以正常使用。