【问题标题】:chkconfig command in rpm spec filerpm 规范文件中的 chkconfig 命令
【发布时间】: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)。请告知正确的规范文件。

标签: rpm rpmbuild


【解决方案1】:

好的,知道了。我应该从 %post 部分而不是 %install 部分发出 chkconfig 命令。

【讨论】:

    【解决方案2】:

    其实我觉得你的回答是错的……

    首先,您要执行/sbin/chkconfig NetworkManager off 将其彻底关闭; --del 将其从 chkconfig 控件中删除。

    其次,这只会在您下次重新启动时阻止它运行。要停止当前运行的实例,您需要调用/sbin/service NetworkManager stop

    但是是的,%install 部分不在目标机器上运行,只在构建机器上运行。 %post 是放置我上面的两个命令的正确位置。

    【讨论】:

      【解决方案3】:

      而且你还不如依赖网络管理员提供的任何东西。

      【讨论】:

      • 如果 /etc/init.d/NetworkManager 不存在,RPM 安装/卸载将失败,此服务文件是网络管理器包的一部分,因此您的 RPM 对网络管理器有运行时依赖性包。
      猜你喜欢
      • 2015-05-20
      • 2016-02-10
      • 1970-01-01
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 2011-08-02
      • 1970-01-01
      相关资源
      最近更新 更多