linux - 安装 rpm 包的部分

标签 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

最佳答案

%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

关于linux - 安装 rpm 包的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39486712/

相关文章:

c++ - 我如何在某些全局击键时使用 Python 或 C++ 将一些文本粘贴到 linux 中的当前事件应用程序

linux - 我可以通过X86_64机器码获取内存访问信息吗?

c - 修改linux中的bio结构

linux - 差异两个转速? -- Linux

c - 尝试连接到Linux上未使用的端口

centos - Yum 安装了错误版本的包,有范围要求

debugging - 如何修改 Fedora 软件包并修复错误

recursion - 在 RPM %files 部分是否可以递归地指定一个目录及其所有文件和子目录?

git - RPM 规范中的 Source0 可以是 git repo 吗?

linux - 如何将初始化脚本添加到我的 RPM