因为fpm依赖于ruby环境,所以我们先安装环境
yum install -y ruby ruby-devel rubygems
添加 TUNA 源并移除默认源
gem sources --add https://mirrors.tuna.tsinghua.edu.cn/rubygems/ --remove https://rubygems.org/
列出已有源
gem sources -l
查看的时候会只有一个新的源
gem install fpm
====> 显示源的地址:https://mirrors.tuna.tsinghua.edu.cn/rubygems/ -
安装fpm
安装fpm正确界面
[root@m1_m.61 08:10:26 ~]# gem install fpm <========此命令可能受网络原因影响,需要执行多次
Fetching: cabin-0.9.0.gem (100%)
Successfully installed cabin-0.9.0
Fetching: backports-3.14.0.gem (100%)
Successfully installed backports-3.14.0
Fetching: arr-pm-0.0.10.gem (100%)
Successfully installed arr-pm-0.0.10
Fetching: clamp-1.0.1.gem (100%)
Successfully installed clamp-1.0.1
正式制作rpm包
制作rpm包:(制作的包会显示在当前目录)
[root@m1_m.61 08:14:35 /application]# fpm -s dir -t rpm -n nginx -v 1.16.0 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_rpm.sh -f /application/nginx-1.16.0/
Created package {:path=>"nginx-1.16.0-1.x86_64.rpm"}
[root@m1_m.61 08:14:52 /application]# ll
total 2696
lrwxrwxrwx 1 root root 26 Apr 30 18:35 nginx -> /application/nginx-1.16.0/
drwxr-xr-x 11 root root 151 Apr 30 18:37 nginx-1.16.0
-rw-r--r-- 1 root root 2757738 May 7 08:14 nginx-1.16.0-1.x86_64.rpm
>上条命令详解
fpm -s dir -t rpm -n nginx
指定 源类型 指定目标类型 指定包的名字
-v 1.16.0 -d 'pcre-devel,openssl-devel'
指定包的版本 指定依赖于哪些包
--post-install /server/scripts/nginx_rpm.sh (此脚本只要创建即可,不需要写入内容)
软件包安装完成之后所要运行的脚本
-f /application/nginx-1.16.0/
第二次打包时目录下如果有同名安装包存在,则覆盖它
>
-s 指定源类型
-t 指定目标类型,即想要制作为什么包
-n 指定包的名字
-v 指定包的版本号
-C 指定打包的相对路径 Change directory to here before searching forfiles
-d 指定依赖于哪些包
-f 第二次打包时目录下如果有同名安装包存在,则覆盖它
-p 输出的安装包的目录,不想放在当前目录下就需要指定
--post-install 软件包安装完成之后所要运行的脚本;同--after-install
--pre-install 软件包安装完成之前所要运行的脚本;同--before-install
--post-uninstall 软件包卸载完成之后所要运行的脚本;同--after-remove
--pre-uninstall 软件包卸载完成之前所要运行的脚本;同--before-remove
>使用rpm -qpl 命令可以查看rpm包的内容。
>注:fpm类似tar打包一样,只是fpm打的包能够被yum命令识别而已。
>软链接可以打包成rpm包,但是打包后里面的内容只有一个软链接