【发布时间】:2015-03-15 01:16:00
【问题描述】:
为了让系统保持更清洁的状态,我尝试从 rpm 规范文件的 %preun 部分的 PATH 中删除条目。
我在 stackoverflow 上发现了几个我尝试过的线程
What is the most elegant way to remove a path from the $PATH variable in Bash? 和 Linux: Remove path from $PATH variable
当我在终端上手动运行这两个链接时,它们的答案都能完美运行。 但是,当我运行 rpm -e xx 命令时,它们不起作用。 如果安装成功后我的 PATH 是这样的:
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/lpp/mmfs/bin
我正在尝试删除 /usr/lpp/mmfs/bin,
rpm 卸载后的 PATH 如下所示:
/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin
问题: 1) 当前面链接中提到的命令从规范文件运行时,我需要做一些不同的事情吗?
2) 在 rpm 卸载期间删除 PATH 条目的推荐方法有哪些?
注意 我在规范文件中尝试过的命令是:
PATH=$(echo $PATH | sed -e 's;:\?/home/user/bin;;' -e 's;/home/user/bin:\?;;')
和
PATH=${PATH/:\/home\/user\/bin/}
【问题讨论】:
-
更好用:
PATH=$(echo $PATH | sed -e 's;/home/user/bin;;' -e 's;::;:;') -
首先,RPM 包通常没有理由在标准系统 PATH 之外安装二进制文件。
-
当然不是普通用户需要自己运行的二进制文件,因此修改
$PATH是个好主意。事实上,通过 RPM 修改系统或用户的$PATH几乎总是错误的做法(除非在非常具体/受控的部署场景中)。