我想使用特定用户从指定的构建目录位置制作 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 的工作原理。