【问题标题】:RPM SPEC file not actually doing anything, just installing?RPM SPEC 文件实际上没有做任何事情,只是安装?
【发布时间】:2019-03-29 06:00:44
【问题描述】:

这是我第一次尝试创建 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/ 中。

谢谢!

【问题讨论】:

    标签: linux rpm rpmbuild rpm-spec


    【解决方案1】:

    这是错误的: 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 部分。

    【讨论】:

    • 我只想做更多解释——在 %install 中,您正在处理构建系统(您的机器)上的文件。在 %files 部分,您指的是目标系统上的文件路径。
    猜你喜欢
    • 2016-09-20
    • 2019-12-29
    • 1970-01-01
    • 2016-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多