这是我第一次尝试构建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
答案 0 :(得分:2)
涉及三个单独的树,您似乎互相混淆:
$RPM_BUILD_DIR
表示的构建目录(这可能是使用此而不是%_builddir
的最佳做法)$RPM_BUILD_ROOT
%install
应该将文件从第一个复制到第二个,但是你的文件没有 - 这是你的第一个错误,再加上你的mkdir
在错误中创建了tmp
directory - 它需要在构建根目录中。
%files
指示第二个文件中的哪些文件应打包到rpm中,然后在安装rpm时最终安装在目标系统上。但至关重要的是,%files
中列出的文件应该相对于构建根列出,因此您在%files
的第二次尝试是正确的。如果您仍然收到错误,我建议您仔细阅读。我还强烈建议您阅读rpm建设的良好指南,例如:http://www.rpm.org/max-rpm/s1-rpm-inside-scripts.html