安装rpm包的部分

时间:2016-09-14 09:16:45

标签: linux rpm rpm-spec

我对创建RPM包很天真。

我想知道下面命令的含义:

BuildRoot: %{_tmppath}/build-%{name}-%{version}

      %install
      rm -rf "%{buildroot}"
      install -m 0755 -d "%{buildroot}%{_prefix}"
       %__install -D -m0644 "%{SOURCE0}" "%{buildroot}%{_prefix}/ROOT.war"

%files
%dir %{_prefix}
%{_prefix}/ROOT.war

1 个答案:

答案 0 :(得分:1)

%install部分中,您应该在%{buildroot]目录中安装所有文件;只是他们将在最终系统上安装的方式。

rm -rf "%{buildroot}"

他清理这个目录。我从来没用过这个;因为我的buildroot对我的每个包都是唯一的。 (在我的spec文件的开头使用BuildRoot: %{_tmppath}/%{name}-%{version}-build

install -m 0755 -d "%{buildroot}%{_prefix}"

似乎声明了一个%{_prefix}变量;他只是创建了该目录。可能%{_prefix}部分会重新使用%files

%__install -D -m0644 "%{SOURCE0}" "%{buildroot}%{_prefix}/ROOT.war"

此处文件%{SOURCE0}已安装(复制)到%{buildroot}%{_prefix}目录。所以在%files部分我会期望这样一行:

%files
%{_prefix}/ROOT.war

意味着ROOT.war文件将打包在该rpm中。

修改 %__install -D命令只会扩展为/usr/bin/install -D(请参阅defined macros

安装手册页中解释了-D选项:

  

-D
  创建除最后一个之外的DEST的所有主要组件,然后将SOURCE复制到DEST