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 和运维人员的利器,能极大提高软件分发的效率。

相关推荐
Baklib梅梅26 分钟前
2025 年 8 个最佳网站内容管理系统(CMS)
前端·ruby on rails·前端框架·ruby
白鹭1 小时前
MySQL主从复制进阶(GTID复制,半同步复制)
linux·运维·数据库·mysql·集群
叫我Zoe就行1 小时前
MySQL集群——主从复制
linux·数据库·学习·mysql
博语小屋1 小时前
进程控制之进程等待
linux
Dobby_052 小时前
【Linux】网络安全管理:SELinux 和 防火墙联合使用 | Redhat
linux·运维·云原生·防火墙·selinux
wheeldown2 小时前
【Linux】Linux进程状态和僵尸进程:一篇看懂“进程在忙啥”
linux·运维·服务器·进程
jzwalliser2 小时前
关于Linux生态的补充
linux·语言暴力
半桔2 小时前
【Linux手册】动静态库:从原理到制作
linux·运维·服务器·动态库
z202305082 小时前
Linux之块设备的多队列的实现机制
linux·运维·服务器
liulilittle2 小时前
Unix/Linux 平台通过 IP 地址获取接口名的 C++ 实现
linux·开发语言·c++·tcp/ip·unix·编程语言