利用fpm制作rpm包


fpm概述

fpm是linux下的一款开源打包工具,可以用非常简单的方式,帮助你快速构建rpm、deb、solaris等包,支持如下操作系统:
OSX/macOS
Red Hat systems (Fedora 22 or older, CentOS, etc)
Oracle Linux 7.x systems
Debian-derived systems (Debian, Ubuntu, etc)
github地址:https://github.com/jordansissel/fpm
fpm官网帮助:https://fpm.readthedocs.io/en/latest/

fpm采用ruby语言开发,所以使用前,需要在你的机器上安装ruby环境。

fpm的详细选项

# FPM常用参数:

-s:指定源类型
-t:指定目标类型,即想要制作为什么包
-n:指定包的名字
-v:指定包的版本号
-(C:指定打包的相对路径
-d:指定依赖于哪些包
-f:第二次包时目录下如果有同名安装包存在,则覆盖它;
-p:制作的rpm安装包存放路径,不想放在当前目录下就需要指定;
-post-install:软件包安装完成之后所要运行的脚本;同–offer-install
-pre-install:软件包安装完成之前所要运行的脚本;同–before-install
-post-uninstall:软件包卸载完成之后所要运行的脚本;同–offer-remove
-pre-uninstall:软件包卸载完成之前所要运行的脚本;同—before-remove
-prefix:制作好的rpm包默认安装路径;
## 支持的源类型包:

dir: 将目录打包成所需要的类型,可以用于源码编译安装的软件包
rpm: 对rpm进行转换
gem: 对rubygem包进行转换
python: 将Python模块打包成相应的类型
## 支持的目标类型包:

rpm: 转换为rpm包
deb: 转换为deb包
solaris: 转换为solaris包
puppet: 转换为puppet包

fpm的安装

可参考官网安装步骤:https://fpm.readthedocs.io/en/latest/installing.html
### 安装ruby环境 ###
yum -y install ruby-devel gcc make rpm-build rubygems ruby
### 添加阿里的ruby源 ###
gem sources --add http://mirrors.aliyun.com/rubygems/

### 删除官方源 ####
gem sources --remove https://rubygems.org/

### 查看当前源 ###
gem sources -l

### 安装1.40版本的fpm
gem install fpm -v 1.4.0

解决版本太低无法安装问题

[root@db04 ~]# gem install fpm -v 1.4.0
ERROR:  Error installing fpm:
        logger requires Ruby version >= 2.5.0.
1、安装RVM(具体命令可以查看官网,Ruby官网地址 和 Ruby官网安装教程):
安装 GPG 密钥
gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

2. 安装rvm
使用source让当前shell读入路径为" /usr/local/rvm/scripts/rvm "(路径可以自定义)的shell文件并依次执行文件中的所有语句,并重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录
\curl -sSL https://get.rvm.io | bash -s

3.加载
source /usr/local/rvm/scripts/rvm

4.安装一个version >= 2.5 的 ruby版本 ## 时间偏长
## 查看库里的版本  rvm list known
rvm install 2.6.6

5. 查看ruby的版本
ruby -v

6.使用新的ruby版本
rvm use 2.6.6

8.卸载原默认版本
rvm remove 2.0.0

制作nginx rpm包

###################### 源码安装nginx
[root@db01 nginx-1.26.1]# yum install -y pcre-devel openssl-devel
[root@db01 ~]# tar xf nginx-1.26.1.tar.gz
[root@db01 ~]# ./configure --prefix=/app/nginx-1.26.1 --user=nginx --group=nginx
--with-http_ssl_module --with-http_stub_status_module
[root@db01 nginx-1.26.1]# make && make install



## 将源码包打包成rpm包
fpm -s dir -t rpm -n nginx -v 1.26.1 -d 'pcre-devel,openssl-devel' --post-install /root/install_nginx.sh -f /app/nginx-1.26.1/
mysql> update user set Host='%',select_priv='y', insert_priv='y',update_priv='y', Alter_priv='y',delete_priv='y',create_priv='y',drop_priv='y',reload_priv='y',shutdown_priv='y',Process_priv='y',file_priv='y',grant_priv='y',References_priv='y',index_priv='y',create_user_priv='y',show_db_priv='y',super_priv='y',create_tmp_table_priv='y',Lock_tables_priv='y',execute_priv='y',repl_slave_priv='y',repl_client_priv='y',create_view_priv='y',show_view_priv='y',create_routine_priv='y',alter_routine_priv='y',create_user_priv='y' where user='root';