小编use*_*144的帖子

RPM 无法使用 sudo rpm -e 卸载

我在尝试使用sudo. 当我执行以下操作时:

sudo rpm -e mypackage  
rpm -qa | grep mypackage
Run Code Online (Sandbox Code Playgroud)

我发现包裹还在!尽管rpm -e运行没有任何明显错误,但仍然如此。这会阻止我删除此包所依赖的其他包。

经过一番调查,我发现该软件包包含一个似乎失败的卸载后脚本。script-let 只是尝试删除一个目录,例如

rm -rf /some_directory
Run Code Online (Sandbox Code Playgroud)

然后我发现通过绕过这个脚本,软件包将被卸载。所以如果我这样做:

sudo rpm -e --noscripts mypackage  
rpm -qa | grep mypackage
Run Code Online (Sandbox Code Playgroud)

然后不再列出该包。现在我的问题是为什么使用sudo阻止这样一个简单的脚本运行,其次为什么 rpm 命令不报告问题?

顺便说一句,以下命令序列也有效,因此删除目录肯定是可能的:

sudo rm -rf /some_directory  
sudo rpm -e mypackage  
rpm -qa | grep mypackage
Run Code Online (Sandbox Code Playgroud)

这些都不是真正可以接受的解决方案,因为我需要一种可靠的通用方法来正确卸载不受我控制的 rpm 包。我也无法以 root 身份执行此操作,因为我正在编写其他用户必须能够运行的脚本。

最后在绝望中我尝试了 sudo 的 -H 选项,即

sudo -H rpm -e mypackage
Run Code Online (Sandbox Code Playgroud)

现在这似乎也有效,但有人能解释为什么设置$HOMEto/root会有所作为吗?由于我工作环境中的严格流程,如果没有令人信服的论据,我无法真正将此作为解决方案提交,即我必须能够解释为什么-H需要并证明我的脚本是可靠的。sudo -H不幸的是,只是说似乎在我的机器上工作并不会与我的老板削减它!

我希望这里的一些专家可以解释发生了什么,任何帮助将不胜感激!

rpm sudo

5
推荐指数
1
解决办法
1722
查看次数

标签 统计

rpm ×1

sudo ×1