1

这是我第一次尝试构建 RPM,所以请原谅这个菜鸟式的问题。:)

我能够构建一个 rpm 并使用 yum OK 部署它,但我无法将文件部署到目标服务器上的正确目录。我只想将数据文件放入目标服务器上的 /tmp 目录中。

%install
mkdir -p tmp
cp %_builddir/myfile.dat %_builddir/tmp/myfile.dat

%files
%_builddir/tmp/myfile.dat

当我在目标服务器上 yum 安装 rpm 时,它会将 myfile.dat 放入%_builddir/tmp/myfile.dat主目录下。我想把它放在 /tmp

我尝试删除 %files 部分中的 %_builddir,但 rpm 无法构建。

%files
/tmp/myfile.dat

我错过了什么?

编辑 - - - -

这是现在有效的代码:

BuildRoot:  %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

%install
mkdir -p $RPM_BUILD_ROOT/tmp
cp $RPM_BUILD_DIR/myfile.dat $RPM_BUILD_ROOT/tmp/myfile.dat

%files
/tmp/myfile.dat
4

1 回答 1

2

涉及三个独立的树,您似乎相互混淆:

  • 由表示的构建目录$RPM_BUILD_DIR(使用它而不是 可能是最佳实践%_builddir
  • 构建根表示为$RPM_BUILD_ROOT
  • 安装 rpm 的系统上的最终目标文件系统

%install应该将文件从第一个复制到第二个,但你的不是 - 这是你的第一个错误,再加上你在错误的目录中mkdir创建的事实tmp- 它需要在构建根目录中。

%files指示第二个中的哪些文件应该打包到 rpm 中,然后在安装 rpm 时最终安装在目标系统上。但至关重要的是,列出的文件%files应该相对于 build root列出,因此您的第二次尝试%files是正确的。如果仍然出现错误,建议您仔细阅读。我还强烈建议您阅读一个很好的 rpm 构建指南,例如:http ://www.rpm.org/max-rpm/s1-rpm-inside-scripts.html

于 2012-09-03T23:59:01.543 回答