ARTICLE · 1225984
麒麟软件卸不掉、apt 老报错?大概率是锁没放
在银河麒麟桌面版上卸软件,十个人有八个撞过这样的墙:
sudo apt remove xxx 敲下去,终端刷一堆红字,要么卡住不动,要么报"无法获得锁",折腾几轮之后,软件没卸掉,连带整个 apt 都不能用了。
这篇按现象 → 根源 → 五步救援的顺序讲一遍,最后补几个新手最容易踩的坑。命令都能直接复制。
一、先分清:你的麒麟到底用 apt 还是 yum
这是新手第一坑,比 apt 报错本身还坑。
银河麒麟其实是一大家子,底层分两系:
| 桌面版 | sudo apt remove xxx | |
| 服务器版 | sudo yum remove xxx |
判断方法就一条命令:
cat /etc/os-release
看输出里有没有 ID=kylin 旁边的 ID_LIKE:
写着 debian→ 用 apt,看这篇写着 rhel/fedora/centos→ 用 yum,看我第 22 篇
用错了体系,命令再对也是白忙。 先确认这一步,能少走一半弯路。
二、卡死长什么样
卸载时出现下面任意一种,就是这篇文章要治的病:
锁报错: E: Could not get lock /var/lib/dpkg/lock-frontend,命令直接退出脚本失败: 子进程 已安装 post-installation 脚本 返回错误状态 1状态异常:提示软件包处于"极其糟糕的不一致状态",或卡在 half-installed/half-configured依赖阻断: 有未能满足的依赖关系,卸载被依赖检查拦下最糟的情况:卸载卡死,软件残留,之后所有 apt 操作全部失效
三、为什么会卡:三个根源
把报错翻到底,本质就三件事:
锁没释放。上一次 apt/dpkg 被中断(断电、强按 Ctrl+C、后台自动更新抢了先),锁文件留着,新进程拿不到锁,直接罢工 维护脚本失败。dpkg 卸载前后要跑脚本,脚本引用的文件没了、或者自己有 bug 返回非 0,dpkg 就判定"卸载失败" 状态库紊乱。包卡在"装了一半""配置了一半"的状态,或者 /var/lib/dpkg/status这个总账本里某段记录坏了
记住排障总原则:先解锁、修依赖、补配置,实在不行才上 --force-* 强制命令。强制命令会绕过安全检查,用之前务必备份。
四、五步救援(从轻到重,多数在第 1、2 步就好)
第 1 步:锁被占(最常见,先做这个)
先确认没有 apt 进程还在跑——别跳过这步,原因见后面坑 4:
ps aux | grep -i apt
sudo lsof /var/lib/dpkg/lock* 2>/dev/null
确认没进程占着,再删残留锁:
sudo rm -f /var/lib/dpkg/lock
sudo rm -f /var/lib/dpkg/lock-frontend
sudo rm -f /var/cache/apt/archives/lock
然后补完上次没做完的事:
sudo dpkg --configure -a
这条命令的意思是"把所有装了一半的包配置完"。新手记住它,它能救 80% 的 apt 卡死。
第 2 步:修依赖
sudo apt-get install -f
sudo dpkg --configure -a
sudo apt remove 软件包名
第 3 步:维护脚本修不动,强制移除
脚本坏了自己修不动时(脚本一般在 /var/lib/dpkg/info/软件包名.postrm):
sudo dpkg --remove --force-remove-reinstreq 软件包名
要连配置文件一起清干净:
sudo dpkg --purge --force-all 软件包名
提醒:--force-all 绕过几乎所有检查,是最后手段。用之前先确认这个包真的不需要了。
第 4 步:总账本坏了,手工修 status
先备份(这步不能省):
sudo cp /var/lib/dpkg/status /var/lib/dpkg/status.bak
然后用编辑器打开 /var/lib/dpkg/status,找到坏掉的软件包段落——从 Package: 软件包名 那行起,到下一个空行为止——整段删掉,保存后再跑:
sudo dpkg --remove --force-remove-reinstreq 软件包名
第 5 步:磁盘满了 / 根分区只读
df -h
mount | grep " / "
sudo mount -o remount,rw /
空间不够就先清 /var/cache/apt/archives/ 里的安装包缓存。
通用顺序记这一条:确认无进程 → 删锁 → dpkg --configure -a → apt-get install -f → 强制移除 → 实在不行才动 status。全程备份。
五、新手最容易踩的 4 个坑(重点看这段)
前面是通用流程,下面这几个坑是我和身边同事真实踩过的,教程里一般不写。
坑 1:图形商店卸载失败,其实和终端是同一个锁
很多人在"软件商店"里点卸载,转半天圈失败,就以为系统坏了。
其实商店后台调的就是同一套 apt/dpkg,商店卡住 = 锁被占。这时候别反复点商店,开个终端跑第 1 步,把锁清了、dpkg --configure -a 一跑,商店那边往往立刻就通了。
坑 2:remove 卸不干净,重装还是老毛病
apt remove 只删程序,配置文件全留着。
于是出现怪事:软件卸了重装,老配置、老报错原样回来,怀疑自己没卸干净,其实是配置阴魂不散。
想真卸干净用 purge:
sudo apt purge 软件包名
一句话记住:remove 是搬家,purge 是连房本一起注销。
坑 3:卸载完不跑 autoremove,孤儿包越积越多
卸掉一个软件,它专属的依赖包就成了"孤儿",还赖在系统里占地方。定期跑一句:
sudo apt autoremove
它会把没人用的依赖包清掉。注意看清它列的清单再按 y——如果你手动装过某个库自用,先记下名字,别让它顺手带走了。
坑 4:锁文件不能无脑删
网上教程都说"删锁就行",但删锁前必须确认没有 apt 进程在跑。
真实场景:后台正在自动更新安全补丁,你不知道,直接 rm 掉锁文件,然后又同时开了一个 apt 操作——两个进程同时写状态库,包管理直接乱套,比原来难修十倍。
所以顺序必须是:先 ps aux | grep -i apt,确认干净,再删锁。
坑 5:断电是 apt 卡死的第一大来源
运维机房里 apt 卡死,一问时间线,十个里六个之前断过电或强按过电源。
装到一半断电,dpkg 状态库里留下"半成品"记录,下次任何 apt 操作都先卡在这。所以:
关机用 shutdown,别直接按电源断电恢复后第一件事跑一句 sudo dpkg --configure -a,把半成品补完,别等它发作
最后
apt 卡死不可怕,可怕的是不知道它为什么卡,盲目 --force-all 一顿乱锤,把状态库锤坏。
记住救援五步的顺序,从轻到重,多数在第 1、2 步就结束了。
你在麒麟上卸载软件还遇到过什么报错?评论区贴出来,我挑典型的写成续篇。
下一篇讲《这些 apt 报错,一眼就能看出问题在哪》,关注「一只羊洋」,别错过。















































































