1. 程式人生 > >使用FPM封裝RPM包

使用FPM封裝RPM包

orm 支持 follow img mtd org ima ems con

無意中看到一張架構圖,遷出代碼使用本地FPM打包,看不懂FPM是什麽高級玩意,於是有了下文。
技術分享圖片

FPM介紹

簡單的說FPM就是將一種類型的包轉換到另外一種的類型。比如我們常說的將編譯安裝的包轉換到rpm包。
進一步的官方說明可參考:
https://docs.google.com/present/view?id=0Aa9liCTsAyzRZGNtd3dkOTRfMTdmczY2azlkcg&hl=en
支持的源類型包有:rpm、npm、rubygem、ded、python、dir
支持的輸出類型有:rpm、ded、solaris、puppet
本例只要介紹常用的rpm包制作方法,至於其它的功能可自行探索。

FPM安裝

# 安裝ruby
yum -y install ruby rubygems ruby-devel
gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
gem sources -l
gem install fpm

使用FPM打RPM包

FPM常用參數

-s :指定源類型
-t :指定目標類型,即想要制作為什麽包
-n :指定包的名字
-v :指定包的版本號
-C :指定打包的相對路徑,即build directory
原文解釋為:Change directory to here before searching for files

-d --depends :指定依賴於哪些包
--post-install :軟件包安裝完成之後所要運行的腳本;和”--after-install” 意思一樣
--pre-install :軟件包安裝完成之前所要運行的腳本;和”--before-install” 意思一樣
--post-uninstall :軟件包卸載完成之後所要運行的腳本;和”--after-remove”意思一樣
--pre-uninstall:軟件包卸載完成之前所要運行的腳本;和”--before-remove”意思一樣

fpm封包rpm

#這個 -C 是相對路徑,在另外的服務器上執行rmp -ivh 會安裝根目錄下
[root@rabbitmq02 ~]# fpm -s dir -t rpm -n website -v 1.0.1 -C /root/downloads/

Created package {:path=>"website-1.0.1-1.x86_64.rpm"}
#絕對路徑,這個比較好用
[root@rabbitmq02 ~]# fpm -s dir -t rpm -n website -v 1.0.2 -f  /root/downloads/

Created package {:path=>"website-1.0.2-1.x86_64.rpm"}
# 自己對文件進行增刪,然後到第二臺服務器rpm -Uvh 包名進行升級
[root@rabbitmq02 ~]# fpm -s dir -t rpm -n website -v 1.0.3 -f  /root/downloads/
Force flag given. Overwriting package at website-1.0.3-1.x86_64.rpm {:level=>:warn}

Created package {:path=>"website-1.0.3-1.x86_64.rpm"}
#自己對文件進行增刪,然後到第二臺服務器rpm -Uvh 包名進行升級
[root@rabbitmq02 ~]# fpm -s dir -t rpm -n website -v 1.0.4 -f  /root/downloads/ 
Created package {:path=>"website-1.0.4-1.x86_64.rpm"}

註意:website-1.0.3-1.x86_64.rpm生成的包名要每次不一樣才能進行rpm -Uvh 升級,不懂的,需要rpm基礎

查看安裝包內容

第二臺服務器上,看看rpm包安裝的位置

[root@centos-docker ~]# rpm -qa|grep website
website-1.0.4-1.x86_64
[root@centos-docker ~]# rpm -ql website-1.0.4-1.x86_64
/root/downloads/3.txt
/root/downloads/python/2.txt
/root/downloads/python/login.py
/root/downloads/python/login.pyc
/root/downloads/python/logview.pyc
/root/downloads/python/sessions/068e4c1fbe06272c20bca327a50c46a200df9f1a
/root/downloads/web.py-0.33.tar.gz
/root/downloads/web.py-0.33/PKG-INFO
/root/downloads/web.py-0.33/build/lib/web/__init__.py
/root/downloads/web.py-0.33/build/lib/web/application.py
/root/downloads/web.py-0.33/build/lib/web/browser.py
/root/downloads/web.py-0.33/build/lib/web/contrib/__init__.py
/root/downloads/web.py-0.33/build/lib/web/contrib/template.py
/root/downloads/web.py-0.33/build/lib/web/db.py
/root/downloads/web.py-0.33/build/lib/web/debugerror.py
/root/downloads/web.py-0.33/build/lib/web/form.py
/root/downloads/web.py-0.33/build/lib/web/http.py
/root/downloads/web.py-0.33/build/lib/web/httpserver.py
/root/downloads/web.py-0.33/build/lib/web/net.py
/root/downloads/web.py-0.33/build/lib/web/session.py
/root/downloads/web.py-0.33/build/lib/web/template.py
/root/downloads/web.py-0.33/build/lib/web/test.py
/root/downloads/web.py-0.33/build/lib/web/utils.py
/root/downloads/web.py-0.33/build/lib/web/webapi.py
/root/downloads/web.py-0.33/build/lib/web/webopenid.py
/root/downloads/web.py-0.33/build/lib/web/wsgi.py
/root/downloads/web.py-0.33/build/lib/web/wsgiserver/__init__.py
/root/downloads/web.py-0.33/setup.py
/root/downloads/web.py-0.33/web/__init__.py
/root/downloads/web.py-0.33/web/application.py
/root/downloads/web.py-0.33/web/browser.py
/root/downloads/web.py-0.33/web/contrib/__init__.py
/root/downloads/web.py-0.33/web/contrib/template.py
/root/downloads/web.py-0.33/web/db.py
/root/downloads/web.py-0.33/web/debugerror.py
/root/downloads/web.py-0.33/web/form.py
/root/downloads/web.py-0.33/web/http.py
/root/downloads/web.py-0.33/web/httpserver.py
/root/downloads/web.py-0.33/web/net.py
/root/downloads/web.py-0.33/web/session.py
/root/downloads/web.py-0.33/web/template.py
/root/downloads/web.py-0.33/web/test.py
/root/downloads/web.py-0.33/web/utils.py
/root/downloads/web.py-0.33/web/webapi.py
/root/downloads/web.py-0.33/web/webopenid.py
/root/downloads/web.py-0.33/web/wsgi.py
/root/downloads/web.py-0.33/web/wsgiserver/__init__.py

使用FPM封裝RPM包