fpm打包工具
版權歸屬原作者,原文轉自:https://www.cnblogs.com/saneri/p/5265661.html
date:2018-10-12? 18:48:25
?
支持的源類型包:
- ?dir: 將目錄打包成所需要的類型,可以用于源碼編譯安裝的軟件包
- ?rpm: 對rpm進行轉換
- ?gem: 對rubygem包進行轉換
- ?python: 將Python模塊打包成相應的類型
支持的目標類型包:
- rpm: 轉換為rpm包
- deb: 轉換為deb包
- solaris: 轉換為solaris包
- puppet: 轉換為puppet包
FPM的安裝:
安裝ruby環境和gem命令:
| 1 | yum -y install ruby rubygems ruby-devel |
gem命令是從rubygem倉庫安裝軟件類似yum從yum倉庫安裝軟件
?查看當前源:
| 1 2 3 | [root@localhost~]# gem source list *** CURRENT SOURCES *** http://rubygems.org/ |
添加國內源:
| 1 | [root@localhost~]# gem sources -a http://mirrors.aliyun.com/rubygems/ |
移除國外源:
| 1 | [root@localhost~]# gem sources --remove http://rubygems.org/ |
安裝FPM工具:
| 1 | [root@localhost~]# gem install fpm |
| 1 | [root@loaclhost~]#sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf??? //開啟yum緩存 |
FPM常用參數:
-s:指定源類型 -t:指定目標類型,即想要制作為什么包 -n:指定包的名字 -v:指定包的版本號 -C:指定打包的相對路徑 -d:指定依賴于哪些包 -f:第二次包時目錄下如果有同名安裝包存在,則覆蓋它 -p:輸出的安裝包的目錄,不想放在當前目錄下就需要指定 --post-install:軟件包安裝完成之后所要運行的腳本;同--offer-install --pre-install:軟件包安裝完成之前所要運行的腳本;同--before-install --post-uninstall:軟件包卸載完成之后所要運行的腳本;同--offer-remove --pre-uninstall:軟件包卸載完成之前所要運行的腳本;同—before-remove安裝遇到問題:
| 1 2 3 4 5 6 7 | 1.Need executable 'rpmbuild' to convert dir to rpm {:level=>:error} 解決方法: [root@localhost]# yum install -y rpm-build 2.如果里面有gcc make的錯誤. 解決方法: yum install -y gcc |
fpm打包實例:
1.fpm打包Nginx
| 1 2 3 4 | [root@localhost opt]# fpm -s dir -t rpm -n nginx -v 1.6.1 -d 'pcre-devel,openssl-devel' --post-install /opt/nginx_rpm.sh -f /opt/nginx/ <br> 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.1-1.x86_64.rpm"} |
2.fpm相對路徑打包:
| 1 2 3 4 | [root@localhost~]# fpm -s dir -t rpm -n opt -v 1.1.1.1 -d 'gcc,gcc+' -C ../opt/??? 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=>"opt-1.1.1.1-1.x86_64.rpm"} |
3.使用fpm將生成包指定到/tmp下:
| 1 2 3 4 5 | [root@bogon ~]# fpm -s dir -t rpm -n ansible-v 1.1.1.1 -d 'gcc,gcc+' -f ansible-p /tmp/ 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=>"/tmp/ansible-1.1.1.1-1.x86_64.rpm"} |
查看rpm包信息:
1.查看rpm執行的腳本
| 1 2 3 4 | [root@localhost opt]# rpm -qp --scripts nginx-1.6.1-1.x86_64.rpm??????? postinstallscriptlet (using /bin/sh): #!/bin/bash useraddnginx -M -s /sbin/nologin |
2.查看rpm包的依賴
| 1 2 3 4 5 | [root@localhost opt]# rpm -qpR nginx-1.6.1-1.x86_64.rpm? openssl-devel /bin/sh rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 |
3.查看rpm包中的內容:
| 1 | rpm -qpl zabbix-3.0-1.x86_64.rpm |
鏡像同步公網YUM源:
| 1 2 3 4 | centos官方標準源: rsync://mirrors.ustc.edu.cn/centos/6/os/x86_64/ rsync://mirrors.ustc.edu.cn/centos/6/extras/x86_64/ rsync://mirrors.ustc.edu.cn/centos/6/updates/x86_64/ |
epel源:
| 1 | rsync://mirrors.ustc.edu.cn/epel/6/x86_64/ |
命令:reposync
轉載于:https://www.cnblogs.com/kaishirenshi/p/9780156.html
總結
- 上一篇: 你的专业知识并不等于你的能力——如何提升
- 下一篇: springboot 配置DRUID数据