我正在尝试解决我尝试创建的这个 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’用户...”,但当我id mark
在命令行中运行时,我得到的是id: mark: No such user
。而且,/etc/passwd
也没有 mark 帐户。有什么想法吗?
编辑:请参阅我的答案。事实证明,需要定义变量。
答案1
答案2
我是个白痴。&2>/dev/null
我的代码中有一个,所以我没有看到我的错误。修复它之后,我发现我使用的变量没有为 的切换-g
定义useradd
。
我已经编辑了这个问题以进一步说明我正在做什么。
答案3
useradd
必须作为 运行root
。
我没有使用基于 RPM 的 Linux,但我猜测您的预安装脚本是以低权限用户身份运行的。