linux - 打包rpm时获取用户

标签 linux rpm packaging rpm-spec

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

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

最佳答案

.spec一个%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 中定义它文件将使该宏仅对您可用。

关于linux - 打包rpm时获取用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48427032/

相关文章:

java - 使用 Maven 在 jar 中包含依赖项

linux - 如何查找在应用程序启动期间加载的共享对象?

linux - 使用由内部逻辑定义的查找参数从 bash 脚本调用查找

linux - 如何解决 rpm 不可读错误

dependencies - SuSE 上的 rpmlib(FileDigests) 依赖性错误

linux - RPM:从另一个带参数的宏调用带参数的宏

linux - 带有 xulrunner 的单文件应用程序 - 可能吗?

linux - 在远程服务器之间区分文件的最佳方法是什么?

redhat - 使用 RPM 卸载包时意外失败的依赖项

将 jar 标记为提供时出现 java.lang.NoClassDefFoundError