GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer facilement des packages Linux à l'aide de Fpm pour plusieurs plates-formes

Il existe de nombreuses distributions Linux, et l'empaquetage d'applications pour différentes distributions Linux est une tâche assez longue et difficile. Les applications d'emballage ne sont pas si faciles pour tout le monde. Heureusement, il existe un moyen alternatif et plus simple de créer des packages. Rencontrez Fpm (Ef trouver p forfait m management), un programme en ligne de commande qui permet de créer facilement des packages Linux.

En utilisant Fpm, vous pouvez facilement convertir un package dans un format différent et l'installer à l'aide du gestionnaire de packages par défaut de la distribution.

Et oui, les Snaps et les flatpaks d'Ubuntu se développent rapidement et peuvent être installés sur la plupart des distributions Linux. Mais, juste au cas où vous voudriez empaqueter une application qui n'est pas encore disponible pour votre distribution, Fpm est une façon de le faire.

Et c'est beaucoup plus facile que les méthodes d'emballage traditionnelles. Fpm est un outil open source entièrement gratuit écrit à l'aide de Ruby langage de programmation.

Dans ce guide, nous expliquerons comment créer un package à l'aide de Fpm sous Linux.

Installer Fpm sous Linux

Comme fpm est écrit avec Ruby, vous devez d'abord installer Ruby. Ruby est préinstallé avec certains systèmes d'exploitation. S'il n'est pas déjà installé, exécutez les commandes suivantes en fonction de la distribution que vous utilisez.

Sur Arch Linux et ses variantes :

$ sudo pacman -S ruby

Sur les systèmes Red Hat (Fedora 22 ou antérieur, CentOS, etc.) :

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

Sur Fedora 23 ou plus récent :

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

Sur les systèmes dérivés de Debian (Debian, Ubuntu, etc.) :

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

Vous pouvez également installer Ruby en utilisant Linuxbrew directeur chargé d'emballage. Pour installer Linuxbrew sur Linux, reportez-vous au guide suivant.

  • Linuxbrew :un gestionnaire de packages commun pour Linux et Mac OS X

Après avoir installé Linuxbrew, exécutez cette commande pour installer Ruby.

$ brew install ruby

Une fois que vous avez installé Ruby, exécutez la commande suivante pour installer FPM :

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

Vous verrez une sortie comme ci-dessous.

 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

Pour vous assurer que Fpm est correctement installé, exécutez la commande suivante.

$ fpm --version

Ou,

$ fpm --v

Exemple de sortie :

1.8.1

Si vous voyez une sortie comme ci-dessus, félicitations ! Fpm est prêt à être utilisé.

Télécharger - Ebook gratuit :"Gestion des correctifs Linux® :Maintenir les systèmes Linux à jour"

Créer des packages Linux à l'aide de Fpm

La commande typique pour utiliser FPM pour construire un package est donnée ci-dessous :

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

Ici,

  • -s - Le type du paquet source. Ce serait un répertoire (dir), un rubygem (gem), un rpm (rpm), un package python (python), un module php pear (pear), etc.
  • -t - type de votre package de sortie, comme .rpm, .deb etc.

Voici la liste complète des types de fichiers source et cible.

Origine :

  • joyau
  • modules Python
  • poire
  • répertoires
  • archives tar(.gz)
  • tr/min
  • deb
  • paquets de nœuds (npm)
  • paquets pacman (ArchLinux)

Cibles :

  • deb
  • tr/min
  • solaris
  • freebsd
  • goudron
  • répertoires
  • Fichiers .pkg Mac OS X
  • paquets pacman (ArchLinux)

Vous pouvez également afficher la section d'aide à tout moment en tapant la commande suivante depuis le terminal.

$ fpm --help

Créer un package RPM

Je vais vous montrer quelques exemples pour mieux comprendre. La commande suivante téléchargera le dernier json gem et convertissez-le en un package .rpm :

$ fpm -s gem -t rpm json

Exemple de résultat :

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

La commande ci-dessus téléchargera le dernier rubygem "json" de rubygems.org et le convertira en un .rpm emballer. Comme vous le voyez dans la sortie ci-dessus, cette commande a créé un package nommé ‘rubygem-json-VERSION_ARCH.rpm’ avec la version/l'arche appropriée en place. Plutôt facile, n'est-ce pas ? Bien sûr, ça l'est !

