Я пытаюсь решить изгибы для этого RPM, который я пытаюсь создать. По сути, я пытаюсь сделать так, чтобы, если в системе не было mark , я хотел бы создать учетную запись пользователя отметки. Я получил это в %pre блок в моем файле .spec:

id mark &>/dev/null
if [ "$?" != "0" ]; then
    echo "Adding 'mark' user..."
    useradd -g $GROUP_ID \
        -s /bin/bash -d mark
fi

Теперь, после того как я собрал RPM и запустил rpm -ivh iPackage-1.0.0-1.noarch.rpm , я проверяю вывод и вижу «Добавление» mark «user ...», но когда я запускаю id mark в команде строка, я получаю id: mark: No such user . Кроме того, /etc/passwd также не имеет учетной записи. Есть идеи?

Изменить: см. Мой ответ. Оказывается, переменные должны быть определены.

3 ответа3

0

useradd должен быть запущен от имени пользователя root .

Я не пользуюсь Linux на основе RPM, но, полагаю, ваш предустановочный скрипт работает как пользователь с ограниченными правами.

0

В моем дистрибутиве useradd должен вызываться так:

# useradd -ms /bin/bash mark

Используйте -m если вы хотите создать домашний каталог (смотрите man useradd).

Также, как сказал Мэтт Н , исправьте это место.

0

Я дебил. В моем коде был &2>/dev/null , поэтому я не видел своих ошибок. После исправления этого я обнаружил, что переменная, которую я использовал, не была определена для параметра -g useradd .

Я отредактировал вопрос, чтобы дополнительно продемонстрировать, что я делал.

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