首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要在rpm删除/升级之前停止initv服务吗?

需要在rpm删除/升级之前停止initv服务吗?
EN

Unix & Linux用户
提问于 2018-03-15 18:48:41
回答 1查看 1.6K关注 0票数 1

在执行服务RPM包的删除或升级之前,是否需要停止服务?

通常,RPM包管理器在执行升级时所做的工作是先安装新包,然后删除旧包。节选:

代码语言:javascript
复制
Run %pre from "software-2".
Place files from "software-2".
Run %post from "software-2".
Run %preun from "software-1".
Delete files unique to "software-1".
Run %postun from "software-1".

在这种情况下,在安装新包之前,不应该在%预置中停止服务吗?

以下是我的部分规格文件供参考:

代码语言:javascript
复制
%preun
# do not run if this is an upgrade
if [ $1 -eq 0 ]; then
  /sbin/service myservice stop > /dev/null 2>&1
  /sbin/chkconfig --del /etc/init.d/myservice
fi
exit 0

%post
/sbin/chkconfig --add /etc/init.d/myservice
exit 0

我所拥有的是每个人似乎都在做的事情,我不明白为什么在升级的情况下,在没有在%pre中先停止服务的情况下,这是可行的。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-03-15 23:19:18

您已经忘记了UNIX文件系统是如何工作的。只要链接加载器保持对象文件处于打开状态,进程就会看到它启动时使用的对象文件,因为它持有现在删除的文件的句柄。一旦这个句柄被关闭()ed,那么文件实际上就被删除了。因此,在删除和安装新的对象文件时,保持守护进程运行是安全的。

当然,运行的是守护进程的旧版本,所以如果升级是为了解决安全问题,那么“安全”就不那么安全了。这就是为什么Debian的APT有不同的策略,在升级时停止/启动守护进程。

如果您想要更改包的策略,您可能会发现RPM上的规格说明很有用。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/430461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档