赞
踩
一 学习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参考
- (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
测试
'/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架构'编译参数'
补充
标准 --> '系统定义的'
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。