RPM 是Red-Hat Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,
但是其原始设计理念是开放式的,包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了。
yum是基于rpm的包管理工具,yum最终安装的是rpm包,那rpm包是如何来的呢?
一、 安装RPM包
$ yum -y install rpm-build rpm-devel rpmdevtools
二、 实例讲解
1. 生成开发目录
$ rpmdev-setuptree
2. 新建helloworld-1.0.0 项目文件
$ mkdir helloworld-1.0.0
3. 新建源码文件helloworld,输入以下内容
#!/bin/sh
echo "Hello World!"
4. 打包项目helloworld-1.0.0.tar.gz,并拷贝到资源目录SOURCES
$ tar -czvf helloworld-1.0.0.tar.gz helloworld-1.0.0
$ cp helloworld-1.0.0.tar.gz ~/rpmbuild/SOURCES/
5. 生成spec模板文件
$ cd ~/rpmbuild/SPECS
$ rpmdev-newspec helloworld.spec # 生成spec模版文件
6. 修改spec文件如下
Name: helloworld
Version: 1.0.0
Release: 1%{?dist}
Summary: helloworld
Group: Development/Tools
License: GPLv2+
#URL:
Source0: %{name}-%{version}.tar.gz
#BuildRequires:
#Requires:
%description
A simple example for rpm.
%prep
%setup -q
%build
%install
mkdir -p $RPM_BUILD_ROOT/usr/bin
cp $RPM_BUILD_DIR/%{name}-%{version}/helloworld $RPM_BUILD_ROOT/usr/bin/
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root,-)
%doc
%{_bindir}/helloworld
%changelog
* Sat Aug 8 2020 shuoqi.yu <shuoqi.yu@cs2c.com.cn> -1.0.0
- Init
7. 打包
$ rpmbuild -ba SPECS/helloworld.spec
注:当前目录结构文件简介
> BUILD是编译rpm包的临时目录
> BUILDROOT是最后生成rpm包的临时安装目录
> RPMS存放最终生成的rpm二进制包
> SOURCES是源代码(.tar.gz)存放目录
> SPECS用来存放spec文件
> SRPMS存放最终生成的rpm源码包
rpmbuild/RPMS/x86_64/helloworld-1.0.0-1.el7.x86_64.rpm就是我们打出来的rpm包
8. 安装
$ yum install ~/rpmbuild/RPMS/x86_64/helloworld-1.0.0-1.el7.x86_64.rpm
或者
rpm -ivh helloworld-1.0.0-1.el7.x86_64.rpm
9. 测试
$ /usr/bin/helloworld
Hello World!