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

相关推荐
小成2023032026515 分钟前
Linux高级02
linux·开发语言
mounter62517 分钟前
【硬核前沿】CXL 深度解析:重塑数据中心架构的“高速公路”,Linux 内核如何应对挑战?-- CXL 协议详解与 LSF/MM 最新动态
linux·服务器·网络·架构·kernel
++==28 分钟前
Linux 进程间通信与线程同步技术详解:IPC 机制、线程 API、同步工具与经典同步问题
linux
特长腿特长43 分钟前
centos、ubantu系列机的用户和用户组的结构是什么?具体怎么配置?用户组权限怎么使用?这篇文章持续更新,帮助你复习linux的基础知识
linux·运维·centos
zzzyyy5381 小时前
Linux环境变量
linux·运维·服务器
pluvium271 小时前
记对 xonsh shell 的使用, 脚本编写, 迁移及调优
linux·python·shell·xonsh
无级程序员1 小时前
centos7 安装 llvm-toolset-7-clang出错的问题解决
linux·centos
CHHC18802 小时前
NetCore树莓派桌面应用程序
linux·运维·服务器
云栖梦泽3 小时前
Linux内核与驱动:9.Linux 驱动 API 封装
linux·c++
si莉亚4 小时前
ROS2安装EVO工具包
linux·开发语言·c++·开源