FPM定製RPM包實踐

2021-09-07 15:32:46 字數 3550 閱讀 7631

問題:當領導給你 100 臺已經安裝好系統的伺服器,然後讓優化,讓你提出乙個快速部署方案。

解答:1.tar 打包

先編譯安裝

打包--》分發--》解包(比如 mysql 打包後直接就可以使用

2.saltstack,puppet,ansible

3.定製 rpm yum 倉庫 yum 安裝

4.openstack 虛擬機器映象和 docker 容器分發

1、編譯安裝軟體,優點是可以定製化安裝目錄、按需開啟功能等,缺點是需要查詢並實驗出適合的編譯引數,諸如mysql之類的軟體編譯耗時過長。

2、yum安裝軟體,優點是全自動化安裝,不需要為依賴問題發愁了,缺點是自主性太差,軟體的功能、存放位置都已經固定好了,不易變更。

===>如果你現在還為是使用編譯安裝軟體還是使用yum安裝軟體發愁,那你就out了。

fpm的作者是jordansissel

fpm的github:

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

型別

說明

dir

將目錄打包成所需要的型別,可以用於原始碼編譯安裝的軟體包

rpm

對rpm進行轉換

gem

對rubygem包進行轉換

python

將python模組打包成相應的型別

型別

說明

rpm

轉換為rpm包

deb

轉換為deb包

solaris

轉換為solaris包

puppet

轉換為puppet模組

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

# 安裝ruby模組

yum -y install ruby rubygems ruby-devel

[root@test ~]# rpm -qa ruby rubygems ruby-devel

ruby-1.8.7.374-5.el6.x86_64

ruby-devel-1.8.7.374-5.el6.x86_64

rubygems-1.3.7-5.el6.noarch

# 檢視當前使用的rubygems倉庫

gem sources list

# 新增阿里雲的rubygems倉庫,外國的源慢,移除原生的ruby倉庫

gem sources -a 

gem sources --remove

# 安裝fpm,gem從rubygem倉庫安裝軟體類似yum從yum倉庫安裝軟體。首先安裝低版本的json,高版本的json需要ruby2.0以上,然後安裝低版本的fpm,夠用。

gem install json -v 1.8.3

gem install fpm -v 1.3.3

# 上面的2步安裝僅適合centos6系統,centos7系統一步搞定,即

gem install fpm

引數

引數說明

-s

指定源型別

-t

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

-n

指定包的名字

-v

指定包的版本號

-c

指定打包的相對路徑

-d

指定依賴於哪些包

-f

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

-p

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

--post-install

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

--pre-install

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

--post-uninstall

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

--pre-uninstall

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

至此,fpm工具安裝完成。

關於nginx的安裝,可以參考:

yum install -y pcre-devel openssl-devel

mkdir -p /server/tools

cd /server/tools

wget -q

ls -l nginx-1.10.2.tar.gz

useradd www -s /sbin/nologin -m

tar xf nginx-1.10.2.tar.gz

cd nginx-1.10.2

make

make install

[root@test ~]# cd /server/scripts/

[root@test scripts]# vim nginx_install_devel.sh

#!/bin/bash

useradd -m -s /sbin/nologin www -u 666

注意:在進行打包的時候要將訪問停止

killall nginx

[root@test ~]#  fpm -s dir -t rpm -n nginx -v 1.10.2 -d '

pcre-devel,openssl-devel

for epoch is set, defaulting to nil

no value

for epoch is set, defaulting to nil

created package

推薦使用yum 安裝

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

這個命令會自動先安裝rpm包的依賴,然後再安裝rpm包。另:可以搭建本地yum倉庫實現yum 安裝自動解決依賴關係

1

#簡易的搭建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包

使用fpm製作rpm包 安裝如下 製作rpm包,需要提前編譯好原始碼,這裡是將整個目錄打包成rpm包的 幫助資訊 n 生成的package名字 p 生成的package檔案輸出位置 v 生成的package版本 d,depends 生成的package依賴於什麼軟體,通常為 d name 或這 d ...