我正在尝试在打包rpm时在我的spec文件中获取USER-NAME。 “$ HOME”命令为我提供了以bash运行的情况。 Spec文件也像bash一样工作但是当我在spec文件的%post部分运行类似的命令时,我得到'root'作为输出。 这可能发生在用户使用sudo运行rpm包时。
请帮助如何在Spec文件中获取USER名称
答案 0 :(得分:0)
在.spec
a %define
宏中,您会获得用户名。这是一个示例,它在.spec
文件中的外观如何。
Source0: %{name}-%{version}.tar.gz
# User defined function to get who built the RPM
%define packagername %(who am i | awk '{print $1}')
%description
...
%prep
...
# Then in the post section call the macro %{packagername}
%post
echo "Packager is: %{packagername}"
注意,%post
部分仅在安装.rpm
文件时运行。上面会将信息打印到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 $1}')
使用全局定义,不需要在.spec
文件中定义它。
如果您没有权限写入/etc/rpm
,那么在~/.rpmmacros
文件中对其进行定义会使该宏仅供您使用。