首页 一个跨平台且支持多种包格式的打包工具 - fpm
文章
取消

一个跨平台且支持多种包格式的打包工具 - fpm

通过《一种让 Linux 上的 C/C++ 程序自带依赖库的打包方式》和《国产操作系统和 CPU 分类》两篇文章,介绍了一种针对 Linux 上的 C/C++ 程序的简化打包数量的方式,从一次打需要适配的操作系统和 CPU 组合数量的包,简化为 CPU 架构数 * 2 的数量,那么在准备编译环境的时候也就需要准备 CPU 架构数 * 2 个。

现在介绍一个打包工具 fpm ,这是一个 跨平台支持多种包格式 的打包工具,通过它可以在一个系统上同时打出 rpmdeb 的包,这样就可以把编译环境的数量从 CPU 架构数 * 2 减少到 CPU 架构数,进一步提高打包效率。

fpm 相比 rpm 和 deb 原生的打包方式更简单,且打包时间更短,下面演示使用 fpm 打包 postgresql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@el6-x86_64 fpm_example]# ls
pg9
[root@el6-x86_64 fpm_examplej# ls pg9/
bin include lib share
[root@el6-x86_64 fpm_example]# fpm -s dir -t rpm -n postgresql -v 9.6.24 --prefix /usr/local ./pg9
Created package {:path=>"postgresql-9.6.24-1.x86_64.rpm")
[root@el6-x86_64 fpm_example]# fpm -s dir -t deb -n postgresql -v 9.6.24 --prefix /usr/local ./pg9
Created package {:path=>"postgresql_9.6.24_amd64.deb")
[root@el6-x86_64 fpm_example]# ls
pg9 postgresql-9.6.24-1.x86_64.rpm postgresql_9.6.24_and64.deb
[root@el6-x86_64 fpm_example]# rpm -ivh postgresql-9.6.24-1.x86_64.rpm
Preparing...           ########################################### [100%]
    1:postgresql       ########################################### [100%]
[root@el6-x86_64 fpm_example]# ls /usr/local/pg9/
bin include lib share
[root@el6-x86_64 fpm_example]# 

更多关于 fpm 的说明请参考其 官方文档

本文由作者按照 CC BY 4.0 进行授权

国产操作系统和 CPU 分类

Linux 上 ELF 文件依赖库的查找顺序