GNU/Linux >> Linux Esercitazione >  >> Linux

Come creare facilmente pacchetti Linux utilizzando Fpm per più piattaforme

Esistono numerose distribuzioni Linux e il confezionamento di applicazioni per diverse distribuzioni Linux è un'operazione piuttosto dispendiosa in termini di tempo e difficile. Le applicazioni di packaging non sono così facili per tutti. Fortunatamente, esiste un modo alternativo e più semplice per creare pacchetti. Incontra Fpm (Ef fing p ackage m anagement), un programma da riga di comando che aiuta a creare facilmente pacchetti Linux.

Utilizzando Fpm, puoi convertire facilmente un pacchetto in un formato diverso e installarlo utilizzando il gestore di pacchetti predefinito della distribuzione.

E sì, gli Snap e i flatpak di Ubuntu stanno crescendo rapidamente e possono essere installati sulla maggior parte delle distribuzioni Linux. Ma, nel caso in cui desideri impacchettare un'applicazione che non è ancora disponibile per la tua distribuzione, Fpm è un modo per farlo.

Ed è molto più semplice dei metodi di confezionamento tradizionali. Fpm è uno strumento open source completamente gratuito scritto utilizzando Ruby linguaggio di programmazione.

In questa guida, discuteremo di come creare un pacchetto utilizzando Fpm in Linux.

Installa Fpm in Linux

Poiché fpm viene scritto utilizzando Ruby, devi prima installare Ruby. Ruby viene preinstallato con alcuni sistemi operativi. Se non è già installato, esegui i seguenti comandi a seconda della distribuzione che utilizzi.

Su Arch Linux e le sue varianti:

$ sudo pacman -S ruby

Sui sistemi Red Hat (Fedora 22 o precedenti, CentOS, ecc.):

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

Su Fedora 23 o versioni successive:

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

Su sistemi derivati ​​da Debian (Debian, Ubuntu, ecc):

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

Puoi anche installare Ruby usando Linuxbrew gestore di pacchetti. Per installare Linuxbrew su Linux, fare riferimento alla seguente guida.

  • Linuxbrew:un gestore di pacchetti comune per Linux e Mac OS X

Dopo aver installato Linuxbrew, esegui questo comando per installare Ruby.

$ brew install ruby

Dopo aver installato Ruby, esegui il seguente comando per installare FPM:

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

Vedrai un output simile a quello di seguito.

 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

Per assicurarti che Fpm sia installato correttamente, esegui il comando seguente.

$ fpm --version

Oppure,

$ fpm --v

L'output di esempio sarebbe:

1.8.1

Se vedi un output come sopra, congratulazioni! Fpm è pronto per l'uso.

Scarica - Ebook gratuito:"Linux® Patch Management:mantenere aggiornati i sistemi Linux"

Crea pacchetti Linux utilizzando Fpm

Il comando tipico per utilizzare FPM per creare un pacchetto è riportato di seguito:

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

Ecco,

  • -s - Il tipo del pacchetto sorgente. Sarebbe una directory (dir), un rubygem (gem), un rpm (rpm), un pacchetto python (python), un modulo php pear (pear), ecc.
  • -t - tipo del tuo pacchetto di output, come .rpm, .deb ecc.

Ecco l'elenco completo dei tipi di file di origine e di destinazione.

Fonti:

  • gioiello
  • moduli Python
  • pera
  • directory
  • archivi tar(.gz)
  • giri/min
  • deb
  • pacchetti di nodi (npm)
  • Pacchetti pacman (ArchLinux)

Obiettivi:

  • deb
  • giri/min
  • solari
  • libero
  • catrame
  • directory
  • File .pkg di Mac OS X
  • Pacchetti pacman (ArchLinux)

Puoi anche aprire la sezione della guida in qualsiasi momento digitando il seguente comando dal Terminale.

$ fpm --help

Crea un pacchetto RPM

Vi mostro alcuni esempi per capire meglio. Il comando seguente scaricherà l'ultimo json gem e convertilo in un pacchetto .rpm:

$ fpm -s gem -t rpm json

Risultato di esempio:

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

Il comando precedente scaricherà l'ultimo rubygem "json" da rubygems.org e lo convertirà in un .rpm pacchetto. Come puoi vedere nell'output sopra, questo comando ha creato  un pacchetto chiamato ‘rubygem-json-VERSION_ARCH.rpm’ con la versione/arcata appropriata in atto. Abbastanza facile, non è vero? Certo che lo è!

