极简 RPM 打包指南 - 实战 GNU hello

这篇文章根据 极简 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
2赞