使用FPM封裝RPM包

2021-09-20 23:17:26 字數 4357 閱讀 2844

無意中看到一張架構圖,遷出**使用本地fpm打包,看不懂fpm是什麼高階玩意,於是有了下文。

簡單的說fpm就是將一種型別的包轉換到另外一種的型別。比如我們常說的將編譯安裝的包轉換到rpm包。

進一步的官方說明可參考:

支援的源型別包有:rpm、npm、rubygem、ded、python、dir

支援的輸出型別有:rpm、ded、solaris、puppet

本例只要介紹常用的rpm包製作方法,至於其它的功能可自行探索。

# 安裝ruby

yum -y install ruby rubygems ruby-devel

gem sources --add --remove

gem sources -l

gem install 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」意思一樣

#這個 -c 是相對路徑,在另外的伺服器上執行rmp -ivh 會安裝根目錄下

[root@rabbitmq02 ~]# fpm -s dir -t rpm -n website -v 1.0.1 -c /root/downloads/

created package

#絕對路徑,這個比較好用

[root@rabbitmq02 ~]# fpm -s dir -t rpm -n website -v 1.0.2 -f /root/downloads/

created package

# 自己對檔案進行增刪,然後到第二台伺服器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

created package

#自己對檔案進行增刪,然後到第二台伺服器rpm -uvh 包名進行公升級

[root@rabbitmq02 ~]# fpm -s dir -t rpm -n website -v 1.0.4 -f /root/downloads/

created package

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

第二台伺服器上,看看rpm包安裝的位置

使用FPM快速生成RPM包

許多朋友始終覺得rpm難做,主要是因為spec規則比較多,需要花精力去了解和熟悉。之前試用乙個叫checkinstall的工具,可以自動打rpm包。很久沒有維護了,在centos6上編譯有問題。雖然也有給打了patch,最終能用起來,可惜使用過程中還是會遇到諸多錯誤。如今巧遇fpm,一行命令就搞定r...

FPM定製RPM包實踐

問題 當領導給你 100 臺已經安裝好系統的伺服器,然後讓優化,讓你提出乙個快速部署方案。解答 1.tar 打包 先編譯安裝 打包 分發 解包 比如 mysql 打包後直接就可以使用 2.saltstack,puppet,ansible 3.定製 rpm yum 倉庫 yum 安裝 4.openst...

FPM定製RPM包實踐

問題 當領導給你 100 臺已經安裝好系統的伺服器,然後讓優化,讓你提出乙個快速部署方案。解答 1.tar 打包 先編譯安裝 打包 分發 解包 比如 mysql 打包後直接就可以使用 2.saltstack,puppet,ansible 3.定製 rpm yum 倉庫 yum 安裝 4.openst...