Linux RPM规范文件实际上什么都不做,只是安装?

Linux RPM规范文件实际上什么都不做,只是安装?,linux,rpm,rpmbuild,rpm-spec,Linux,Rpm,Rpmbuild,Rpm Spec,这是我第一次尝试创建LinuxRPM,我正在探索将其作为一个解决方案来分发一个软件包,该软件包主要由文件和一些配置组成 我已经阅读了一些文档,但是我觉得有些部分在构建系统和目标安装系统之间是不明确的 我已经为rpmbuild编写了一个SPEC文件,它构建了RPM,但是当我在本地系统上安装它时,它似乎没有做任何事情。它只是说它被安装了 我已经删除了几乎所有方面,我只是想让RPM创建一个目录。它没有被创建 我在这里做错什么了吗 %define _topdir /sourcecode/agen

这是我第一次尝试创建LinuxRPM,我正在探索将其作为一个解决方案来分发一个软件包,该软件包主要由文件和一些配置组成

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

我已经为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)
我的另一个问题是包含文件,我已经在源代码中列出了它们(Source0:hello.sh)。我是否在%files指令中列出它们在源系统上的起始位置,还是在目标系统上的结束位置

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

谢谢

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

您不应该将RPM构建为root!此命令应该失败

你想要的是:

mkdir -p %{buildroot}/opt/edgeagent/
cp %{SOURCE0} %{buildroot}/opt/edgeagent/hello.sh
然后按照您的推测,将
/opt/edgeagent/hello.sh
添加到
%files
部分。

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

您不应该将RPM构建为root!此命令应该失败

你想要的是:

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

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

。在%files部分中,您指的是目标系统上的文件路径。我只想做更多解释-在%install中,您是在生成系统(您的计算机)上寻址文件。在%文件部分中,您指的是目标系统上的文件路径。