这篇文章根据 极简 RPM 打包指南,给出打包 GNU hello 的一个实例,软件的下载链接在 这里。
手动安装
安装依赖
根据官网,需要安装 gettext 软件包。
dnf install gettext
编译安装
很简单,三板斧即可
./configure --prefix=/tmp/test
make
make install
软件的安装文件如下:
/tmp/test/
├── bin
│ └── hello
└── share
├── info
│ ├── dir
│ └── hello.info
├── locale
......
│ ├── zh_CN
│ │ └── LC_MESSAGES
│ │ └── hello.mo
│ └── zh_TW
│ └── LC_MESSAGES
│ └── hello.mo
└── man
└── man1
└── hello.1
一个可执行文件,一个 info 文件,一个 man 手册文件,一堆 I18N 文件。
RPM 打包
源码
下载源代码,放在 ~/rpmbuild/SOURCES/ 文件夹中。
hello.spec
Name: hello
Version: 2.10
Release: 1%{?dist}
Summary: The "Hello World" program from GNU
License: GPLv3+
URL: https://www.gnu.org/software/hello/
Source0: https://ftp.gnu.org/gnu/hello/hello-%{version}.tar.gz
BuildRequires: gettext
Requires: info
%description
The "Hello World" program, done with all bells and whistles of a proper FOSS
project, including configuration, build, internationalization, help files, etc.
%prep
tar -xf %{_sourcedir}/hello-2.10.tar.gz -C %{_builddir}
%build
cd %{_builddir}/hello-2.10/
./configure --prefix=/usr/
make
%install
cd %{_builddir}/hello-2.10/
make prefix=%{buildroot}%{_prefix} bindir=%{buildroot}%{_bindir} install
%files
/usr/share/locale/*
/usr/share/man/man1/hello.1.*
/usr/share/info/*
/usr/bin/hello
%changelog
打包
将 hello.spec 放在 ~/rpmbuild/SPECS/ 文件夹中
rpmbuild ~/rpmbuild/SPECS/hello.spec
结果如下:
rpmbuild/
├── BUILD
│ └── hello-2.10
├── BUILDROOT
├── RPMS
│ └── x86_64
│ └── hello-2.10-1.fc33.x86_64.rpm
├── SOURCES
│ └── hello-2.10.tar.gz
├── SPECS
│ └── hello.spec
└── SRPMS
└── hello-2.10-1.fc33.src.rpm