用fpm定制rpm安装包

参考http://blog.oldboyedu.com/autodeploy-rpm/

FPM打包工具

FPM的github:https://github.com/jordansissel/fpm

FPM功能简单说就是将一种类型的包转换成另一种类型。

1. 支持的源类型包

dir 将目录打包成所需要的类型,可以用于源码编译安装的软件包

rpm 对rpm进行转换

gem 对rubygem包进行转换

python 将python模块打包成相应的类型

2 FPM参数

详细使用见fpm –help

常用参数

  1. -s 指定源类型
  2. -t 指定目标类型,即想要制作为什么包
  3. -n 指定包的名字
  4. -v 指定包的版本号
  5. -C 指定打包的相对路径 Change directory to here before searching forfiles
  6. -d 指定依赖于哪些包
  7. -f 第二次打包时目录下如果有同名安装包存在,则覆盖它
  8. -p 输出的安装包的目录,不想放在当前目录下就需要指定
  9. --post-install 软件包安装完成之后所要运行的脚本;同--after-install
  10. --pre-install 软件包安装完成之前所要运行的脚本;同--before-install
  11. --post-uninstall 软件包卸载完成之后所要运行的脚本;同--after-remove
  12. --pre-uninstall 软件包卸载完成之前所要运行的脚本;同--before-remove

3 FPM安装

  1. fpm是ruby写的,因此系统环境需要ruby,且ruby版本号大于1.8.5。
  2. # 安装ruby模块
  3. yum -y install ruby rubygems ruby-devel gcc
  4. # 添加阿里云的Rubygems仓库,外国的源慢
  5. gem sources -a http://mirrors.aliyun.com/rubygems/
  6. # 移除原生的Ruby仓库
  7. gem sources --remove http://rubygems.org/
  8. # 安装fpm
  9. gem install fpm

遇到的错误

[[email protected]rpmbuild01 ~]# gem install fpm
Building native extensions.  This could take a while...
Building native extensions.  This could take a while...
ERROR:  Error installing fpm:
ruby-xz requires Ruby version >= 1.9.3.

解决方法是:我用的是第二种

1 更新ruby

解决办法2: 安装旧版本的fpm

[[email protected] ~]# gem install fpm -v 1.4.0

###########################################################################################

我测试的是定制nginx安装包

1 nginx软件包安装

yum -y install pcre-devel openssl-devel
useradd nginx -M -s /sbin/nologin
wget http://nginx.org/download/nginx-1.6.2.tar.gz
tar xf nginx-1.6.2.tar.gz
cd nginx-1.6.2
./configure --prefix=/application/nginx-1.6.2 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
make && make install
ln -s /application/nginx-1.6.2/ /application/nginx

2. 编写脚本

  1. mkdir -p /server/scripts/
    [[email protected] ~]# cd /server/scripts/
    [[email protected] scripts]# vim nginx_rpm.sh # 这是安装完rpm包要执行的脚本
    #!/bin/bash
    useradd nginx -M -s /sbin/nologin
    ln -s /application/nginx-1.6.2/ /application/nginx

3. 打包

  1. [[email protected] ~]# fpm -s dir -t rpm -n nginx -v 1.6.2 -d ‘pcre-devel,openssl-devel‘ --post-install /server/scripts/nginx_rpm.sh -f /application/nginx-1.6.2/
  2. 运行这个的时候出现了一个错误 Need executable ‘rpmbuild‘ to convert dir to rpm {:level=>:error}
  3. 解决办法是yum install rpm-build  安装完成之后再次执行上面的命令出现下面这个即为正常
  4. no value for epoch is set, defaulting to nil {:level=>:warn}
    no value for epoch is set, defaulting to nil {:level=>:warn}
    Created package {:path=>"nginx-1.6.2-1.x86_64.rpm"}
  5. [[email protected] ~]# ll -h nginx-1.6.2-1.x86_64.rpm
  6. -rw-r--r-- 1 root root 6.7M Nov 1 10:02 nginx-1.6.2-1.x86_64.rpm

如果出现了这个软件包代表成功了!

最后在新的机器上面安装这个定制的软件包,依赖关系自动解除

yum -y localinstall nginx-1.6.2-1.x86_64.rpm


安装完成之后启动nginx服务 /application/nginx-1.6.2/sbin/nginx

时间: 2024-08-28 00:28:16

用fpm定制rpm安装包的相关文章

RPM安装包-Spec文件参数详解与示例分析

