码迷,mamicode.com
首页 > 系统相关 > 详细

Linux下制作rpm包工具fpm

时间:2020-08-13 11:54:42      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:环境   --   too   aries   例子   databases   arc   graphic   文件   

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

标签:环境   --   too   aries   例子   databases   arc   graphic   文件   

原文地址:https://blog.51cto.com/vaedit/2519340

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!