% attr в rpm.spec не принимает значение переменной env - PullRequest
0 голосов
/ 21 мая 2019

У меня есть файл rpm.spec, в котором я должен дать права доступа к файлу.

Я хочу, чтобы% attr принимал значения $ user и $ group во время установки rpm. (Где я будувыполняется "export user =" и "export group ="), но эти значения не принимаются, вместо этого выдается синтаксическая ошибка при установке rpm.

У меня есть что-то подобное в моем specfile

%pre

%files
%defattr(-,root,root,-)
<some_path>
%config /etc/akshatha
%doc /usr/share/doc/akshatha
%attr(0700,$user,$group) %dir directory_path
%attr(0700,$user,$group) %dir directory_path
%attr(0600,$user,$group) path_to_file 

это дает мне ошибку, при установке rpm как -

warning: user $user does not exist - using root
warning: group $group does not exist - using root

Я даже пытался указать% attr (0700,% {getenv: user},% {getenv: group}), ноэто не помогает при подготовке самого rpm, говоря

RPM build errors:
Bad syntax: %attr(0700)
make: *** [all] Error 1

Ответы [ 3 ]

1 голос
/ 22 мая 2019

Это невозможно. %attr фиксируется во время сборки; вы специально спрашивали «во время установки rpm», которая не будет работать.

В вашем %post вы можете chown, но тогда это сломает вашу проверку.

0 голосов
/ 22 мая 2019

Как отмечали другие, это невозможно.Учитывая то, что вы пытаетесь достичь, я бы сделал это следующим образом:

%pre
getent group GROUPNAME >/dev/null || groupadd -r GROUPNAME

%files
%config /etc/akshatha
%doc /usr/share/doc/akshatha
%attr(0770,root, GROUPNAME) %dir directory_path
...

, а затем я бы дал указание администратору поместить пользователя в группу GROUPNAME.

0 голосов
/ 21 мая 2019

РЕДАКТИРОВАТЬ: Как сказал @ AaronD.Marasco: это невозможно во время установки об / мин . Если вы хотите определить его во время сборки ; тогда вы можете поступить так:

вы можете определить макросы в командной строке при вызове rpmbuild:

в файле спецификации:

%attr(0700,%{file_user},%{file_group}) /path/to/file

вызвать rpmbuild как это:

rpmbuild --define='file_user some_user' --define='file_group some_group'
...