我有一个与此完全相反的问题如果初始安装后修改了安装目录,RPM 不会删除这些目录。该发帖者想要强制删除由 rpm 创建的目录中非由 rpm 创建的文件,这违背了默认的 rpm 行为。
我的问题恰恰相反。我最初发布于堆栈溢出但在这里我想问一个稍微不同的事情。 当使用 rpmbuild 和 specfiles 以传统方式构建的 rpm 安装/卸载时,我得到了默认行为,这正是我想要的。 我的情况是,rpm 在某处创建一个日志目录,应用程序记录到该目录中的文件中,并且在卸载时,这些不是由 rpm 创建的文件的存在会阻止删除它们或包含它们的目录。
但是当我使用Gradle 的 Nebula rpm 插件有些事情不一样了。不管目录中是否添加了文件,该目录都会被删除。更奇怪的是,rpm 的调试输出告诉我它并没有删除该目录,尽管实际上它确实被删除了:
# rpm -evv myapp
...
D: fini 040755 2 (7007, 500) 4096 /usr/local/myapp/logs
D: erase rmdir of /usr/local/myapp/logs failed: Directory not empty
...
# ls -al /usr/local/myapp/logs
ls: cannot access /usr/local/myapp/logs: No such file or directory
由于我使用 Gradle 插件创建的 rpm 和以传统方式创建的 rpm 运行相同的 rpm 命令,并且在同一台机器上使用相同的 rpm 配置,因此 rpm 文件本身肯定存在一些不同之处。但我不知道那可能是什么。有人可以告诉我吗?
答案1
它可以是一些小脚本。有吗?
rpm -qp --scripts ./myapp.rpm