Il a juste fallu une minute pour construire ce .rpm emballer. Les packages seront stockés dans le répertoire de travail actuel. Maintenant, vous pouvez installer ce package rpm sur toutes les distributions basées sur rpm telles que RHEL, CentOS, Fedora, etc., comme indiqué ci-dessous.

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

Vous vérifiez les détails du package .rpm nouvellement créé comme ci-dessous.

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

Exemple de résultat :

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.

Comme vous pouvez le voir dans la sortie ci-dessus, fpm a automatiquement sélectionné le nom du package, la version, l'architecture, la date d'installation, le responsable, la page d'accueil et la description du package ruby ​​lui-même. Vous n'avez rien à ajouter manuellement. Fpm s'occupe de tout.

Pour afficher les dépendances, exécutez simplement :

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

Exemple de sortie

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

Voyons un autre exemple.

Créer un package DEB

Dans l'exemple ci-dessus, nous avons construit json gem et convertissez-le en un package .rpm en utilisant :

$ fpm -s gem -t rpm json

De même, pour faire de deb un paquet, remplacez simplement le mot rpm avec deb .

$ fpm -s gem -t deb json

Exemple de résultat :

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"}

Pour vérifier les détails du package nouvellement créé, exécutez :

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

Exemple de résultat :

 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

Pour afficher les dépendances du package ci-dessus, exécutez :

$ dpkg -c ./rubygem-json_2.0.3_amd64.deb
Télécharger - Ebook gratuit :"La plate-forme de développement Linux"

Créer un package de version spécifique

Toutes les commandes précédentes ont créé les dernières versions stables. Si vous avez besoin de créer un package de version spécifique, vous pouvez le faire à l'aide de la commande :

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

La commande ci-dessus téléchargera rubyjson version 2.0.0 et la convertira en .deb paquet.

Exemple de résultat :

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

De même, vous pouvez attribuer un nom spécifique à un package comme ci-dessous.

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

Exemple de résultat :

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

Comme vous le voyez dans la sortie ci-dessus, j'ai attribué un nom personnalisé au package, c'est-à-dire my-json_2.0.0_amd64.deb .

Convertir les packages RPM en DEB et vice versa

Vous n'avez pas besoin de créer des packages pour différentes plates-formes. Convertissez-les simplement d'un format à un autre. La commande suivante convertira un package rpm en package deb.

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

Veuillez noter que j'ai un peu modifié la syntaxe. le type cible (-t) vient en premier et le type source vient ensuite.

Exemple de résultat :

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

Créer des packages à partir d'un répertoire source

Voici les étapes simples pour créer un rpm du programme 'hello'.

$ 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

Ensuite, installez-le dans un répertoire temporaire comme indiqué ci-dessous :

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

Maintenant, créez le package rpm en utilisant Fpm comme ci-dessous.

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

Ici,

  • -s indique le type de fichier source (répertoire),
  • -t est le type de package (rpm),
  • -n indique le nom du package
  • -v est la version ;
  • -C est le répertoire (par exemple /tmp/installdir ) où fpm cherchera les fichiers.

Exemple de résultat :

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

Pour créer le package deb, exécutez la commande suivante :

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

De même, vous pouvez créer n'importe quel package à partir d'un répertoire.

Lire connexe :

  • Comment créer des packages Debian à partir de la source
  • Comment créer des packages à partir de la source à l'aide de CheckInstall
  • Comment convertir des packages Linux avec Alien

Conclusion

Fpm simplifie le processus de création de packages pour plusieurs distributions sans avoir beaucoup de connaissances en programmation. Même un utilisateur Linux intermédiaire peut facilement créer n'importe quel package pour n'importe quelle plate-forme en un rien de temps.


Linux
  1. Comment créer des paquets rpm

  2. Comment créer des packages à partir de la source à l'aide de CheckInstall

  3. Comment lister tous les packages installés sous Linux

  4. Comment rechercher des fichiers à l'aide de regex dans le script shell Linux

  5. Comment écouter plusieurs connexions tcp en utilisant nc

Comment installer en toute sécurité des packages à l'aide de Npm ou de Yarn sous Linux

Comment installer Anaconda sur Linux

Comment répertorier les packages installés sous Linux

Comment répertorier les packages installés sous Linux à l'aide de la gestion des packages

Comment puis-je générer une couverture de code pour les packages Swift sous Linux ou OS X ?

Comment créer facilement votre propre distribution Linux ?