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