安装 rpm 包的部分

Install Section of rpm package

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

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

rm -rf "%{buildroot}"

他清理了这个目录。我从不使用这个;因为我的 buildroot 对于我的每个包都是唯一的。 (在我的规范文件的开头使用 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
create all leading components of DEST except the last, then copy SOURCE to DEST