Как исправить конфликты файлов при сборке пакета rpm - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь создать пакет rpm, который требует другой пакет. Я хочу заменить два файла из требуемого пакета и в разделе% 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

Есть ли возможность исправить этот конфликт?

1 Ответ

0 голосов
/ 07 ноября 2019

NO

два пакета не могут предоставить один и тот же файл. Вам нужно найти способ:

  • можно ли поместить конфигурацию в каталог conf.d?
  • не запускать puppet с конфигурацией по умолчанию. Запустите кукольный себя и укажите ваши файлы конфигурации (в других местах). У меня нет опыта работы с куклой, но что-то вроде: puppet -c /path/to/your/puppet.conf

да, обходной путь, не рекомендуется

еще раз: я бы не рекомендовал это, но вы можете взломатьпредоставив /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;вы потеряете ваш файл конфигурации, так как он снова будет перезаписан /etc/puppetlabs/puppet/puppet.conf из кукольного rpm.

...