支持的源類型包:
- dir: 將目錄打包成所需要的類型,可以用於源碼編譯安裝的軟件包
- rpm: 對rpm進行轉換
- gem: 對rubygem包進行轉換
- python: 將Python模塊打包成相應的類型
支持的目標類型包:
- rpm: 轉換為rpm包
- deb: 轉換為deb包
- solaris: 轉換為solaris包
- puppet: 轉換為puppet包
FPM的安裝:
安裝ruby環境和gem命令:
yum -y install ruby rubygems ruby-devel
gem命令是從rubygem倉庫安裝軟件類似yum從yum倉庫安裝軟件
查看當前源:
[root@localhost~]# gem source list *** CURRENT SOURCES *** http://rubygems.org/
添加國內源:
[root@localhost~]# gem sources -a http://mirrors.aliyun.com/rubygems/
移除國外源:
[root@localhost~]# gem sources --remove http://rubygems.org/
安裝FPM工具:
[root@localhost~]# gem install fpm
[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.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
[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/
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相對路徑打包:
[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下:
[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執行的腳本
[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包的依賴
[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包中的內容:
rpm -qpl zabbix-3.0-1.x86_64.rpm
鏡像同步公網YUM源:
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源:
rsync://mirrors.ustc.edu.cn/epel/6/x86_64/
命令:reposync
參考文檔:
http://blog.oldboyedu.com/autodeploy-rpm/
http://www.zyops.com/autodeploy-rpm