FPM(Effing Package Management)安装与使用指南

1. 什么是 FPM?

FPM(Effing Package Management)是一个强大的命令行工具,旨在快速打包应用程序 。它能够将任意文件或目录转换为可安装的软件包,支持多种 Linux 发行版的包管理格式,如:

  • RPM (.rpm) ------ 适用于 CentOS、RHEL、Fedora
  • DEB (.deb) ------ 适用于 Debian、Ubuntu
  • TAR (.tar.gz) ------ 通用格式
  • PKG (.pkg) ------ 适用于 macOS
  • PUPPET (.puppet) ------ Puppet 管理的包

FPM 主要用于简化 Linux 发行版软件包的创建,使开发者和运维人员无需编写复杂的 spec 文件或 deb 控制文件即可打包应用。


2. 安装 FPM

2.1 安装 Ruby 和 gem

FPM 依赖 Ruby 及其包管理工具 gem,因此需要先安装 Ruby。

Debian/Ubuntu 安装
bash 复制代码
sudo apt update
sudo apt install -y ruby ruby-dev build-essential
CentOS/RHEL 安装
bash 复制代码
sudo yum install -y ruby ruby-devel gcc make rpm-build
Arch Linux 安装
bash 复制代码
sudo pacman -S ruby
macOS 安装(使用 Homebrew)
bash 复制代码
brew install ruby

2.2 配置 Ruby 镜像源(加速安装)

由于默认的 RubyGems 源访问较慢,可以更换为国内的 Ruby 镜像源(例如 TUNA 镜像)。

更换 RubyGems 源
bash 复制代码
gem sources --remove https://rubygems.org/
gem sources --add https://mirrors.tuna.tsinghua.edu.cn/rubygems/
gem sources -l  # 确认已更换

2.3 安装 FPM

安装完成 Ruby 之后,使用 gem 安装 FPM:

bash 复制代码
sudo gem install --no-document fpm

安装完成后,检查 FPM 是否安装成功:

bash 复制代码
fpm --version

如果正确输出 FPM 版本号,则表示安装成功!


3. FPM 的基本用法

FPM 使用的基本语法如下:

bash 复制代码
fpm -s <源类型> -t <目标格式> -n <包名> -v <版本号> -C <目录> 

其中:

  • -s:指定源类型(如 dir 代表目录,tar 代表压缩包)
  • -t:目标格式(如 debrpmtar
  • -n:包的名称
  • -v:包的版本号
  • -C:指定要打包的目录

3.1 将目录打包成 DEB 软件包

bash 复制代码
fpm -s dir -t deb -n myapp -v 1.0.0 -C /path/to/app .

生成 myapp_1.0.0_amd64.deb

3.2 将目录打包成 RPM 软件包

bash 复制代码
fpm -s dir -t rpm -n myapp -v 1.0.0 -C /path/to/app .

生成 myapp-1.0.0-1.x86_64.rpm

3.3 将 .tar.gz 转换为 DEB 包

bash 复制代码
fpm -s tar -t deb -n myapp -v 1.0.0 myapp.tar.gz

3.4 直接打包二进制文件(指定目标路径)

bash 复制代码
fpm -s dir -t deb -n myapp -v 1.0.0 --prefix /usr/local/bin -C /path/to/bin .

4. 进阶使用技巧

4.1 指定依赖项

有些应用程序需要特定的依赖项,在打包时可以使用 -d 参数:

bash 复制代码
fpm -s dir -t deb -n myapp -v 1.0.0 -C /path/to/app -d "libssl1.1" -d "libc6"

4.2 指定维护者信息

bash 复制代码
fpm -s dir -t deb -n myapp -v 1.0.0 -C /path/to/app --maintainer "admin@example.com"

4.3 添加描述信息

bash 复制代码
fpm -s dir -t deb -n myapp -v 1.0.0 -C /path/to/app --description "My Application Package"

5. 总结

  • FPM 是一个强大的打包工具 ,可简化 .deb.rpm 等包的创建。
  • 依赖 Ruby ,需要先安装 rubygem
  • 推荐使用国内镜像源 (如 TUNA)加速 gem 安装。
  • 支持目录、压缩包、二进制文件等多种打包方式
  • 可指定依赖、描述、维护者等信息,适用于自动化部署场景。

FPM 是 DevOps 和运维人员的利器,能极大提高软件分发的效率。

相关推荐
虾..1 小时前
Linux 软硬链接和动静态库
linux·运维·服务器
Evan芙1 小时前
Linux常见的日志服务管理的常见日志服务
linux·运维·服务器
hkhkhkhkh1233 小时前
Linux设备节点基础知识
linux·服务器·驱动开发
HZero.chen4 小时前
Linux字符串处理
linux·string
张童瑶4 小时前
Linux SSH隧道代理转发及多层转发
linux·运维·ssh
汪汪队立大功1234 小时前
什么是SELinux
linux
石小千5 小时前
Linux安装OpenProject
linux·运维
柏木乃一5 小时前
进程(2)进程概念与基本操作
linux·服务器·开发语言·性能优化·shell·进程
Lime-30905 小时前
制作Ubuntu 24.04-GPU服务器测试系统盘
linux·运维·ubuntu
百年渔翁_肯肯5 小时前
Linux 与 Unix 的核心区别(清晰对比版)
linux·运维·unix