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), который запускается из терминала, а не библиотека для встраивания в код.
Как установить и запустить?Установите его как гем для Ruby и следуйте инструкции по установке для вашей платформы, затем запустите команду fpm, указав источник (каталог, гем, tar-архив, rpm, deb и т.д.) и целевой формат пакета.
Какие типы источников и форматы целевых пакетов fpm действительно поддерживает?Поддерживаемые источники: gem, модули python, pear, каталоги, tar(.gz), rpm, deb, пакеты npm и пакеты pacman; поддерживаемые целевые форматы: deb, rpm, solaris, freebsd, tar, каталоги и файлы .pkg для Mac OS X.
Можно ли использовать его и для изменения уже готовых пакетов, а не только для сборки новых?Да, fpm умеет изменять существующие пакеты: удалять файлы, менять метаданные или зависимости и убирать скрипты pre/post и maintainer.
Почему автор создал fpm, а не стал использовать родные инструменты упаковки каждого дистрибутива?При смене работы приходилось переключаться между Ubuntu и CentOS, у которых совершенно разные системы упаковки и правила; fpm позволяет сказать «вот мой каталог установки и зависимости, собери пакет», не запоминая каждую систему.
Может ли fpm автоматически скачивать зависимости за меня?Да, для источников gem, модулей python и pear fpm автоматически загрузит пакет перед сборкой.
Работает ли fpm внутри Docker?В репозитории есть поддержка Docker, которая полезна для сборки пакетов под конкретные платформы в изолированном и совпадающем окружении.
What are similar projects?brew, pipx, homebrew-cask, kamal, capistrano, rye, pip, nixpkgs
Size
3 MB
Stars
11.5K
Age
15y
Commits · 90 Days