rpmbuild 文件的简单副本

rpmbuild simple copy of files

正在寻找有关仅放置文件的人来阐明 %install 宏。我创建了一个没有错误的 RPM,它应该只是从 buildroot 中获取文件并将它们 cp 到 /usr/lib。我在 %install 的 SPEC 文件中的内容如下,并且基于 this post。我虽然这足以让 rpm 将文件从 buildroot 复制到 /usr/lib 位置。

这是我尝试并构建的:

%install
mkdir -p %{buildroot}/usr/lib
install -d %{buildroot}/usr/lib/

重新考虑,我想,好吧,告诉 rpm 我想将文件复制到哪里。所以我试过这个:

%install
mkdir -p %{buildroot}/usr/lib
cp %{buildroot}/usr/lib/ /usr/lib/

好吧,抱怨 /usr/lib/ 位置无法被用户写入我正在创建 rpm,就像在构建机器上一样。我的印象是规范文件的 %install 部分应该是关于在目标服务器上安装 rpm 时应将文件复制到何处的说明。我不希望它查看 rpm 构建服务器的本地文件系统。我虽然在这背后是,RPM 应该构建,但如果我尝试以非特权用户身份安装 rpm,它应该不会失败,直到 rpm 安装。它不应该在构建过程中关心。我只是想 cp/extract 一些 lib 文件到我安装 rpm 的服务器上的 /usr/lib。

我的假设是,rpm 会在我安装 rpm 的服务器上创建 BUILDROOT 位置,然后将内容从 buildroot 位置复制到提到的目标位置。

%install 部分在您的包构建期间在您的计算机上执行。在本节中,您应该在 %{buildroot} 中创建文件结构。 不是你的任务是将它复制到客户端机器上的最终目的地。

所以你应该这样做:

%install
mkdir -p %{buildroot}/usr/lib
cp -a some-your-file-from-extracted-targz %{buildroot}/usr/lib/

然后在 %files 部分:

%files
/usr/lib/foobar.bin
/usr/lib/somedir/

Rpm 然后将从 %buildroot 中获取 %files 部分中列出的所有文件,并将其放入 package.