Linux下制作rpm包工具fpm
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下制作rpm包工具fpm相关的知识,希望对你有一定的参考价值。
fpm工具安装
CentOS 6.x下安装
#centos6 由于自带yum源中的ruby版本太低,需要如下安装:
yum -y install rpm-build
yum update nss
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -sSL https://get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh
rvm install 1.9.3
gem install fpm
rvm use 1.9.3 --default #选择ruby版本
CentOS 7.x下安装
#安装ruby:
yum -y install ruby rubygems ruby-devel rpm-build
gem install fpm
FPM常用参数
- -f :强制覆盖[覆盖同名rpm包]
- -n :指定的rpm包名
- -p :指定的rpm包文件放置位置
- -v :指定的rpm包版本
- -d :指定依赖的软件 ( [-d ‘name‘] or [-d ‘name > version‘] 例子: -d ‘libstdc++ >= 4.4.3‘)
- -a :指定系统架构,如果是noarch则为‘-a all‘ 或者 ‘-a native‘ [x86_64] 当软件不区分64位或32位的时候可以 noarch
- -s :指定INPUT的数据类型 (["-s dir"] 省略数据类型)
- -m :指定打包人员[Packager] ([ -m ‘user‘])
- -C :指定打包的相对路径,类似于buildroot. 譬如-C /tmp/apr/ 而打包机器的数据包路径是/tmp/apr/{opt,usr,etc} 那安装这个rpm包后,在本地的数据就是/opt/,/usr/,/etc/
- -t :指定需要制作成什么包,可选项有(deb,rpm,solaris,etc)
- 支持的源类型::
"dir" "rpm" "gem" "python" "empty" "tar" "deb" "cpan" "npm" "osxpkg" "pear" "pkgin" "virtualenv" "zip" - 支持的目标类型:
"rpm" "deb" "solaris" "puppet" "dir" "osxpkg" "p5p" "puppet" "sh" "solaris" "tar" "zip"
- 支持的源类型::
- --description :软件包描述
- --conflicts :指定冲突软件
- --url :指定站点[惯例都是添加软件的官网 例如: --url "http://www.cnblog.com/roach57" ]
- --verbose :安装过程详细打印
- --after-install :包安装之后执行的脚本 也可写作 --post-install FILE
- --before-install :包安装之前执行的脚本
- --after-remove :包卸载之后执行的脚本
- --before-remove :包卸载之前执行的脚本
- --after-upgrade :包更新之后执行的脚本[仅支持 deb 和 rpm 这两种包]
- --before-upgrade :包更新之前执行的脚本
- --pre-install rpm包安装前执行的脚本
- --post-install rpm包安装后执行的脚本
- --pre-uninstall rpm包卸载前执行的脚本
- --post-uninstall rpm包卸载后执行的脚本
- --iteration :发布序号[就是rpm包里面的release]
- --epoch :纪元 [不知道干嘛用的]
- --no-rpm-sign :不使用rpm签名 Signature
- --license :证书许可 [可选项有 ‘BSD(开源软件)‘ ‘GPLv2(自由软件)‘ ‘MIT‘ ‘Public Domain(公共域)‘ ‘Distributable(贡献)‘ ‘commercial(商业)‘ ‘Share(共享)等‘,一般的开发都写‘BSD‘或‘GPL‘]
- --vendor :供应商名称 [ --vendor ‘roach57@163.com‘]
- --no-depends :代表没有任何依赖包,和-d是对立的,不能共用
- --config-files :指定配置文件,可以指定目录[递归]
- --directories :指定包目录
- --category :软件所属的类别[这是个什么软件]下面有个对应的表格:
[参考这个文件 /usr/share/doc/rpm-x.x.x/GROUPS ] Amusements/Games [娱乐/游戏] Amusements/Graphics [娱乐/图形] Applications/Archiving [应用/文档] Applications/Communications [应用/通讯] Applications/Databases [应用/数据库] Applications/Editors [应用/编辑器] Applications/Emulators [应用/仿真器] Applications/Engineering [应用/工程] Applications/File [应用/文件] Applications/Internet [应用/因特网] Applications/Multimedia [应用/多媒体] Applications/Productivity [应用/产品] Applications/Publishing [应用/印刷] Applications/System [应用/系统] Applications/Text [应用/文本] Development/Debuggers [开发/调试器] Development/Languages [开发/语言] Development/Libraries [开发/函数库] Development/System [开发/系统] Development/Tools [开发/工具] Documentation [文档] System Environment/Base [系统环境/基础] System Environment/Daemons [系统环境/守护] System Environment/Kernel [系统环境/内核] System Environment/Libraries [系统环境/函数库] System Environment/Shells [系统环境/接口] User Interface/Desktops [用户界面/桌面] User Interface/X [用户界面/X窗口] User Interface/X Hardware Support [用户界面/X硬件支持]
示例
fpm -f -s dir -t rpm -n moxopenssl --epoch 0 -v 1.0.1g --iteration 1.el6 -C /rpms/openssl/ -d ‘gcc zlib zlib-devel make‘ -p /root --verbose --category ‘Applications/System‘ --description ‘openssl‘ --url ‘openssl.org‘ --license ‘BSD‘ -m ‘vaedit‘ --no-rpm-sign --after-install /rpms/openssl/after_install_openssl.sh --after-remove /rpms/openssl/after_remove_openssl.sh
fpm -f -s dir -t rpm -n moxlibiconv --epoch 0 -v 1.14 --iteration 1.el6 -C /rpms/libiconv/ -d ‘gcc libtool make‘ -p /root --verbose --category ‘Development/Libraries‘ --description ‘libiconv‘ --url ‘libiconv.org‘ --license ‘BSD‘ -m ‘vaedit‘ --no-rpm-sign
fpm -f -s dir -t rpm -n moxcmake --epoch 0 -v 2.8.8 --iteration 1.el6 -C /rpms/cmake/ -d ‘gcc make‘ -p /root --verbose --category ‘Development/Tools‘ --description ‘cmake‘ --url ‘cmake.org‘ --license ‘BSD‘ -m ‘vaedit‘ --no-rpm-sign
fpm -f -s dir -t rpm -n moxnginx --epoch 0 -v 1.4.4 --iteration 1.el6 -C /rpms/nginx/ -d ‘gcc pcre pcre-devel openssl openssl-devel httpd-devel make‘ -p /root --verbose --category ‘Applications/System‘ --description ‘nginx‘ --url ‘nginx.org‘ --license ‘BSD‘ -m ‘vaedit‘ --no-rpm-sign --after-install /rpms/script/after_install_nginx.sh --after-remove /rpms/script/after_remove_nginx.sh --before-install /rpms/script/before_install_nginx.sh
fpm -f -s dir -t rpm -n moxjava --epoch 0 -v 1.7 --iteration 1.el6 -C /rpms/java/ -d ‘gcc‘ -p /root --verbose --category ‘Applications/System‘ --description ‘java‘ --url ‘java.org‘ --license ‘BSD‘ -m ‘vaedit‘ --no-rpm-sign --after-install /rpms/java/after_install_java.sh --after-remove /rpms/java/after_remove_java.sh
fpm -f -s dir -t rpm -n moxzabbix --epoch 0 -v 3.0.15 --iteration 1.el6 -C /rpms/zabbix/ -d ‘gcc make‘ -p /root --verbose --category ‘Applications/System‘ --description ‘zabbix‘ --url ‘https://www.zabbix.com‘ --license ‘BSD‘ -m ‘vaedit‘ --no-rpm-sign --after-remove /rpms/script/after_remove_zabbix.sh
fpm -f -s dir -t rpm -n moxmysql --epoch 0 -v 5.6.39 --iteration 1.el6 -C /rpms/mysql56/ -d ‘gcc make ncurses ncurses-devel autoconf bison bison-devel perl perl-DBI perl-DBD-MySQL libtool zlib-devel‘ -p /root --verbose --category ‘Applications/Databases‘ --description ‘mysql‘ --url ‘mysql.org‘ --license ‘BSD‘ -m ‘vaedit‘ --no-rpm-sign --after-install /rpms/script/after_install_mysql.sh --after-remove /rpms/script/after_remove_mysql.sh --before-install /rpms/script/before_install_mysql.sh
fpm -f -s dir -t rpm -n moxmysql --epoch 0 -v 5.5.25 --iteration 1.el6 -C /rpms/mysql/ -d ‘gcc molongcmake make ncurses ncurses-devel autoconf bison bison-devel perl perl-DBI perl-DBD-MySQL libtool zlib-devel‘ -p /root --verbose --category ‘Applications/Databases‘ --description ‘mysql‘ --url ‘mysql.org‘ --license ‘BSD‘ -m ‘vaedit‘ --no-rpm-sign --after-install /rpms/script/after_install_mysql.sh --after-remove /rpms/script/after_remove_mysql.sh --before-install /rpms/script/before_install_mysql.sh
#打包python模块需要安装以下依赖
yum install python-devel python-setuptools -y
fpm -s python -t rpm --before-install=/root/before_install_pyiptables.sh setup.py
fpm -f -s python -t rpm -p /root/ setup.py
#经过测试发现打包的模块包安装后有问题,或者安装无效,有点坑,后用python官方自带的模块打包成功
查看rpm包具体信息
rpm -qpiR --scripts openssl-1.0.1g-1.el6.x86_64.rpm
指定安装根目录,也就是说该目录当成安装时的根目录,模拟安装,用来制作rpm时使用非常方便
make install DESTDIR=/whereto
以上是关于Linux下制作rpm包工具fpm的主要内容,如果未能解决你的问题,请参考以下文章