Я создаю RPM с fpm. Одна из целей - установить пользователя и группу установленных файлов, поэтому я использую --rpmuser
и --rpmgroup
флаги.
Это работает по большей части, однако один из каталогов не получает желаемого пользователя / группу. Я бегал fpm
с -e
флаг для проверки файла спецификации. Все файлы и каталоги отмечены под % файлов директива, которая должна установить желаемого пользователя и группу - adminuser, admingroup.
%files
%defattr(-,adminuser,admingroup,-)
# Reject config files already listed or parent directories, then prefix files
# with "/", then make sure paths with spaces are quoted. I hate rpm so much.
/etc/admin-services/admin.properties
/usr/share/admin-app/static/admin-console/index.html
/usr/share/admin-app/static/admin-console/console-env.js
/usr/share/admin-app/static/admin-console/css/styles.css
/usr/share/admin-app/webapps/admin-services.war
После установки все файлы принадлежат adminuser, admingroup Кроме в / USR / доля / администратор-приложение / статический каталог (и все, что ниже), все они принадлежат корень, корень.
Я не думаю, что это вина fpm, Spec File выглядит хорошо. Я считаю, что это проблема с rpmbuild под капотом. Есть идеи, что может происходить?
Я прочитал документация по файлам спецификации, и я не вижу других директив, которые могли бы повлиять на / USR / доля / администратор-приложение / статический каталог.
Вы должны использовать --directories
вариант. Из fpm --help
:
--directories DIRECTORIES Recursively mark a directory as being owned by the package
Без него право собственности устанавливается только для файлов, каталоги опускаются и будут принадлежать root:root
.
Если вы добавите --directories /usr/share/admin-app/static
и использовать fpm -e
чтобы просмотреть файл спецификации, вы увидите, что он добавляет %dir
директива, которая явно устанавливает разрешения, как и следовало ожидать:
%dir %attr(775, adminuser, admingroup) /usr/share/admin-app/static
И другие входы в подкаталоги ниже этого пути, если таковые имеются.
Кроме того, если у вас есть несколько каталогов в корне вашего rpm (как и я), вы должны использовать --directories
вариант для каждого.
Это немного сбивает с толку, но давайте поблагодарим rpm за это, а не за ошибку fpm.