来源:https://blog.csdn.net/xiaoxiao__cc/article/details/80999862

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

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

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

3.Rpm安装,这种相对上面来说是比较方便的。既可以有自主性,又可以实现全自动安装。

一.rpm包的制作:

以前都是用rpmbuild来制作的,个人觉得是比较麻烦的,所以下面我不会介绍,而我要介绍的是一个比较快速制作rpm包的工具fpm(其实是一种格式转换工具)

1.支持的源类型包

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

Rpm 对rpm进行转换

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 则会很爽。因为他是先安装依赖文件然后在安装包的,我比较建议这个。

查看原文 >>
相关文章