linux编译打包+rpm,CentOS 7基础教程之 RPM打包

CentOS 7基础教程之 RPM打包

一、RPM打包的目的

1、当目标机中不存在编译环境时,可以先在本地环境中编译打包,然后直接在目标机中用rpm -ivh *.rpm安装即可。

2、当需要在目标机中安装多个软件或者增加多个文件时,可以将整体打成RPM包,方便使用。

二、RPM打包命令

$cd ~ #进入home目录

$ sudo yum -y install rpmdevtools #安装rpm打包所需的工具

$rpmdev-setuptree #生成rpm打包目录

$cd rpmbuild/SPECS #进入SPECS目录

$rpmdev-newspec test.spec #生成spec文件模板

$mv your_path/source.tar.gz ../SOURCES #将要打包的源码以tar.gz的格式移动到SOURCES目录

此时会在home目录下生成一个rpmbuild目录,此目录下有五个子目录

BUILD 编译时所用的暂存目录

RPMS 放打包好的二进制rpm包

SOURCES 放置源代码和补丁文件

SPECS 放置spec文件

SRPMS 放置RPM源码包

三、spec文件简要说明

RPM打包的关键之处就在于spec文件的编写

1、spec基本信息

Name: 软件名称

Version: 软件版本

Release: 发布次数 如: 1%{?dist}

Summary: 软件说明

Group: 软件分组

License: 授权模式,例如 GPL,即自由软件

URL: 源码包的URL地址,可随意填写

Source0: 源码包,可指定多个,下面可用%{SOURCE0}变量引用

BuildRoot: 编译过程中的中间存档目录,考虑到多用户的环境,一般定义为:

%{_tmppath}/%{name}-%{version}-%{release}-root ,

后面可使用$RPM_BUILD_ROOT 方式引用

BuildArch: 平台 %{_arch}

BuildRequires: 编译过程依赖的工具

Requires: 打包生成的rpm包安装时所依赖的软件包

%description 说明文档

%prep 准备部分,比如创建目录,解压源码包等,可使用%setup内部函数

%build 在BUILD目录编译,可使用%configure内部函数,或者其他编译工具,如cmake, perl等

%install 安装到BUILDROOT虚拟目录

%clean 清理文件

%files 将指定的文件添加到rpm包中,文档类型可用%doc,配置文件可 用%config

%changelog 更新记录.格式: 第一行 "* 日期 作者 " 第二行 "- 更新内容"

最终的生成的rpm名称: {Name}-{Version}-{Relesae}-{BuildArch}.rpm

2、spec内部变量

在spec文件运行时,定义的宏会主动读取/usr/lib/rpm/macros中的变量

RPM_BUILD_DIR ~/rpmbuild/BUILD

RPM_BUILD_ROOT ~/rpmbuild/BUILDROOT

3、spec文件示例(以git为例)

Name: git

Version: 2.10

Release: 1%{?dist}

Summary: this is the test code

License: GPL

URL: http://www.hao123.com

Source0: %{name}-%{version}.tar.gz

BuildRoot: %{_tmppath}/%{name}-%{version}-root

BuildRequires: automake

Requires: rpm

%description

%prep

%setup -q

%build

autoconf

./configure --prefix=/opt/git/

make %{?_smp_mflags}

%install

make DESTDIR=$RPM_BUILD_ROOT install

%clean

[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT"

make clean

%files

%defattr (-,root,root)

/opt/git/

%changelog

4、生成RPM包

$rpmbuild -ba test.spec #生成RPM包

生成的RPM包在rpmbuild/RPMS目录下。

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值