打包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
文件中定义它将使该宏仅对您可用。
我试图在打包 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
文件中定义它将使该宏仅对您可用。