打包rpm时获取用户

Get user while packaging rpm

我试图在打包 rpm 时在我的规范文件中获取 USER-NAME。 “$HOME”命令在 bash 中 运行ning 的情况下给我 USER。 规范文件也像 bash 一样工作,但是当我 运行 规范文件的 %post 部分中的类似命令时,我得到 'root' 作为输出。 这可能发生在用户 运行 rpm 包使用 sudo 时。

请帮助如何在规范文件中获取用户名

.spec 中,一个 %define 宏会为您提供用户名。这是一个示例,它在 .spec 文件中的样子。

 Source0: %{name}-%{version}.tar.gz

 # User defined function to get who built the RPM
 %define packagername %(who am i | awk '{print }')

 %description
 ...
 %prep
 ...

 # Then in the post section call the macro %{packagername}
 %post
 echo "Packager is: %{packagername}"

注意,只有在安装 .rpm 文件时,%post 部分才会是 运行。上面会把信息打印成stdout.

输出

$ sudo rpm -ivh simple-0-1.x86_64.rpm
Preparing...                ########################################### [100%]
   1:simple                 ########################################### [100%]
Packager is:  iamauser

为了在系统上全局使用这个宏,可以在/etc/rpm/macros.<somename>中定义它。

$ cat /etc/rpm/macros.username
# Get who is the packager
%packagername %(who am i | awk '{print }')

使用全局定义不需要在 .spec 文件中定义它。

如果您没有写入 /etc/rpm 的权限,那么在 ~/.rpmmacros 文件中定义它将使该宏仅对您可用。