RPMS杂谈(二)rpmuild打包入门知识

一    学习RPMS制作rpm包目的

核心:  熟悉'spec'-->'配置文件'的语法

备注:  所有'能安装的软件包'都可以尝试下

二    友情提示

备注:  一般'*.src.rpm'都'自带'spec文件,大多数'直接安装'即可,部分需要'修改后'编译安装

主要:  '*.tar.gz'之类的源代码分发包'制作rpm包'

最终:  扩充自己的'yum源'

三    基础环境安装

yum -y install rpm-build rpm-devel rpmdevtools 

1:  '初始化相应的目录'

rpmdev-setuptree

   1)  rpmdev-setuptree 程序将创建 ~/rpmbuild 目录,以及一系列'预设的子目录'(如 SPECS 和 BUILD),你将使用它们作为'打包目录',一般是5个

   2)  另外,还会创建 ~/.rpmmacros 文件,它用于'设置各种选项'

不需要: 'rpmbuild/{BUILD,SPECS,RPMS, SOURCES,SRPMS}'

2:  '生成一个spec模板' -->'核心: 编译'

rpmdev-newspec nginx   -->'nginx.spec'

#############  分割线  #############

补充:编译的时候'对版本有要求'的-->'比如gcc'

后续:rpmbuild命令

查看'rpm版本'-->因为rpmbuild的原因,所以rpm版本'最低'要与rumbuild保持一致

关于rpmbuild版本的问题 

四    spec参考

Fedora spec官方文档

Centos官网制作rpm包

(1)  重建源RPM

(2)  您真的'需要重建吗'?

(3)  在'哪里获取'SRPM软件包

五    进入主题

macros'翻译'  --> '宏,巨大'

(1)原理

(1)  RPM打包的时候需要'编译源码'

(2)  还需要把编译好的'配置文件(conf)、二进制命令文件(bin或sbin)、库函数之类(lib)的文件'按照安装好的样子放到'合适的位置'

(3)  还要根据需要'对RPM的包进行测试',这些都需要先有一个"工作空间"

rpmbuild命令使用一套'标准化'的工作空间

(2)大体框架

'宏变量'和'默认位置' --> '对应关系'

   目录名('包含s')  -->  宏代码('%_+目录名去S+然后小写+dir')

    SPECS              %_specdir

   目录名('不包含s') -->  宏代码('%_+目录名小写+dir')
     
    BUILD              %_builddir

说明:  'BUILDROOT初始化'的时候'不存在',所以初始子目录'只有5个'

宏理解: ​ '映射关系'

需求1:查询宏变量的含义 

'精准查找'宏变量 --> rpm --eval %{...}

需求2:改变rpmbuild建立的目录

man rpmbuild  -->'加载顺序'

后记:'后者'这4个文件都是rpmrc相关的内容,rpmrc主要是用来定义一些'跟平台特型相关的一些选项'

'改变次默认位置',可以修改配置文件:~/.rpmmacros中'变量_topdir对应的值' -->'实际是覆盖'

%_topdir /mnt/rpmbuild

测试

制作rpm包用到的宏变量

'/usr/lib/rpm/macros'文件中定义所有

自己一些宏出处

spec中'Release的出处'

Release:        1%{?dist}

vim /usr/lib/rpm/rpmrc

(1)'rpm软件包'最终形式

569 %_build_name_fmt    %%{ARCH}/%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm

(2)rpm --eval %{u2p}

'/'

再次提醒:有什么'不懂的宏'直接利用'上述命令查询即可'
'并行编译':充分利用cpu  -->make的'时候'

x86_64架构'编译参数'

补充

标准  -->  '系统定义的'

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值