Shell 安装整个文件夹和其中的文件,RPM规范文件

Shell 安装整个文件夹和其中的文件,RPM规范文件,shell,rpmbuild,software-packaging,rpm-spec,Shell,Rpmbuild,Software Packaging,Rpm Spec,我有一个构建rpm软件包的规范文件,在我的%install部分我有以下内容: %install install -m 700 foo/bar/filesToCopy/. $RPM_BUILD_ROOT/ filesToCopy文件夹是一棵树,与包文件树的外观完全相同。它包含一个包的所有子目录,如etc/…、/usr/bin、/usr/share…,以及其中的子序列文件 当我建造它的时候 install: omitting directory 'foo/bar/filesToCopy/' err

我有一个构建rpm软件包的规范文件,在我的%install部分我有以下内容:

%install
install -m 700 foo/bar/filesToCopy/. $RPM_BUILD_ROOT/
filesToCopy文件夹是一棵树,与包文件树的外观完全相同。它包含一个包的所有子目录,如etc/…、/usr/bin、/usr/share…,以及其中的子序列文件

当我建造它的时候

install: omitting directory 'foo/bar/filesToCopy/'
error: Bad exit status from /var/tmp/rpm-tmp.sea6XO (%install)
有没有一种方法我不必像这样单独复制每个文件:

install -m 700 foo/bar/filesToCopy/usr/bin/file1.ex $RPM_BUILD_ROOT/usr/bin/
...
因为filesToCopy/中的所有内容都是$RPM\u BUILD\u ROOT中的结构/

更新


我找到了一个解决方案,我将“install-m700”改为“cp-a”

首先生成文件的是什么?通常,您使用RPM宏调用
make
makeinstall
(例如
%make\u install
),它们会为您处理所有这些。你的“源代码”是预编译的tarball还是什么?是的,我使用gradle来编译我的代码,在build.gradle文件中有一个名为preparePacakge的任务。在%build下的RPM规范中,我运行命令:./gradlew myApp:preparePackage。然后创建一个名为TMPINST的目录,它有一个etc文件夹和一个usr文件夹,其中sub dir init、myApp in etc、bin、lib、share in usr它还包含配置文件和一个包含所有类文件和man文件的jar等等,所有我想要的东西都在包中。这就像打开.rpm文件时的样子我对
gradle
一无所知,但是。