借助fpm輕鬆打包rpm

2021-10-06 18:56:49 字數 2544 閱讀 2826

fpm的目標是使構建軟體包(如rpm,deb,osx軟體包等)變得容易且快速。

簡單說就是將一種型別的包轉換成另一種型別。

fpm是ruby寫的,因此系統環境需要ruby,centos 7需要ruby版本號大於2.2。

安裝ruby模組

yum -y install ruby rubygems ruby-devel rpm-build

檢視當前使用的rubygems倉庫

gem sources list

新增**的rubygems倉庫,外國的源慢,移除原生的ruby倉庫

gem sources --add --remove

安裝fpm,gem從rubygem倉庫安裝軟體類似yum從yum倉庫安裝軟體。

gem install fpm

ps: 遇到安裝錯誤請檢查ruby版本

-s          指定源型別

-t 指定目標型別,即想要製作為什麼包

-n 指定包的名字

-v 指定包的版本號

-c 指定打包的相對路徑 change directory to here before searching forfiles

-d 指定依賴於哪些包

-f 第二次打包時目錄下如果有同名安裝包存在,則覆蓋它

-p 輸出的安裝包的目錄,不想放在當前目錄下就需要指定

--post-install 軟體包安裝完成之後所要執行的指令碼;同--after-install

--pre-install 軟體包安裝完成之前所要執行的指令碼;同--before-install

--post-uninstall 軟體包解除安裝完成之後所要執行的指令碼;同--after-remove

--pre-uninstall 軟體包解除安裝完成之前所要執行的指令碼;同--before-remove

建立資料夾

mkdir -p /opt/server/

建立使用者

useradd -s /sbin/nologin -m www

wget

tar zxvf nginx-1.16.1.tar.gz

yum安裝依賴

yum install -y pcre-devel openssl-devel

編譯安裝

make install準備安裝用到的指令碼

[root@localhost scripts]# cat /opt/server/scripts/nginx_install_before.sh

#!/bin/bash

useradd www -s /sbin/nologin -m

mkdir -p /etc/nginx

[root@localhost scripts]# cat /opt/server/scripts/nginx_install_after.sh

#!/bin/bash

ln -s /usr/local/nginx/sbin/* /usr/local/sbin/

ln -s /usr/local/nginx/conf/nginx.conf /etc/nginx

打包rpm,預設輸出到當前路徑

fpm -s dir -t rpm -n nginx -v 1.16.1 -d 'pcre-devel,openssl-devel' --before-install /opt/server/scripts/nginx_install_pre.sh --after-install /opt/server/scripts/nginx_install_post.sh -f /usr/local/nginx/
rpm命令安裝

[root@localhost~]# rpm -ivh nginx-1.16.1-1.x86_64.rpm

error: failed dependencies:

pcre-devel is needed by nginx-1.16.1-1.x86_64

openssl-devel is needed nginx-1.16.1-1.x86_64

但會報如上依賴錯誤,需要先yum安裝依賴才能安裝rpm包。

yum命令安裝rpm包

yum -y localinstall nginx-1.16.1-1.x86_64.rpm

這個命令會自動先安裝rpm包的依賴,然後再安裝rpm包。

離線網路下需要先搭建本地yum源

FPM定製RPM包實踐

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

使用FPM封裝RPM包

無意中看到一張架構圖,遷出 使用本地fpm打包,看不懂fpm是什麼高階玩意,於是有了下文。簡單的說fpm就是將一種型別的包轉換到另外一種的型別。比如我們常說的將編譯安裝的包轉換到rpm包。進一步的官方說明可參考 支援的源型別包有 rpm npm rubygem ded python dir 支援的輸...

FPM定製RPM包實踐

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