1

У меня есть собственный RPM, который я создал, который должен добавлять записи в sudoers, поэтому я добавил записи в файл RPM /etc/sudoers.d/mypackage и добавил туда свои команды sudo.

Файлы добавляются, и RPM генерируется. К сожалению, когда я пытаюсь установить пакет, он жалуется:

file /etc/sudoers.d from install of mypackage-1.0.0-1.x86_64 conflicts with file from sudo-1.8.6p7016.el7.x86_64

Rpm установится нормально, если я установлю его с --force, например:

rpm -Uvh --force mypackage.rpm

Возможно, я мог бы отобразить содержимое файла sudoers в /etc/sudoers.d но я бы предпочел, чтобы файл sudoers отслеживался с помощью rpm.

Как добавить записи в sudoers с пользовательского RPM без жалоб sudo?

РЕДАКТИРОВАТЬ: Чтобы уточнить мой пост, у меня есть дюжина каталогов, заполненных файлами:

/etc/sudoers.d
/etc/httpd/conf.d/
/etc/systemd/system
/etc/cron.d
...

Поскольку у меня нет заранее списка каталогов, и этот список может измениться, я попытался сделать это:

%files
/etc/*
%exclude /etc/sudoers.d
/etc/sudoers.d/*

но в этот момент файлы в sudoers.d не включаются. Если бы я хотел упомянуть каталоги, один за другим, мне пришлось бы динамически генерировать этот список каталогов.

Как и было предложено, я попытался сделать rpm -qf /etc/sudoers.d и там написано sudo-1.8.5.el7_2.x86_64 . Если я делаю rpm -qf /etc/systemd/system , он говорит systemd-219-19.el7_2.x86_64 но rpm не выдает жалоб, когда я пытаюсь установить rpm

1 ответ1

2

Это, вероятно, потому что в разделе %files вас есть что-то вроде этого:

%files
/etc/sudoers.d/

Это делает ваш пакет не только включающим файлы в /etc/sudoers.d ; но и сам каталог. Вы можете проверить это с помощью rpm -qlp <generated-rpm> .

rpm не позволяет различным пакетам предоставлять один и тот же файл или каталог. Решение состоит в том, чтобы только упаковать файлы в этом каталоге:

%files
/etc/sudoers.d/*

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .