GNU/Linux >> Znalost Linux >  >> Linux

Jak snadno vytvářet balíčky Linuxu pomocí Fpm pro více platforem

Existuje mnoho distribucí Linuxu a balení aplikací pro různé distribuce Linuxu je poměrně časově náročný a obtížný úkol. Balení aplikací není pro každého tak snadné. Naštěstí existuje alternativní a nejjednodušší způsob, jak sestavit balíčky. Seznamte se s Fpm (Ef prst p ackage m anagement), program příkazového řádku, který pomáhá snadno vytvářet balíčky pro Linux.

Pomocí Fpm můžete snadno převést balíček do jiného formátu a nainstalovat jej pomocí výchozího správce balíčků distribuce.

A ano, Snapy a flatpaky Ubuntu rychle rostou a lze je nainstalovat na většinu distribucí Linuxu. Ale pro případ, že byste chtěli zabalit aplikaci, která ještě není dostupná pro vaši distribuci, Fpm je jeden způsob, jak to udělat.

A je to mnohem jednodušší než tradiční způsoby balení. Fpm je zcela zdarma, open source nástroj napsaný pomocí Ruby programovací jazyk.

V této příručce budeme diskutovat o tom, jak vytvořit balíček pomocí Fpm v Linuxu.

Nainstalujte Fpm v Linuxu

Protože fpm je napsáno pomocí Ruby, musíte nejprve nainstalovat Ruby. Ruby je dodáván s předinstalovanými některými operačními systémy. Pokud ještě není nainstalován, spusťte následující příkazy v závislosti na distribuci, kterou používáte.

Na Arch Linuxu a jeho variantách:

$ sudo pacman -S ruby

Na systémech Red Hat (Fedora 22 nebo starší, CentOS atd.):

$ sudo yum install ruby-devel gcc make rpm-build

Na Fedoře 23 nebo novější:

$ sudo dnf install ruby-devel gcc make rpm-build

Na systémech odvozených z Debianu (Debian, Ubuntu atd.):

$ sudo apt-get install ruby ruby-dev rubygems gcc make rpm

Ruby můžete nainstalovat také pomocí Linuxbrew správce balíčků. Chcete-li nainstalovat Linuxbrew na Linux, postupujte podle následujícího průvodce.

  • Linuxbrew – Společný správce balíčků pro Linux a Mac OS X

Po instalaci Linuxbrew spusťte tento příkaz a nainstalujte Ruby.

$ brew install ruby

Jakmile nainstalujete Ruby, spusťte následující příkaz pro instalaci FPM:

$ sudo gem install --no-ri --no-rdoc fpm

Uvidíte výstup podobný níže.

 Fetching: cabin-0.9.0.gem (100%)
 Successfully installed cabin-0.9.0
 Fetching: backports-3.6.8.gem (100%)
 Successfully installed backports-3.6.8
 Fetching: arr-pm-0.0.10.gem (100%)
 Successfully installed arr-pm-0.0.10
 Fetching: clamp-1.0.1.gem (100%)
 Successfully installed clamp-1.0.1
 Fetching: ffi-1.9.17.gem (100%)
 Building native extensions. This could take a while...
 Successfully installed ffi-1.9.17
 Fetching: childprocess-0.6.1.gem (100%)
 Successfully installed childprocess-0.6.1
 Fetching: archive-tar-minitar-0.5.2.gem (100%)
 Successfully installed archive-tar-minitar-0.5.2
 Fetching: io-like-0.3.0.gem (100%)
 Successfully installed io-like-0.3.0
 Fetching: ruby-xz-0.2.3.gem (100%)
 Successfully installed ruby-xz-0.2.3
 Fetching: stud-0.0.22.gem (100%)
 Successfully installed stud-0.0.22
 Fetching: mustache-0.99.8.gem (100%)
 Successfully installed mustache-0.99.8
 Fetching: insist-1.0.0.gem (100%)
 Successfully installed insist-1.0.0
 Fetching: dotenv-2.2.0.gem (100%)
 Successfully installed dotenv-2.2.0
 Fetching: pleaserun-0.0.28.gem (100%)
 Successfully installed pleaserun-0.0.28
 Fetching: fpm-1.8.1.gem (100%)
 Successfully installed fpm-1.8.1
 15 gems installed

Abyste se ujistili, že je Fpm nainstalováno správně, spusťte následující příkaz.

$ fpm --version

Nebo,

$ fpm --v

Ukázkový výstup by byl:

1.8.1

Pokud vidíte výstup jako výše, gratulujeme! Fpm je připraveno k použití.

Stáhnout - Zdarma e-kniha:"Linux® Patch Management:Udržování linuxových systémů aktuální"

Vytváření linuxových balíčků pomocí Fpm

Typický příkaz pro použití FPM k sestavení balíčku je uveden níže:

$ fpm -s <source type> -t <target type> [list of sources]...

Tady,

  • -s - Typ zdrojového balíčku. Byl by to adresář (dir), rubygem (gem), rpm (rpm), balíček python (python), modul php hruška (pear) atd.
  • -t - typ vašeho výstupního balíčku, například .rpm, .deb atd.

Zde je úplný seznam typů zdrojových a cílových souborů.

Zdroje:

  • drahokam
  • moduly python
  • hruška
  • adresáře
  • archivy tar(.gz)
  • ot/min
  • deb
  • balíčky uzlů (npm)
  • balíčky pacman (ArchLinux)

Cíle:

  • deb
  • ot/min
  • solaris
  • freebsd
  • tar
  • adresáře
  • Soubory .pkg systému Mac OS X
  • balíčky pacman (ArchLinux)

Sekci nápovědy můžete také kdykoli vyvolat zadáním následujícího příkazu z Terminálu.

$ fpm --help

Sestavení balíčku RPM

Ukážu vám několik příkladů, abyste to lépe pochopili. Následující příkaz stáhne nejnovější json gem a převést jej na balíček .rpm:

$ fpm -s gem -t rpm json

Ukázkový výstup:

Created package {:path=>"rubygem-json-2.0.3-1.x86_64.rpm"}

Výše uvedený příkaz stáhne nejnovější rubygem „json“ z rubygems.org a převede jej na .rpm balík. Jak vidíte ve výše uvedeném výstupu, tento příkaz vytvořil balíček s názvem ‘rubygem-json-VERSION_ARCH.rpm’ s příslušnou verzí/obloukem na místě. Docela snadné, že? Samozřejmě, že je!

Vytvoření tohoto .rpm trvalo jednu minutu balík. Balíčky budou uloženy v aktuálním pracovním adresáři. Nyní můžete tento rpm balíček nainstalovat na jakoukoli distribuci založenou na rpm, jako je RHEL, CentOS, Fedora atd., jak je uvedeno níže.

$ sudo rpm -ivh rubygem-json-2.0.3-1.x86_64.rpm

Podrobnosti o nově vytvořeném balíčku .rpm zkontrolujete níže.

$ sudo rpm -qip rubygem-json-2.0.3-1.x86_64.rpm

Ukázkový výstup:

Name : rubygem-json
Version : 2.0.3
Release : 1
Architecture: x86_64
Install Date: (not installed)
Group : Languages/Development/Ruby
Size : 1487109
License : Ruby
Signature : (none)
Source RPM : rubygem-json-2.0.3-1.src.rpm
Build Date : Tue 21 Feb 2017 03:45:50 PM IST
Build Host : server1.ostechnix.local
Relocations : / 
Packager : <[email protected]>
Vendor : Florian Frank
URL : http://flori.github.com/json
Summary : This is a JSON implementation as a Ruby extension in C.
Description :
This is a JSON implementation as a Ruby extension in C.

Jak můžete vidět ve výše uvedeném výstupu, fpm automaticky vybral název balíčku, verzi, architekturu, datum instalace, správce, domovskou stránku a popis ze samotného balíčku ruby. Nemusíte nic přidávat ručně. Fpm se o vše postará.

Chcete-li zobrazit závislosti, stačí spustit:

$ rpm -qRp rubygem-json-2.0.3-1.x86_64.rpm

Ukázkový výstup

rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1

Podívejme se na další příklad.

Sestavení balíčku DEB

Ve výše uvedeném příkladu jsme sestavili json drahokam a převeďte jej na balíček .rpm pomocí:

$ fpm -s gem -t rpm json

Podobně, chcete-li vytvořit deb balíček, stačí nahradit slovo rpm s deb .

$ fpm -s gem -t deb json

Ukázkový výstup:

Debian packaging tools generally labels all files in /etc as config files, as mandated by policy, so fpm defaults to this behavior for deb packages. You can disable this default behavior with --deb-no-default-config-files flag {:level=>:warn}
Debian packaging tools generally labels all files in /etc as config files, as mandated by policy, so fpm defaults to this behavior for deb packages. You can disable this default behavior with --deb-no-default-config-files flag {:level=>:warn}
Created package {:path=>"rubygem-json_2.0.3_amd64.deb"}

Chcete-li zkontrolovat podrobnosti o nově vytvořeném balíčku, spusťte:

$ dpkg --info rubygem-json_2.0.3_amd64.deb

Ukázkový výstup:

 new debian package, version 2.0.
 size 581592 bytes: control archive=4018 bytes.
 327 bytes, 12 lines control 
 11986 bytes, 126 lines md5sums 
 Package: rubygem-json
 Version: 2.0.3
 License: Ruby
 Vendor: Florian Frank
 Architecture: amd64
 Maintainer: <[email protected]>
 Installed-Size: 1640
 Provides: rubygem-json
 Section: Languages/Development/Ruby
 Priority: extra
 Homepage: http://flori.github.com/json
 Description: This is a JSON implementation as a Ruby extension in C

Chcete-li zobrazit závislosti výše uvedeného balíčku, spusťte:

$ dpkg -c ./rubygem-json_2.0.3_amd64.deb
StáhnoutZdarma e-kniha:„Vývojová platforma Linuxu“

Sestavte balíček konkrétní verze

Všechny předchozí příkazy vytvořily nejnovější stabilní verze. V případě, že potřebujete sestavit konkrétní verzi balíčku, můžete to udělat pomocí příkazu:

$ fpm -s gem -t deb -v 2.0.0 json

Výše uvedený příkaz stáhne rubyjson verze 2.0.0 a převede ji na .deb balíček.

Ukázkový výstup:

[...]
Created package {:path=>"rubygem-json_2.0.0_amd64.deb"}

Podobně můžete balíčku přiřadit konkrétní název, jak je uvedeno níže.

$ fpm -s gem -t deb -n my_json -v 2.0.0 json

Ukázkový výstup:

[...]
Created package {:path=>"my-json_2.0.0_amd64.deb"}

Jak vidíte ve výše uvedeném výstupu, přiřadil jsem balíčku vlastní název, tj. my-json_2.0.0_amd64.deb .

Převod RPM na DEB balíčky a naopak

Nemusíte vytvářet balíčky pro různé platformy. Jednoduše je převeďte z jednoho formátu do druhého. Následující příkaz převede balíček rpm na balíček deb.

$ fpm -t deb -s rpm rubygem-json-2.0.3-1.x86_64.rpm

Vezměte prosím na vědomí, že jsem trochu změnil syntaxi. cílový typ (-t) je první a typ zdroje je další.

Ukázkový výstup:

[..]
Created package {:path=>"rubygem-json_2.0.3-1_amd64.deb"}

Vytvářejte balíčky ze zdrojového adresáře

Zde jsou jednoduché kroky k vytvoření rpm programu 'ahoj'.

$ wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz
$ tar -zxvf hello-2.10.tar.gz
$ cd hello-2.10/
$ ./configure --prefix=/usr
$ make

Dále jej nainstalujte do dočasného adresáře, jak je znázorněno níže:

$ mkdir /tmp/installdir
$ make install DESTDIR=/tmp/installdir/

Nyní vytvořte balíček rpm pomocí Fpm, jak je uvedeno níže.

$ fpm -s dir -t rpm -n hello -v 2.10 -C /tmp/installdir

Zde,

  • -s označuje typ zdrojového souboru (adresář),
  • -t je typ balíčku (rpm),
  • -n označuje název balíčku
  • -v je verze;
  • -C je adresář (např. /tmp/installdir ), kde fpm vyhledá soubory.

Ukázkový výstup:

Created package {:path=>"hello-2.10-1.x86_64.rpm"}

Chcete-li vytvořit balíček deb, spusťte následující příkaz:

$ fpm -s dir -t deb -n hello -v 2.10 -C /tmp/installdir

Podobně můžete sestavit libovolný balíček z adresáře.

Související čtení:

  • Jak sestavit balíčky Debianu ze zdroje
  • Jak sestavit balíčky ze zdroje pomocí CheckInstall
  • Jak převést balíčky Linuxu pomocí aplikace Alien

Závěr

Fpm zjednodušuje proces vytváření balíčků pro více distribucí, aniž byste měli velké znalosti programování. Dokonce i středně pokročilý uživatel Linuxu může snadno a rychle vytvořit libovolné balíčky pro jakoukoli platformu.


Linux
  1. Jak vypsat všechny nainstalované balíčky v Linuxu

  2. Jak zkontrolovat dodavatele nainstalovaných RPM balíčků v Linuxu

  3. Jak sestavit a nainstalovat GLFW 3 a používat jej v projektu Linux

  1. Jak sestavit rpm balíčky

  2. Jak sestavit balíčky ze zdroje pomocí CheckInstall

  3. Kompilace a sestavování linuxových balíčků pro více distribucí/platforem

  1. Jak vypsat nainstalované balíčky, které patří do konkrétní skupiny v Linuxu

  2. Jak vypsat nainstalované balíčky z určitého úložiště v Linuxu

  3. Jak hledat soubory pomocí regulárního výrazu ve skriptu linuxového shellu