rpm 规范文件中的 chkconfig 命令
Posted
技术标签:
【中文标题】rpm 规范文件中的 chkconfig 命令【英文标题】:chkconfig command in rpm spec file 【发布时间】:2011-07-19 12:48:58 【问题描述】:我想在 rpm 规范文件的 %install 部分使用“chkconfig --del NetworkManager”命令。如果我包含此命令,则 rpm 构建良好,但是当我安装该 rpm 时,看起来该命令没有被执行。安装后我使用 'chkconfig --list' 命令验证并观察到服务一直在运行。
这是我正在使用的规范文件。请让我知道我出错了。
%define name disable_network-manager
%define version 1.0
%define release fc
Name: %name
Version: %version
Release: 1%?dist
Summary: Includes the script to disable Network Manager services
Group: Development/Other
License: GPL
URL: www.abcd.com
Source0: %name-%version.tar.gz
BuildRoot: %(mktemp -ud %_tmppath/%name-%version-%release-XXXXXX)
%description
sample text.
%prep
%setup -q
#%build
%install
/sbin/chkconfig --del NetworkManager
rm -rf $RPM_BUILD_ROOT
install -m 0755 -d $RPM_BUILD_ROOT/usr/bin
install -m 0755 enablenm.sh $RPM_BUILD_ROOT/usr/bin/enablenm.sh
%clean
rm -rf $RPM_BUILD_ROOT
%files
/usr/bin/enablenm.sh
【问题讨论】:
基本上我想创建一个 rpm 包,它将禁用网络管理器 (chkconfig --del NetworkMnager)。请告知正确的规范文件。 【参考方案1】:好的,知道了。我应该从 %post 部分而不是 %install 部分发出 chkconfig 命令。
【讨论】:
【参考方案2】:其实我觉得你的回答是错的……
首先,您要执行/sbin/chkconfig NetworkManager off
将其彻底关闭; --del
将其从 chkconfig
控件中删除。
其次,这只会在您下次重新启动时阻止它运行。要停止当前运行的实例,您需要调用/sbin/service NetworkManager stop
。
但是是的,%install
部分不在目标机器上运行,只在构建机器上运行。 %post
是放置我上面的两个命令的正确位置。
【讨论】:
【参考方案3】:而且你还不如依赖网络管理员提供的任何东西。
【讨论】:
如果 /etc/init.d/NetworkManager 不存在,RPM 安装/卸载将失败,此服务文件是网络管理器包的一部分,因此您的 RPM 对网络管理器有运行时依赖性包。以上是关于rpm 规范文件中的 chkconfig 命令的主要内容,如果未能解决你的问题,请参考以下文章