如何在Linux中打包软件 Linux fpm快速打包工具
发布时间 - 2025-08-28 00:00:00 点击率:次fpm是一个用Ruby编写的开源工具,可将目录、源码、Python包等快速打包为deb、rpm等格式,简化Linux软件分发。
在Linux中打包软件,很多人第一反应是使用
dpkg或
rpm这类工具,但手动编写控制文件、处理依赖、组织目录结构非常繁琐。一个更高效的方式是使用fpm(Effing Package Manager),它可以快速将软件打包成多种格式(如deb、rpm、tar等),无需深入了解各发行版的打包规范。
什么是fpm?
fpm是一个用Ruby编写的开源工具,由Jordan Sissel开发,目标是“让打包变得简单”。它能将源码、目录、gem、python包等输入,转换为deb、rpm、tar.g
z、apk等输出格式,极大简化了Linux软件分发流程。
安装fpm
确保系统已安装Ruby和gem(Ruby包管理器):
Ubuntu/Debian:sudo apt-get install ruby ruby-dev rubygems build-essential
sudo gem install fpmCentOS/RHEL/Rocky Linux:
sudo yum install ruby ruby-devel rubygems rpm-build
sudo gem install fpm
安装完成后,输入
fpm --version验证是否成功。
使用fpm打包示例
假设你有一个简单的程序放在
/opt/myapp/目录下,想打包为deb和rpm格式。
1. 打包目录为deb包
fpm -s dir -t deb -n myapp -v 1.0.0 --prefix /usr/local /opt/myapp
-s dir
:源类型是目录-t deb
:目标格式为deb-n myapp
:包名称-v 1.0.0
:版本号--prefix /usr/local
:安装路径前缀
生成的deb包可用于Ubuntu/Debian系统安装:
sudo dpkg -i myapp_1.0.0_amd64.deb
2. 打包为rpm包
fpm -s dir -t rpm -n myapp -v 1.0.0 --prefix /usr/local /opt/myapp
生成的rpm包可用于CentOS等系统:
sudo rpm -ivh myapp-1.0.0.x86_64.rpm
3. 添加依赖和描述
如果程序依赖
python3,可加入
--depends参数:
fpm -s dir -t deb -n myapp -v 1.0.0 --prefix /usr/local --depends python3 --description "My custom application" /opt/myapp
支持的源和目标类型
fpm支持多种输入和输出格式,灵活适配不同场景:
- 源类型(-s):dir(目录)、file(文件)、tar、zip、gem、python、rpm、deb等
- 目标类型(-t):deb、rpm、tar、tar.gz、zip、apk等
例如,将Python包打包为deb:
fpm -s python -t deb requests
基本上就这些。fpm不追求替代专业的打包体系,而是提供一种快速、实用的“临时打包”或“内部发布”方案,特别适合运维、DevOps和小型项目。掌握它,能让你在不同Linux发行版间更自由地分发软件。
# linux
# python
# centos
# ubuntu
# 工具
# amd
# 系统安装
# python包
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Python进程池调度策略_任务分发说明【指导】
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
原生JS实现图片轮播切换效果
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
*服务器网站为何频现安全漏洞?
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
java ZXing生成二维码及条码实例分享
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
,交易猫的商品怎么发布到网站上去?
LinuxShell函数封装方法_脚本复用设计思路【教程】
如何快速搭建高效服务器建站系统?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
在线制作视频网站免费,都有哪些好的动漫网站?
魔方云NAT建站如何实现端口转发?
如何用wdcp快速搭建高效网站?
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
Laravel定时任务怎么设置_Laravel Crontab调度器配置
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
Linux网络带宽限制_tc配置实践解析【教程】
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
JavaScript如何实现倒计时_时间函数如何精确控制
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
javascript基本数据类型及类型检测常用方法小结
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
香港服务器租用费用高吗?如何避免常见误区?
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
昵图网官方站入口 昵图网素材图库官网入口
如何快速选择适合个人网站的云服务器配置?
Laravel如何实现文件上传和存储?(本地与S3配置)
简历没回改:利用AI润色让你的文字更专业
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
Python文件异常处理策略_健壮性说明【指导】
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
香港服务器网站推广:SEO优化与外贸独立站搭建策略
教你用AI将一段旋律扩展成一首完整的曲子
移动端脚本框架Hammer.js
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
潮流网站制作头像软件下载,适合母子的网名有哪些?
jQuery 常见小例汇总
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
JavaScript数据类型有哪些_如何准确判断一个变量的类型
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
上一篇:根据橙子建站怎么登录:使用第三方账号授权登录安全吗?
下一篇:券商财富管理制胜之道
上一篇:根据橙子建站怎么登录:使用第三方账号授权登录安全吗?
下一篇:券商财富管理制胜之道

