使用 rpm build 在 Oracle Linux(RedHat)上构建简单的 RPM

使用 rpm build 在 Oracle Linux(RedHat)上构建简单的 RPM

我想使用特定用户从指定的构建目录位置制作 RPM。RPM 包含多个文件或一个 gzip,并且应将这些文件复制到预设位置(因此它应该是可重定位的)。

我去过 Fedora 网站和其他教程(包括 Stack Overflow),但似乎都不起作用。我所能得到的(最多)只是一个 src.rpm,由于某种原因,它在尝试写入 %sourcedir /usr/src/redhat/SOURCES 时出现错误。

我想要的只是一个 spec 文件,它可以创建一个可以处理一个 gzip 或多个纯文本文件的 RPM,解压/复制到预设位置。rpm 构建应该在 RPM 目录中生成一个 rpm 文件。

我对创建 RPM 的其他工具不感兴趣,但对如何使用 rpm build 创建 RPM 感兴趣。

使用 RPM 版本 4.4.2.3

答案1

这里的信息会比您要求的稍微多一点。我假设原始问题发布者知道 rpmbuild 的工作原理,但其他人可能不知道。

创建安装两个文件的 RPM 的简单过程。

为 rpmbuild 创建目录层次结构:mkdir -p ~/rpmbuild/{SPEC,SOURCES}

将一些示例内容复制到您的虚拟 RPM 文件中(这些内容在本例中后面使用 SPEC 文件时是需要的)cp /etc/profile ~/rpmbuild/SOURCES/dummy.file && cp /etc/shells ~/rpmbuild/dummy.another.file:。

将以下内容粘贴到~/rpmbuild/SPEC/dummyrpmfile.spec

Summary:        A dummy RPM. Creates file /etc/dummy/file.
Name:           dummyrpmfile
Version:        0.1
Release:        1
Vendor:         Super User
Packager:       Super User
License:        GPL
Group:          System Environment/Base
BuildArch:      noarch
Source0:        dummy.file
Source1:        dummy.another.file
Prefix:         /etc/dummy    

%description
A dummy RPM. Creates file /etc/dummy/file. And also directory /etc/dummy.
Very cool package. You should install this. Oh, yes, and it also makes
/etc/dummy/another.file too.

%install
# create directory /etc/dummy
%{__install} -d -m0755 %{buildroot}/etc/dummy
# and copy the file from SOURCES/file to <buildroot>/etc/dummy
%{__install} -m 0644 %{SOURCE0} %{buildroot}/etc/dummy/file
%{__install} -m 0644 %{SOURCE1} %{buildroot}/etc/dummy/another.file

%files
/etc/dummy/file
/etc/dummy/another.file

然后运行cd ~/rpmbuild && rpmbuild -ba SPEC/dummyrpmfile.spec

这应该产生“noarch” RPM例如,如果只是数据等,则 32 位和 64 位架构之间没有区别。结果应该为~/rpmbuild/RPMS/noarch/dummyrpmfile.rpm

帮助链接:Prefix 的工作原理

相关内容