spec文件是整个RPM包建立过程的中心,它的作用就如同编译程序时的Makefile文件. 1.Spec文件参数 spec文件包含建立一个RPM包必需的信息,包括哪些文件是包的一部分以及它们安装在哪个目录下.这个文件一般分为如下的几节: (1) Preamle(序言) 序言包含用户请求包的信息时所显示的内容.它可以包含包的功能描述.包的软件版本.版权信息和所属的包组等.Summary 是一行关于该软件包的描述,Name 是该软件包的基名,Version 是该软件的版本号,Release 是 RP

web项目集成tomcat+jdk+mysql+java项目源码rpm安装包一键安装

由于公司的需求,在全国各地现场客户安装javaweb项目,为了方便项目安装,需要在Linux系统中进行一键安装部署操作,本人采用xshell脚本集成jdk+tomcat+mysql+web项目进行打包处理,销售人员只需在客户现场的Linux系统中安装rpm安装包就可以成功部署项目.与此同时,在网上看到很多人提出需要将项目打成rpm安装的问题,在网上也没有一个很详细的资料可以参考,刚好我做了一个现成的rpm安装包,希望能帮到需要的朋友! 操作: 1.修改pea.spec文件内容,修改里面的mysq

制作MySQL RPM安装包Spec

适用环境: 数据库版本:MySQL 5.7.26 操作系统:CentOS 7 制作思路: 将数据库初始化和配置工作放到安装脚本中方便定制: 1.打包MySQL应用目录 2.不自动生成配置文件 3.不自动生成数据目录 4.不自动初始化数据 Spec代码: # ========================================= # # MySQL参数配置 # mysql源码路径 # 源码包版本 %global src_base mysql %global version 5.7.26

FPM定制RPM包

软件安装的常见方式: 1.编译安装: 优点:可以定制化安装目录,按需开启功能等. 缺点:需要查找并实验出合适的编译参数,诸如MySQL之类的软件编译耗时过长. 2.yum安装软件 优点:全自动化安装,不需要为依赖问题发愁. 缺点:自主性太差,软件的功能.存放位置都固定好了,不易变更(定制rpm包恰好解决这一问题) FPM打包工具: 1.简介: FPM的作者是Jordansissel FPM的GITHUB:https://github.com/jordansissel/fpm 官网:http://

通过定制nginx的rpm包学习如何制作rpm安装包

RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中.它生成具有.RPM扩展名的文件.使用rpm安装软件和管理软件非常的方便. 1.安装rpm-build [[email protected] ~]# yum -y install rpm-build redhat-rpm-config 2.建立目录结构 [[email protected] ~]# mkdir -p ~/rpmbuild/

yum仓库+fpm定制rpm包

试验环境: ip:yum 10.0.0.201 yum仓库 web 10.0.0.8 web(未安装nginx) yum端安装: 第一个里程碑:创建定制的rpm包 1.开启rpm包的缓存 sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf 2.清空已有缓存 find /var/cache/ -type f -name '*rpm'|xargs rm -f 3.编译安装nginx wget -O /etc/yum.repos.d/epel.repo

redhat下安装mysql 5.6.20,解压zip包,查看已经安装过的mysql,卸载rpm安装包,安装mysql服务器端和客户端,修改mysql用户名,登陆mysql,启动关闭mysql

 1 将相关的mysql rpm包上传到redhat上 2  我的电脑是Redhat 6.*版本,所以这里使用上面一个 3  解压zip包 4  安装以下几个rpm MySQL-client-advanced-5.6.20-1.el6.x86_64.rpm MySQL-server-advanced-5.6.20-1.el6.x86_64.rpm 5  查看已经安装过的mysql rpm –aq | grep mysql 结果: mysql-libs-5.1.66-2.el6_3.x86_6

linux rpm 安装包 信息查询

来源:http://blog.csdn.net/namesliu/article/details/6004388 以CentOS5.5 中已经集成安装了 Apache.MySQL.PHP作为样例,我们来探索一下其安装路径等信息,以利于我们的管理和使用.如果要重新安装这些软件的最新版本,也需要首先进入原先的路径,备份数据和有关配置,以备将来之用. 因为 CentOS5.5 是红帽子的产品,红帽子应该使用自己发明的 rpm(Redhat Package Manager)包管理方式来管理软件包,所以使

rpm安装包

1安装rpm 包  rpm -ivh   -i 安装 -v 可视化 -h显示进度 升级rpm 包  rpm -Uvh filename 卸载rpm包 rpm -e filename 查询包是否安装  rpm -q 包名 rpm -qa 查询系统所有安装的rpm包 2列出所有可用rpm包 yum list 搜索rpm包  yum search [关键词] 安装rpm包  yum install [-y] [rpm包名] 卸载rpm包  yun remove [-y] [rpm包名] 升级rpm 包