我对创建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
答案 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