gpt4 book ai didi

linux - 打包rpm时获取用户

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:17:43 35 4
gpt4 key购买 nike

我试图在打包 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/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com