Кто я РПМ-СПЕЦ

я просто пытаюсь выяснить, кто вызывает root или sudo, потому что я не хочу устанавливать некоторые вещи в домашней папке root, когда я пытаюсь это сделать в терминале, все работает отлично, но не работает для спецификации, что я делаю неправильно?

Терминал:

[Mcfly@Mcfly ~]$ whoami=$(who am i | awk '{print $1}')
[Mcfly@Mcfly ~]$ echo $whoami
Mcfly

СПЕЦ

%define whoami %(who am i | awk '{print $1}')
echo "The user that built this is %{whoami}"
the user that built this is '%{whoami}'

можете вы помочь мне ?

или есть простой способ узнать путь пользователя в rpm-spec, я имею в виду /home/mcfly/ no /root?

С Уважением


person Carlos Dueñas    schedule 11.02.2013    source источник


Ответы (2)


Что вам нужно, так это $SUDO_USER, переменная, удобно установленная sudo для вас.

Если вы хотите убедиться, что root не выполняет установку, поместите это в свой %pre:

if [ -z "$SUDO_USER" ]; then echo "Please use sudo to ensure configuration files are installed in proper location."; exit 99; fi
if [ z"$SUDO_USER" == "zroot" ]; then echo "Please use sudo from a non-root account to ensure configuration files are installed in proper location."; exit 99; fi
person Aaron D. Marasco    schedule 13.02.2013
comment
Кстати, по разным причинам я думаю, что помещать что-то в домашний каталог пользователя — не лучшая идея, но я не буду вдаваться в это здесь. - person Aaron D. Marasco; 13.02.2013
comment
Большое спасибо за ответ, на самом деле это то, что мне нужно, переменная $SUDO_USER может справиться с этим, у пользователя sudo, я просто копирую и вставляю код, и получаю ошибку сборки, но это не имеет значения, теперь я могу поделиться rpm и установить на другую машину. - person Carlos Dueñas; 13.02.2013

Я не гуру Linux, и вы не объясняете, почему ваш текущий подход не работает, но id выглядит более простой альтернативой.

person Álvaro González    schedule 11.02.2013
comment
Спасибо за быстрый ответ. - person Carlos Dueñas; 11.02.2013
comment
Спасибо за быстрый ответ. (о боже, эта вещь публикуется, когда я нажимаю кнопку ввода) ну, проблема здесь в том, что когда я пытаюсь использовать первую часть кода if из терминала, в RPM-SPEC, если я запускаю весь скрипт (% prep и % post) из rpm-spec в терминале работает идеально, проблема возникает, когда он собирается в rpm, я получаю пользовательскую переменную. Я пытаюсь использовать это, чтобы создать папку внутри домашней папки пользователя (например, /home/mcfly/THEFOLDER). также должен быть обычным пользователем, другими словами, rpm, выполняемый пользователем root или с использованием sudo, и с помощью команды id, я не знаю, как определить, кто вызывает sudo - person Carlos Dueñas; 11.02.2013
comment
Единственный раз, когда пользователь без полномочий root будет выполнять установку, - это если он играет с базовым каталогом установки и т. д., что в любом случае вызовет всевозможные проблемы... - person Aaron D. Marasco; 12.02.2013
comment
хорошо, я нашел способ обойти проблему с именем пользователя в переменной, теперь возникла новая проблема, я переместил часть скрипта в часть %post, она отлично работает на моем компьютере, но когда я выполняю rpm на другом компьютере, он ищет моего пользователя, я имею в виду, переменная по-прежнему имеет мое имя пользователя, поэтому в данный момент невозможно использовать ее для другого пользователя... я только что сделал это с переменной %define whoami %(eval кто я | awk '{print $1}') - person Carlos Dueñas; 12.02.2013
comment
@AaronD.Marasco в моем rpm, мне просто нужно знать, как пользователь без полномочий root выполняет rpm, потому что некоторые архивы конфигурации и скриптов должны находиться в домашней папке, эти архивы и конфигурация не могут вызвать проблемы для system, на самом деле, если эта конфигурация не существует в домашней папке, приложение не запускается. Спасибо за ответ. - person Carlos Dueñas; 12.02.2013