RPM快速打包python
Linux目前安裝軟件的方式有三種:json
1.源碼安裝,優勢是能夠自定義安裝目錄和一些配置文件,可是須要事先調整編譯參數,比較麻煩。centos
2.Yum安裝軟件,優勢是全自動安裝,不須要爲依賴的問題發愁,可是他的自主性太差,軟件的功能和存放的位置都是已經放置好的,不容易改變。ruby
3.Rpm安裝,這種相對上面來講是比較方便的。既能夠有自主性,又能夠實現全自動安裝。工具
一.下面就來介紹rpm包的製做:post
之前都是用rpmbuild來製做的,我的以爲是比較麻煩的,因此下面我不會介紹,而我要介紹的是一個比較快速製做rpm包的工具fpm(實際上是一種格式轉換工具)ui
1.支持的源類型包centos7
Dir 將目錄打包成所須要的類型,能夠用於源碼編譯安裝的軟件包spa
Rpm 對rpm進行轉換rem
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 則會很爽。由於他是先安裝依賴文件而後在安裝包的,我比較建議這個。