Ci è voluto solo un minuto per creare questo .rpm pacchetto. I pacchetti verranno archiviati nella directory di lavoro corrente. Ora puoi installare questo pacchetto rpm su qualsiasi distribuzione basata su rpm come RHEL, CentOS, Fedora ecc., come mostrato di seguito.

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

Puoi controllare i dettagli del pacchetto .rpm appena creato come di seguito.

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

Risultato di esempio:

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.

Come puoi vedere nell'output sopra, fpm ha selezionato automaticamente il nome del pacchetto, la versione, l'architettura, la data di installazione, il manutentore, la home page e la descrizione, tutto dal pacchetto ruby ​​stesso. Non è necessario aggiungere nulla manualmente. Fpm penserà a tutto.

Per visualizzare le dipendenze, esegui:

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

Risultato di esempio

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

Vediamo un altro esempio.

Crea un pacchetto DEB

Nell'esempio sopra, abbiamo build json gem e convertilo in un pacchetto .rpm usando:

$ fpm -s gem -t rpm json

Allo stesso modo, per rendere deb un pacchetto, basta sostituire la parola rpm con deb .

$ fpm -s gem -t deb json

Risultato di esempio:

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

Per controllare i dettagli del pacchetto appena creato, esegui:

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

Risultato di esempio:

 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

Per visualizzare le dipendenze del pacchetto precedente, eseguire:

$ dpkg -c ./rubygem-json_2.0.3_amd64.deb
Scarica - eBook gratuito:"La piattaforma di sviluppo Linux"

Crea un pacchetto di versione specifico

Tutti i comandi precedenti hanno creato le ultime versioni stabili. Nel caso in cui sia necessario creare un pacchetto di versione specifico, puoi farlo usando il comando:

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

Il comando precedente scaricherà rubyjson verion 2.0.0 e lo convertirà in .deb pacchetto.

Risultato di esempio:

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

Allo stesso modo, puoi assegnare un nome specifico a un pacchetto come di seguito.

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

Risultato di esempio:

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

Come puoi vedere nell'output sopra, ho assegnato un nome personalizzato al pacchetto, ad esempio my-json_2.0.0_amd64.deb .

Convertire pacchetti RPM in DEB e viceversa

Non è necessario creare pacchetti per piattaforme diverse. Basta convertirli da un formato all'altro. Il comando seguente convertirà un pacchetto rpm in un pacchetto deb.

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

Tieni presente che ho leggermente modificato la sintassi. il tipo di destinazione (-t) viene prima e il tipo di origine viene dopo.

Risultato di esempio:

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

Crea pacchetti da una directory di origine

Ecco i semplici passaggi per creare un rpm del programma 'ciao'.

$ 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

Quindi, installalo in una directory temporanea come mostrato di seguito:

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

Ora, crea il pacchetto rpm usando Fpm come di seguito.

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

Ecco,

  • -s indica il tipo di file di origine (directory),
  • -t è il tipo di pacchetto (rpm),
  • -n indica il nome del pacchetto
  • -v è la versione;
  • -C è la directory (ad es. /tmp/installdir ) dove fpm cercherà i file.

Risultato di esempio:

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

Per creare il pacchetto deb, esegui il seguente comando:

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

Allo stesso modo, puoi creare qualsiasi pacchetto da una directory.

Lettura correlata:

  • Come creare pacchetti Debian dal sorgente
  • Come creare pacchetti dal sorgente utilizzando CheckInstall
  • Come convertire i pacchetti Linux con Alien

Conclusione

Fpm semplifica il processo di creazione di pacchetti per distribuzioni multiple senza avere molte conoscenze di programmazione. Anche un utente Linux intermedio può facilmente creare qualsiasi pacchetto per qualsiasi piattaforma in pochissimo tempo.


Linux
  1. Come creare pacchetti rpm

  2. Come elencare i pacchetti installati che appartengono a un gruppo particolare in Linux

  3. Come elencare tutti i pacchetti installati in Linux

  4. Come aggiungere più percorsi in Linux usando esempi di comandi ip

  5. Come ascoltare più connessioni tcp usando nc

Come installare in modo sicuro i pacchetti utilizzando Npm o Yarn su Linux

Come installare Anaconda su Linux

Come elencare i pacchetti installati in Linux

Come elencare i pacchetti installati in Linux utilizzando la gestione dei pacchetti

Come posso generare la copertura del codice per i pacchetti Swift su Linux o OS X?

Come creare facilmente la tua distribuzione Linux?