背景
我正在尝试构建一个简单的 rpm,它只是将一些 Web 应用程序源文件复制到安装目录。Web 应用程序是用Java 编写的,由供应商提供(即不是我编写的)。
由于下述错误,rpm 无法构建。但是,我已经成功地为来自同一供应商的另一个基于 Java 的 Web 应用程序构建了几乎相同的 rpm。除了安装路径和源文件名之类的名称之外,规范文件是相同的。
问题
rpmbuild -v -bb --clean SPECS/web-app.spec
当Permission denied
它尝试删除{BUILDROOT}/web-app-1.0/tmp
.
我检查了rpmbuild
无法删除的文件的权限。下面的一些例子:
-r--r--r--. 1 signer signer 1203 Jan 13 2006 Adler32.class
-r--r--r--. 1 signer signer 19498 Jan 13 2006 Deflate.class
-r--r--r--. 1 signer signer 628 Jan 13 2006 Deflate$Config.class
-r--r--r--. 1 signer signer 8673 Jan 13 2006 InfBlocks.class
他们拥有我的构建用户 ( signer
) 的正确所有权和组,但没有写入权限。
这些文件不是我在 rpm 规范中明确定义的任何进程的一部分。我的规范文件所做的就是运行%setup
、创建一个目录并将文件复制到其中。在此期间提取的源 tarball%setup
对其所有文件都具有正确的权限;我可以提取和删除它创建的树。这些文件不是源 tarball 的一部分。我认为这些tmp
文件与一些Java文件处理有关;rpmbuild
在构建结束时花了很长时间“重新打包” jar 文件。我不确定它有什么用途,我怀疑我正在部署的应用程序是否需要它。
问题
我可以禁用 jar 文件重新打包来解决这个问题吗?还有其他想法吗?