Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 系統下使用 FPM 快速構建 RPM 包實戰指南

編輯:關於 Linux

FPM(Effing Package Management)是一款強大的跨平台打包工具,能將目錄、Gem、Python 包等來源轉換為 RPM、DEB 等原生安裝包,並支援安裝/卸載腳本鉤子,極大簡化了 Linux 軟體分發流程。本文以打包 LuaJIT 為例,詳細演示 FPM 的安裝、基本參數與完整構建流程。

一、FPM 核心參數速查

參數用途
--pre-install安裝前執行的腳本文件路徑
--post-install安裝後執行的腳本文件路徑
--pre-uninstall卸載前執行的腳本文件路徑
--post-uninstall卸載後執行的腳本文件路徑

二、環境準備與 FPM 安裝

# 安裝 Ruby 與構建依賴 (RHEL/CentOS)
yum -y install ruby rubygems ruby-devel rpm-build

# 更換 Gem 源為國內鏡像 (加速下載)
gem sources -a https://ruby.taobao.org/
gem sources -r https://rubygems.org/

# 安裝 FPM
gem install fpm

三、實戰:打包 LuaJIT 2.0.4 為 RPM

  1. 建立臨時安裝目錄:
    mkdir /tmp/luajit
  2. 下載並編譯源碼:
    cd /usr/local/src
    wget https://luajit.org/download/LuaJIT-2.0.4.tar.gz
    tar xvzf LuaJIT-2.0.4.tar.gz
    cd LuaJIT-2.0.4
    make PREFIX=/usr
    make install PREFIX=/usr DESTDIR=/tmp/luajit
    

    此處 DESTDIR 將編譯產物重定向至臨時目錄,模擬安裝根目錄結構。

  3. 使用 FPM 生成 RPM:
    fpm -s dir -t rpm \
        -n LuaJIT -v 2.0.4 --iteration 1.el7 \
        -C /tmp/luajit/ \
        -p /root \
        --description 'luajit rpm package' \
        --url 'https://luajit.org'
    

    參數解析:

    • -s dir:來源類型為目錄樹
    • -t rpm:目標包格式
    • -n / -v:包名與版本
    • --iteration:發布號(如 1.el7 表示針對 EL7 的第 1 次構建)
    • -C:切換到打包根目錄
    • -p:輸出包存放路徑
  4. 驗證生成的包:
    rpm -qip /root/LuaJIT-2.0.4-1.el7.x86_64.rpm 查看元數據,rpm -qlp ... 列出文件清單。

FPM打包流程示意圖

四、進階技巧與注意事項

  • 依賴自動檢測:FPM 會嘗試通過 ldd 分析二進制依賴,但建議顯式添加 -d "libc.so.6" 等運行時依賴。
  • 腳本嵌入:將啟動腳本、配置文件模板放入 --post-install 等鉤子中,實現安裝後自動配置。
  • 跨平台打包:同一命令將 -t rpm 改為 -t deb 即可產出 Debian 包,實現一次構建多平台分發。
  • 版本管理:結合 CI/CD 流水線,用 Git 標籤自動賦予 -v 與 --iteration,實現語義化版本發布。

掌握 FPM 後,您將能以統一流程打包任何語言編寫的應用,消除手工編寫 Spec 文件的繁瑣,顯著提升交付效率與一致性。

Copyright © Windows教程網 All Rights Reserved