安装fpm

安装ruby

yum -y install ruby rubygems ruby-devel

查看当前ruby源

gem source -l

添加国内源,删除国外源

gem sources -a http://mirrors.aliyun.com/rubygems/ -r https://rubygems.org/

安装fpm

gem install fpm

报错:因为fpm由ruby开发,所以要升级ruby

升级ruby版本 

下载 GPG 公钥

gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
或
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import
或
curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import(我的选择)

下载rvm及设置环境

curl -L http://get.rvm.io | bash -s stable
source /usr/local/rvm/scripts/rvm

查看现有ruby版本

rvm list known

升级到2.4.0

rvm install 2.4.0

再次安装fpm

gem install fpm

fpm制作rpm包

常用参数

  • -s:指定源类型
  • -t:指定目标类型
  • -n:指定包名字
  • -v:版本
  • --prefix:安装xxx.rpm 安装包的位置(指定安装到的目录)
  • --rpm-digest:默认md5
  • --architecture:系统
  • --epoch:未知
  • --iteration:未知
  • --description:描述
  • --before-install:安装包前要运行的脚本
  • --after-install:安装包后要运行的脚本
  • --before-upgrade:升级包前要运行的脚本
  • --after-upgrade:升级包后要运行的脚本
  • --before-remove:删除包之前要运行的脚本
  • --after-remove:删除包后要运行的脚本
  • --package:打包后rpm的路径
  • --chdir:指定打包相对路径
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     :包更新之前执行的脚本
--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硬件支持]

实例

