组内准备搭建内部yum源,在这之前需要规范软件的安装目录,并把现有的应用打包。 目前接触两种rpm打包工具,rpmbuild和fpm。- rpmbuild rpmbuild关键是spec文件编写。 环境搭建 yum - ...
组内准备搭建内部yum源,在这之前需要规范软件的安装目录,并把现有的应用打包。
目前接触两种rpm打包工具,rpmbuild和fpm。
- rpmbuild
rpmbuild关键是spec文件编写。
环境搭建
yum -y install rpm-build rpmdevtools
useradd rpm; su rpm
注: rpm打包需要特定目录下,在近期版本下rpmbuild可以在非root账号家目录下创建打包目录:
rpmdev-setuptree
[rpm@vm-1-lz rpmbuild]$ ll
total 20
drwxrwxr-x. 2 rpm rpm 4096 Dec 22 14:46 BUILD
drwxrwxr-x. 2 rpm rpm 4096 Dec 22 14:46 RPMS
drwxrwxr-x. 2 rpm rpm 4096 Dec 22 15:06 SOURCES
drwxrwxr-x. 2 rpm rpm 4096 Dec 22 16:07 SPECS
drwxrwxr-x. 2 rpm rpm 4096 Dec 22 14:46 SRPMS
[rpm@vm-1-lz rpmbuild]$
注:这里是/home/rpm/rpmbuild, 这个默认目录可以修改,可以修改宏定义:
/usr/lib/rpm/macros:
_topdir %{getenv:HOME}/rpmbuild
然后在rpmbuild/SPECS 目录下创建spec文件:
cd ~/rpmbuild/SPECS
rpmdev-newspec -o example.spec
SPEC文件
打包过程是
1. %prep 解压source部分定义的压缩包到 %build目录下
注:Source需要是tar格式压缩文件,这样setup才能调用 (source 跟setup可以多条记录,并依序对应)
2 %build 可以调用%configure宏变量或是直接调用configure命令直接配置
3 %install 安装文件到%buildroot下 (rpmbuild/BUILDROOT), 在这部分,需要确保目录已经存在不然会报错,比如拷贝配置文件到/etc/下,需要建立%buildroot/etc 目录
注:%install 部分是用绝对路径的,所以最好引用%buildroot
4 %file 部分定义那些文件将被打包进rpm包里
注:%file部分是用相对路径,我们可以用宏变量 比如%_prefix 代表/usr 其绝对路径就是%buildroot/usr
参考 http://fedoraproject.org/wiki/Packaging:RPMMacros
- fpm 打包
这是一个开源的项目 https://github.com/jordansissel/fpm
环境搭建:
yum -y ruby ruby-devel rubygems rpm-build
gem install fpm
注: 这里有个坑。如果正常按照gem去安装 我们是没办法调用 fpm成功的,因为 cabin的版本有问题:
[root@vm-1-lz RPMS]# fpm
/usr/lib/ruby/gems/1.8/gems/cabin-0.8.0/lib/cabin/mixins/logger.rb:12:in `included': undefined method `options' for #<Cabin::Subscriber:0x7fad75e31b90> (NoMethodError)
from /usr/lib/ruby/gems/1.8/gems/cabin-0.8.0/lib/cabin/channel.rb:105:in `call'
....
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:构建本地yum源之rpmbuild
关键词:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。