RPM - 安装文件

时间:2012-09-03 23:47:21

标签: rpm yum rpmbuild

这是我第一次尝试构建RPM,所以请原谅noob-ish问题。 :)

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

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

%files
%_builddir/tmp/myfile.dat

当我在目标服务器上安装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

1 个答案:

答案 0 :(得分:2)

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

  • $RPM_BUILD_DIR表示的构建目录(这可能是使用此而不是%_builddir的最佳做法)
  • $RPM_BUILD_ROOT
  • 表示的构建根目录
  • 安装rpm的系统上的最终目标文件系统

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

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