linux - RPM SPEC 文件实际上没有做任何事情,只是安装?

标签 linux rpm rpmbuild rpm-spec

这是我第一次涉足 Linux RPM 创建,我正在探索将其作为分发主要由文件和一些配置组成的软件包的解决方案。

我已经阅读了一些文档,但我觉得构建系统和目标安装系统之间的某些部分不明确。

我已经为 rpmbuild 编写了一个 SPEC 文件,它构建了 RPM,但是当我在本地系统上安装它时它似乎没有做任何事情。它只是说它已安装。

我已经删除了几乎所有的方面,并且只是试图让 RPM 来创建一个目录。它没有被创建。

我这里有什么问题吗?

%define _topdir     /sourcecode/agent/rpm/
%define name        agent
%define release     0
%define version     0.1a
%define buildroot %{_topdir}/BUILD

BuildRoot:      %{buildroot}
Summary:        agent
License:        GNU
Name:           %{name}
Version:        %{version}
Release:        %{release}
Source0:        hello.sh
Prefix:         /opt
Group:          PhysicalEdge

%prep

%build

%install
mkdir -p /opt/edgeagent
cp %{SOURCE0} /opt/edgeagent/hello.sh

%files
%defattr(-,root,root)

我遇到的另一个问题是包含文件,我已将它们列在 Source 的 (Source0: hello.sh) 中。我是在 %files 指令中列出它们在源系统上的开始位置,还是在目标系统上结束的位置?

我现在正在尝试将文件 hello.sh 放入目标系统上的/opt/agent/中。

谢谢!

最佳答案

这是错误的: cp %{SOURCE0}/opt/edgeagent/hello.sh

您不应该永远以 root 身份构建 RPM!此命令应该失败

你想要的是:

mkdir -p %{buildroot}/opt/edgeagent/
cp %{SOURCE0} %{buildroot}/opt/edgeagent/hello.sh

然后按照您的推测将 /opt/edgeagent/hello.sh 添加到 %files 部分。

关于linux - RPM SPEC 文件实际上没有做任何事情,只是安装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52975458/

相关文章:

linux - 如何仅在文件更改时自动增加 RPM 版本

python - 使用 setuptools 在 RPM 中包含非 python 文件

linux - 我应该在 spec 文件中的哪个位置添加操作系统,以便生成的 RPM 包含操作系统和架构?

rpmbuild - 是否可以在不制作 tar.gz 存档的情况下构建 rpm 包?

linux - 构建 RPM 包的开发版和普通版

php - Composer 安装 : the json extension is missing

c++ - 通过远程桌面运行 qt creator

linux - SCSS 。如何添加不是那些返回错误的所有文件?

Python re.sub 特定语法

java - Maven rpm 插件尝试在构建时运行安装脚本