#!/bin/bashPROJECT_ROOT=${PWD}
TMP_ROOT=${PROJECT_ROOT}/target
BIN_PATH=${PROJECT_ROOT}/bin
PACKAGE_PATH=${PROJECT_ROOT}/packageclean()
{rm -rf ${PACKAGE_PATH}rm -rf ${TMP_ROOT}rm -rf ${BIN_PATH}
}build()
{mkdir -p ${BIN_PATH}go build -o ${BIN_PATH}/nta-agent main.go || exit 2
}installl()
{mkdir -p ${TMP_ROOT}install -d -p ${TMP_ROOT}/opt/nta-agent/serviceinstall -d -p ${TMP_ROOT}/opt/nta-agent/log/cp -prf bin/* ${TMP_ROOT}/opt/nta-agent/cp -prf service/* ${TMP_ROOT}/opt/nta-agent/service/cp -prf etc/* ${TMP_ROOT}/opt/nta-agent/
}package_rpm()
{if [ x`which fpm` == "x" ];thenecho "we can't find fpm command!"exit 1fimkdir -p ${PACKAGE_PATH}rpm_name=nta-agentrpm_version=2.0.1echo "rpm name : ${rpm_name}"echo "rpm version : ${rpm_version}"echo "building rpm"fpm -s dir -t rpm -n ${rpm_name} -v ${rpm_version} \--prefix /opt \--rpm-digest md5 \--architecture x86_64 \--epoch `git rev-list HEAD | wc -l` \--iteration `git rev-list HEAD | wc -l` \--description `date +'%Y-%m-%dT%H:%M:%S'` \--before-install ${PROJECT_ROOT}/install/before-install \--after-install ${PROJECT_ROOT}/install/after-install \--before-upgrade ${PROJECT_ROOT}/install/before-upgrade \--after-upgrade ${PROJECT_ROOT}/install/after-upgrade \--before-remove ${PROJECT_ROOT}/install/before-remove \--after-remove ${PROJECT_ROOT}/install/after-remove \--package ${PACKAGE_PATH} \--chdir ${TMP_ROOT} || exit 1echo "Package: ${PACKAGE_PATH}/${rpm_name}-${rpm_version}\*.rpm has been generated"
}case $1 in"clean")clean;;"build")build;;"install")installl;;"package")package_rpm;;*)cleanbuildinstalllpackage_rpm;;
esac

Centos7利用fpm制作rpm包(fpm安装及使用)相关推荐

  1. centos7使用rpmbuild制作rpm包

    本文作为我实验的一个总结文档,可能实现的功能比较简单,适合于想要简单入门使用的,希望对朋友们有所帮助 下载rpmbuild程序包 所用系统 centos7.6 yum install rpm-buil ...

  2. CentOS7中基于rpm包方式安装部署apm(php module模块)+ xcache

    CentOS 7, 基于rpm包方式安装部署apm(php module) : 要点: 一个虚拟主机提供phpMyAdmin,另一个虚拟主机提供wordpress: 1.配置环境: (1)关闭防火墙 ...

  3. linux如何运行rpm包,如何制作RPM包

    安装制作rpm工具rpmbuild yum install -y rpm-build 创建用户 注意: 创建rpm包一定不要使用root用户,因为root用户权限比较大,如果脚本编写错误的话,可能会导 ...

  4. 【rpm】源码包制作rpm包|修改rpm、重新制作rpm包

    目录 前言 安装rpmbuild rpmbuild制作rpm 包 同时生成devel包 修改rpm.重新制作rpm包 RPM 打包 工具 SPEC文件 spec文件关键字说明大全 rpmbuild的目 ...

  5. linux qt make文件或目录,rpm,linux_为Qt程序制作rpm包的spec文件里的路径问题,rpm,linux,qt,rpmbuild,spec - phpStudy...

    为Qt程序制作rpm包的spec文件里的路径问题 我对Qt和rpm都不怎么熟悉,所以在为Qt程序制作rpm包的时候被路径问题纠结到了. Qt的.pro文件的相关部分是这么写的,其中AppName是我的 ...

  6. linux内核源码制作rpm包,cmatrix源码包制作rpm包

    第一步:下载cmatrix.tar.gz(包含有已写好的cmatrix.spec文件) 第二步:检测编译环境: # yum isntall gcc gcc-c++ make rpm-bulid # r ...

  7. linux下程序制作rpm包,制作rpm包

    这文章我不记得在那转的了,已经有一段时间了 如何在linux或CentOS下制作RPM包 但我觉得单纯明白用.spec生成rpm是不够的.常见有两个原因值得我们去了解用如何用源码制作rpm: 引用 1 ...

  8. 制作mysql rpm包_一步步制作RPM包

    一.RPM制作步骤 我们在企业中有的软件基本都是编译的,我们每次安装都得编译,那怎么办呢?那就根据我们的需求制作RPM安装包吧.先来说说基本布骤: 1.Planning what you want   ...

  9. 简单了解如何自己动手制作RPM包

    导读 RPM文件在Linux系统中的安装最为简便.以著名的图像处理软件XV为例,其RPM包xv-3.10a-13.i386.rpm可以在该程序的主页中下载取得. 我们介绍如何自己动手制作RPM包. 0 ...

最新文章

  1. 面试官问:请拿出一段体现你水平的代码,我该如何回答?
  2. 类与面向对象的精华:继承【C++继承】
  3. mysql 语句性能分析_mysql的sql语句的性能诊断分析
  4. 黑苹果hp有声音hdmi无声音_黑科技!不戴耳机也能独享声音!以色列公司推出无耳机传输音乐...
  5. java jxl 写 excel_Java 操作Excel(jxl读和写)
  6. spring @Value注解#和$区别
  7. django:资源网站汇总
  8. eclipse左边的项目栏消失的处理方法
  9. Head First设计模式读书笔记八 第九章下 组合模式
  10. python3.7怎么用_Python 3.7.0 来了!
  11. ceph--磁盘和rbd、rados性能测试工具和方法
  12. 比亚迪半导体IPO再生波折:又被中止审核 红杉小米是股东
  13. 倾斜摄影测量数据的一些简析
  14. 苹果a14和骁龙888哪个厉害 苹果a14相当于骁龙多少
  15. 在EXCEL表格中经常会遇到有合并单元格时,汇总计算的公式无法直接下拉自动填充计算,掌握这个小技巧一键汇总
  16. SystemVerilog验证教程(二)--SystemVerilog Interface 和 Timing Region
  17. 【U8+】用友U8成本管理模块下,定额分配标准中无法取到新增存货的数据。
  18. 如何在Windows 7和Vista之间共享文件和打印机
  19. 两个PDF比较标出差异_PDF最全接触
  20. (伟大的dfs)洛谷P4961 小埋与扫雷

热门文章

  1. Python跨文件引用模块
  2. keyshot10 pro for mac最新版
  3. if函数python作用_if __name__== __main__ 的意思(作用)python代码复用
  4. 新建一个同名域能不能替换原域_能不能挣钱,从你最早设计猪场就已经决定了!...
  5. matlab调用sh函数,Shell 函数定义与调用
  6. mysql主从代替技术_mysql主从复制及失败切换
  7. STM32H743+CubeMX-定时器TIM发送非对称PWM(使用一个通道)
  8. VMWare笔记-解决虚拟机能ping通主机能上网,但主机ping不通虚拟机(含思路)
  9. Arduino笔记-定时器中断(MsTimer2库使用)
  10. C++笔记-const与mutable、static_cast与reinterpret_cast