当前位置: 首页 > article >正文

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 安装
sudo apt update
sudo apt install -y ruby ruby-dev build-essential
CentOS/RHEL 安装
sudo yum install -y ruby ruby-devel gcc make rpm-build
Arch Linux 安装
sudo pacman -S ruby
macOS 安装(使用 Homebrew)
brew install ruby

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

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

更换 RubyGems 源
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:

sudo gem install --no-document fpm

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

fpm --version

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


3. FPM 的基本用法

FPM 使用的基本语法如下:

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

其中:

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

3.1 将目录打包成 DEB 软件包

fpm -s dir -t deb -n myapp -v 1.0.0 -C /path/to/app .

生成 myapp_1.0.0_amd64.deb

3.2 将目录打包成 RPM 软件包

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 包

fpm -s tar -t deb -n myapp -v 1.0.0 myapp.tar.gz

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

fpm -s dir -t deb -n myapp -v 1.0.0 --prefix /usr/local/bin -C /path/to/bin .

4. 进阶使用技巧

4.1 指定依赖项

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

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

4.2 指定维护者信息

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

4.3 添加描述信息

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


http://www.kler.cn/a/533087.html

相关文章:

  • 35.Word:公积金管理中心文员小谢【37】
  • Web服务器启动难题:Spring Boot框架下的异常处理解析
  • 神经网络参数量和运算量的计算- 基于deepspeed库和thop库函数
  • 路径规划之启发式算法之二十九:鸽群算法(Pigeon-inspired Optimization, PIO)
  • 基于LLM的路由在专家混合应用:一种新颖的交易框架,该框架在夏普比率和总回报方面提升了超过25%
  • 我的创作纪念日
  • B-树:解锁大数据存储和与快速存储的密码
  • 基于JavaWeb开发的Java+Jsp+SpringMVC漫威手办商城系统设计和实现
  • 1分钟基于腾讯云TI平台搭建DeepSeek大模型
  • 2025-2-3-sklearn学习(50) (51) 完结篇 零落成泥碾作尘,只有香如故。
  • Vite:现代前端开发的利器
  • Spring Security(maven项目) 3.0.3.0版本
  • 接口测试通用测试用例
  • 深度剖析八大排序算法
  • 【MySQL — 数据库基础】深入解析MySQL的约束操作
  • 如何获取sql数据中时间的月份、年份(类型为date)
  • 【大数据技术】本机PyCharm远程连接虚拟机Python
  • 【电脑系统】电脑突然(蓝屏)卡死发出刺耳声音
  • 第 11 课 Python 多线程
  • idea中git的简单使用
  • 基于RK3588/RK3576+MCU STM32+AI的储能电站电池簇管理系统设计与实现
  • OpenAI的第二个AI Agent:Deep Research完全解读!
  • CTFSHOW-WEB入门-命令执行71-77
  • 【C++】STL——vector底层实现
  • 如何构建ObjC语言编译环境?构建无比简洁的clang编译ObjC环境?Windows搭建Swift语言编译环境?
  • MYSQL面试题总结(题目来源JavaGuide)