如何在 RPM 安装后脚本中向 $PATH 变量添加新路径?

如何在 RPM 安装后脚本中向 $PATH 变量添加新路径?

我希望每次安装 RPM 包时都自动向 $PATH 变量添加新路径。

我尝试在我的 RPM 中使用安装后脚本。以下是包含此安装后脚本的 RPM 规范文件的一部分:

%post
PATH=$PATH:/usr/app/mdg/bin
export PATH

但安装成功后,$PATH 没有改变。请帮我解决这个问题。

答案1

当您在 RPM 的后脚本中添加路径时,它仅在安装 shell 的持续时间内设置。

在您的 RPM 中,您想要安装一个custom.sh文件/etc/profile.d/

# cat /etc/profile.d/custom.sh
#!/bin/bash

PATH=$PATH:/usr/app/mdg/bin
export PATH

如果您使用 CSH,则该文件应命名为custom.csh

答案2

只需向 bin 路径添加软链接,而不必更改环境变量:

%install 
# ...
ln -s /usr/app/mdg/bin/your-program /usr/bin/your-program

https://unix.stackexchange.com/questions/45540/how-to-automatically-add-new-path-to-path-variable-after-rpm-packet-installatio

答案3

您可以创建指向 PATH 中已存在的路径的软链接,而不是将应用程序添加到 PATH。但是,我建议在%post步骤中创建链接 - 这将在目标机器上执行,而不是在构建代理上执行。这样做的原因是您可能需要权限才能在或步骤sudo中添加链接。如果您在中创建链接,那么您可以使用任一方式,但在另一台主机上。%build%install%postsudo

%define _location /usr/app/%{_name}

...

%post
ln -sf %{_location}/bin/%{_name} /usr/bin/%{_name}
# ln -sf /usr/app/mdg/bin/mdg /usr/bin/mdg

另外,当您从机器中删除应用程序时,请记住删除链接:

%postun
unlink /usr/bin/%{_name}
# unlink /usr/bin/mdg

相关内容