繁体   English   中英

构建 rpm package 时如何修复文件冲突

[英]How to fix file conflicts when building rpm package

我正在尝试构建需要另一个 package 的 rpm package。 我想替换所需的两个文件 package 并在 %post 部分编辑它们。 但我得到一个错误

file /etc/puppetlabs/puppet/puppet.conf from install of puppet-agent-install-5.0.1-1.noarch conflicts with file from package puppet-agent-5.0.1-1.el7.x86_64
  file /etc/sysconfig/puppet from install of puppet-agent-install-5.0.1-1.noarch conflicts with file from package puppet-agent-5.0.1-1.el7.x86_64

我的规格文件:

Name:   puppet-agent-in

#wersja
Version:        5.0.1
Vendor:         01
Summary:        02
Release:        1
License:        Apache License, Version 2.0

Requires(pre):  telnet, puppet-agent >= 5.0

BuildArchitectures:     noarch

BuildRoot:      %{_tmppath}/BuildRoot

Source1:        cer_pem.crt
Source2:        cer_corpo_pem.crt
Source3:        puppet.conf
Source4:        puppet

Conflicts:      puppet-agent-install < %{version}
Conflicts:      puppet-agent-install > %{version}
Conflicts:      puppet-agent-opl

%description


%install:

%{__install} -d -m 755 $RPM_BUILD_ROOT/etc/puppetlabs/puppet/dir_ssl
%{__install} -d -m 755 $RPM_BUILD_ROOT/etc/sysconfig

%{__install} -m 644 %{_sourcedir}/cer_corpo_pem.crt $RPM_BUILD_ROOT/etc/puppetlabs/puppet/dir_ssl/cer_corpo_pem.crt
%{__install} -m 644 %{_sourcedir}/cer_pem.crt $RPM_BUILD_ROOT/etc/puppetlabs/puppet/dir_ssl/cer_pem.crt
%{__install} -m 644 %{_sourcedir}/puppet.conf $RPM_BUILD_ROOT/etc/puppetlabs/puppet/puppet.conf
%{__install} -m 644 %{_sourcedir}/puppet $RPM_BUILD_ROOT/etc/sysconfig/puppet


%files

%defattr(-, root, root)
/etc/puppetlabs/puppet/dir_ssl/cer_corpo_pem.crt
/etc/puppetlabs/puppet/dir_ssl/cer_pem.crt
/etc/sysconfig/puppet
%config /etc/puppetlabs/puppet/puppet.conf

%post
#edit puppet.conf and puppet file

有没有可能解决这个冲突?

两个包不能提供相同的文件。 你必须想办法解决:

  • 配置可以放在conf.d目录中吗?
  • 不要使用默认配置运行 puppet。 自己启动 puppet 并指向您的配置文件(在其他位置)。 我没有使用 puppet 的经验,但类似: puppet -c /path/to/your/puppet.conf

是的,hacky 解决方法,不推荐

再次:我不建议这样做,但您可以通过提供/path/to/your/puppet.conf来解决问题,然后在您的post部分中弄乱真实的配置文件:

%post
mv /etc/puppetlabs/puppet/puppet.conf{,.backup}
ln -s /path/to/your/puppet.conf /etc/puppetlabs/puppet/puppet.conf

%postun
if [ $1 == 0 ]; then #uninstall
    # restore file from backup when your package is uninstalled
    mv /etc/puppetlabs/puppet/puppet.conf{.backup,}
fi

注意:这将适用于您的安装,但当puppet本身更新时; 您将丢失您的配置文件,因为它将再次被 puppet rpm 中的 /etc/puppetlabs/puppet/puppet.conf 覆盖。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM