RPM快速打包

RPM快速打包python

 

Linux目前安装软件的方式有三种:json

1.源码安装,优势是能够自定义安装目录和一些配置文件,可是须要事先调整编译参数,比较麻烦。centos

2.Yum安装软件,优势是全自动安装,不须要为依赖的问题发愁,可是他的自主性太差,软件的功能和存放的位置都是已经放置好的,不容易改变。ruby

3.Rpm安装,这种相对上面来讲是比较方便的。既能够有自主性,又能够实现全自动安装。工具

 

一.下面就来介绍rpm包的制做:post

之前都是用rpmbuild来制做的,我的以为是比较麻烦的,因此下面我不会介绍,而我要介绍的是一个比较快速制做rpm包的工具fpm(实际上是一种格式转换工具)ui

1.支持的源类型包centos7

 Dir 将目录打包成所须要的类型,能够用于源码编译安装的软件包spa

 Rpm 对rpm进行转换rem

 Gem 对rubygem包进行转换

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

 

2.支持的目标类型包

 Rpm 转换为rpm包

 Deb 转换为deb包

 Solaris 转换为solaris包

 Puppet 转换为puppet模块

 

3.Fpm安装

fpm是ruby写的,所以系统环境须要ruby,且ruby版本大于1.8.5

#安装ruby模块

yum -y install ruby rubygems ruby-devel

#查看当前rubygem仓库

gem sources list

#由于国外的源比较慢因此咱们要添加国内的源,移除原来的源

gem sources --add https://ruby.taobao.org/

或者

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

#移除原有的源

gem sources --remove http://rubygem.org/

#安装fpm,gem从rubygem仓库安装软件相似于yum安装。

Gem install json -v 1.8.3

Gem install fpm -v 1.3.3

#上面的两步主要是针对于centos6,若是是centos7的话咱们直接就执行    gem install fpm

 

4.Fpm参数

详情请参考fpm --help

常见参数:

-s 指定源类型

-t 指定目标类型,就是你想要制做什么包

-n 指定包的名字

-v 指定包的版本号

-C 指定打包的相对路径

-d 指定依赖于哪些包

-f 第二次打包时候目录下若是有同名的安装包存在则直接覆盖

-p 输出安装包的目录,若是不想放在当前目录下则必须指定

--post-install 软件包安装完成后须要运行的脚本等于--after-install

--pre-install 软件包完成以前所要运行的脚本等于--before-install

--post-uninstall 卸载软件包以后所要运行的脚本--after-remove

--pre-uninstall 卸载软件包以前所要运行的脚本--before-remove

 

实例:

Example:我这里有一个monitor的目录,是我一些脚本的合集,我要将他转换成rpm包,到时候经过rpm安装。

1)执行:fpm -s dir -t rpm -n monitor -v 1.0 /root/monitor-base-2/

 

生成一个monitor-1.0-1.x86_64.rpm的rpm包

2)rpm -ivh monitor-1.0-1.x86_64.rpm

在当前目录安装完成。

或者:yum localinstall monitor-1.0-1.x86_64.rpm也是能够搞定的。

 

#rpm -qpl能够查看包里面的内容,这个仍是比较好用的

rpm -qpl  monitor-1.0-1.x86_64.rpm

注意:用rpm -ivh 安装会存在依赖性问题,而后就会报错。因此必须先安装依赖文件而后再运行rpm -ivh。可是若是用yum  localinstall 则会很爽。由于他是先安装依赖文件而后在安装包的,我比较建议这个。

相关文章
相关标签/搜索