fpm README

The project's README from github.com/jordansissel/fpm. As one markdown file: README.md.

fpm

|Gem|

The goal of fpm is to make it easy and quick to build packages such as rpms, debs, OSX packages, etc.

fpm, as a project, exists to help you build packages, therefore:

If there is a bug in fpm, then we can work together to fix it. If you wish to report a bug/problem/whatever, I welcome you to do on the project issue tracker_.

.. _the project issue tracker: https://github.com/jordansissel/fpm/issues

You can find out how to use fpm in the documentation_.

.. _documentation: https://fpm.readthedocs.io/en/latest/

You can learn how to install fpm on your platform in the installation guide_.

.. _installation guide: https://fpm.readthedocs.io/en/latest/installation.html

Project Principles

Backstory

Sometimes packaging is done wrong (because you can't do it right for all situations), but small tweaks can fix it.

And sometimes, there isn't a package available for the tool you need.

And sometimes if you ask "How do I get python 3.9 on RHEL 8?" some unhelpful trolls will tell you to "Use another distro"

Further, job switches have me flipping between Ubuntu and CentOS. These use two totally different package systems with completely different packaging policies and support tools. Learning both was painful and confusing. I want to save myself (and you) that pain in the future.

It should be easy to say "here's my install dir and here's some dependencies; please make a package"

The Solution - FPM

I wanted a simple way to create packages without needing to memorize too much.

I wanted a tool to help me deliver software with minimal steps or training.

The goal of FPM is to be able to easily build platform-native packages.

With fpm, you can do many things, including:

.. include: docs/installing

Things that should work

Sources:

Targets:

.. include: docs/contributing

.. |Gem| image:: https://img.shields.io/gem/v/fpm.svg :target: https://rubygems.org/gems/fpm

fpm (jordansissel/fpm)

Searching Database…

11.5K ·GitHub
这是什么?fpm(Effing Package Management)是一个命令行工具,可以从多种输入来源构建原生软件包(如 deb、rpm、Mac OS X pkg、FreeBSD、pacman 等),让你无需学习每个平台各自的打包工具链。
这是我要导入的库,还是我要运行的命令行工具?这是一个命令行工具(Ruby gem),你在终端中调用它,而不是在代码中嵌入使用的库。
我该怎么安装和运行它?像安装 Ruby gem 一样安装它,并按照你所用平台的安装指南操作。然后运行 fpm 命令,指定源(目录、gem、tar 压缩包、rpm、deb 等)和目标软件包格式即可。
fpm 实际支持哪些源类型和目标格式?支持的源包括 gem、python 模块、pear、目录、tar(.gz)、rpm、deb、npm 包和 pacman 包;支持的目标格式包括 deb、rpm、solaris、freebsd、tar、目录以及 Mac OS X .pkg 文件。
我能不能也用它修改现有的软件包,而不是构建新包?可以。fpm 能够修改现有软件包:删除文件、更改元数据或依赖项,以及去除 pre/post/维护者脚本。
作者为什么要开发 fpm,而不直接使用各发行版自带的打包工具?作者换工作后需要在 Ubuntu 和 CentOS 之间来回切换,而这两者的打包系统和规范完全不同。fpm 让你只需说明“这是我的安装目录和依赖项,帮我打个包”,无需记住每种系统的细节。
fpm 能自动为我下载依赖项吗?可以。对于 gem、python 模块和 pear 源,fpm 会在构建前自动下载对应的软件包。
fpm 能在 Docker 中运行吗?该仓库包含 Docker 支持,适合在隔离且与目标平台匹配的环境中构建特定平台的软件包。
What are similar projects?brew, pipx, homebrew-cask, kamal, capistrano, rye, pip, helm
Size
3 MB
Stars
11.5K
Age
15y
Commits · 90 Days