出现原因: yum 命令一次只能安装一个软件,所以当下载安装第二个软件包时,系统进程锁会锁定 yum ,这时,即使关闭进程甚至关闭虚拟机重启后,再执行 yum 命令还是会出现同样情况。
解决方法: 需要在 root 用户下,强制采用 rm -f /var/run/yum.pid 命令关闭 yum 进程
rm -f /var/run/yum.pid ————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接: https://blog.csdn.net/weixin_44589991/article/details/114917045
为甚麽按 ctrl+c 跟 ctrl+z ,无法解除 yum 进程锁定? 而一定要利用 rm 删除某个档案,有甚么方法可避免 yum 进程锁定的发生?
1
jdxia 247 天前
你这样删掉的话, 那 2 个 yum 进程同时修改一个软件包的话怎么办?
|
2
vcn8yjOogEL 247 天前
目前没有支持并行安装的非容器包管理器吧, dpkg 也会上锁的, 一次指定所有包让它一个一个装就可以了
|
3
yanqiyu 247 天前
> 为甚麽按 ctrl+c 跟 ctrl+z ,无法解除 yum 进程锁定
理论上 yum 退出会正确的清理 pid 文件才对(但是是 sigkill/断电/crash 掉了的情况 yum 肯定没机会清理),就算没能清理,下一个 yum 启动的时候也会检查对应的 pid 是否是正在运行的进程,如果 pid 对应正在运行的进程就会等它退出。 所以出问题的情况就是 yum 没正常退出导致 pid 文件没清理( bug ),然后 pid 文件记载的 pid 恰好被别的进程用了,判断逻辑搞不清楚究竟是不是有正在进行的事务于是放弃了(巧合)。 > 有甚么方法可避免 yum 进程锁定的发生? 改源码,做掉整个 lock 机制然后责任自负(同时两个包管理同时跑可能把系统或者包管理元数据搞坏,这个 lock 就是保证用户不能这么干) 或者给它改成用 flock 这样的机制来锁,这样子就会避免 pid 回收/恰好重启后 pid 被用了的巧合 其实我很好奇为什么 yum 不一开始就用 flock 之类的东西来做锁... |
4
hai046 247 天前
我以前刚接触 centos 时候干过,看人家 bolg yum 更新了 core ,然后我强制停止,我也这样操作,后来在重写安装其他的,但是悲哀的是前面安装一般导致版本冲突,把系统搞崩溃了 😄
yum 设计就是单独更新,避免冲突的 |
5
wangkun025 247 天前 1
我也觉得锁定是有原因,从未考虑过解除这个限制。
|
6
Still4 247 天前
这其实并不能算作一个问题吧,系统设计成线性更新,我猜是防止安装不同包依赖了相同库的不同版本产生问题,当你尝试突破限制非要同时更新两个包,是系统的问题还是使用者的问题呢
至于为什么重启无法解锁,删除 pid 文件反而能解锁,可能是因为有其他锁的存在,删除 pid 可能会触发移除锁,而重启不会触发,猜的对不对要看源码才知道了 |
7
fuis 247 天前
yum 这种连 sigint 都处理不好的软件就不要用了吧,用 dnf 好了。关于加锁的问题,几乎每一个软体包管理都需要这个机制。
|
8
Still4 247 天前
按理说安装过程中 ctrl + c ,肯定是允许取消安装的,锁是需要释放的,如果不会释放那就是设计问题了
|
9
yanqiyu 247 天前
|
10
Dffcc OP 我是小白,都听不太懂,建议要补强哪边的知识点?
|
11
GooMS 247 天前
file lock
|
12
cnbatch 247 天前
不知道是不是旧版系统的 bug ,至少最新版 Fedora 不存在这种事,随时可以中断,中断后锁自动释放。
最保险的做法应当是一次性安装需要的软件包,或者等到上一个 yum 完成了再运行下一个 yum 。 |
13
sky96111 247 天前 via Android
@cnbatch Fedora 的 yum 是 dnf 的别名。ctrl+c 是可以正常释放锁的,ctrl+z 是挂起而不是终止,所以锁不会释放。
我没有接触过太老的 yum ,猜测可能 yum 不能很好地处理 sigint 导致终止锁不释放? 现实中遇到的非正常锁定都是使用者习惯不佳导致的(安装更新时强制关机、更新卡住时按 ctrl+z 而不是 ctrl+c ) |
14
lasuar 247 天前
有点类似并发控制。解除后,如果两个安装线程同时修改了同一个目录, 甚至修改同一个文件,这就可能出现文件系统的报错,或者不报错但把文件改坏了(这就不好恢复了,因为你不知道原来长啥样),改坏文件可能导致一些原本内置的软件或工具无法正常运行,进而可能导致系统不稳定,比起这种严重的后果,不如限制同一时间只能执行一个安装操作。
|
15
hefish 247 天前
估计是老版本的 centos 或者 fedora ,OP 也没讲,所以是盲猜。
|
17
hefish 246 天前
估计还开了图形界面吧。。。
|
19
julyclyde 243 天前
你要是问“为什么 ctrl+C 无法”还算有点道理
但是居然“为什么 ctrl+z 无法”这种问题你都问的出来? |
20
Dffcc OP @sky96111 不懂这个地方,安装更新时强制关机、更新卡住时按 ctrl+z ,ctrl z 应该是暂停,这种时候应该要按 ctrl c?
|