Come Creare File Autoinstallanti Su Linux

Ogni sviluppatore sa che quando deve distribuire il proprio codice, la soluzione è fornire un pacchetto che sia quanto più possibile facile da installare.

Chi viene dal mondo windows ha di certo familiarità con diversi strumenti, che permettono di installare il software e l’unico contibuto che richiedono all’utente è quello di cliccare sul pulsante next.

Nel mondo linux le cose non sono cosi semplici (ma nemmeno troppo complicate), e anche se i puristi storceranno un po’ il naso obiettando che chi si avvicina al mondo linux deve sapere almeno estrarre un archivio, non ce ne preoccuperemo perchè a semplificare le cose tutti ne traggono vantaggio, utenti alle prime armi e non.

Una prima soluzione sarebbe quella di creare un pacchetto .deb (o .rpm) ma questa soluzione ha il grosso svantaggio di essere dipendente dalla distribuzione.

Una soluzione molto elegante (personalmente la mia preferita, e anche di moltre case produttrici di hardware che hanno scelto questo modo per rilasciare i loro driver) è utilizzare makeself.

Questo applicativo permette di creare un archivio in grado di auto estrarsi e di lanciare uno script di installazione. Questa magia è resa possibile perchè la parte iniziale dell’archivio è costituita da uno shell script che permette di svolgere le operazioni indicate.

La flessibilità di questo approccio è estrema, poiché ciascun utente potrà scegliere lo script di installazione come più lo desidera.

Makeself è distribuito grazie (neanche a dirlo) ad uno script auto installante che potete scaricare seguendo questo collegamento.

Una volta scaricato è possibile installarlo semplicemente con il comando:

$ sh makeself.run
Creating directory makeself-2.1.5
Verifying archive integrity... All good.
Uncompressing Makeself 2.1.5........
Makeself has extracted itself.

Utilizzarlo è altrettanto semplice, basta assicurarsi che il file makeself.sh e makeself-header.sh siano nella stessa cartella (in alternativa è possibile specificare la posizione di makeself-header.sh tramite l’opzione –header.

Per comodità conviene creare un link in modo che sia all’interno del path e accessibile senza dover digitare il percorso completo:

$ sudo ln -s /opt/makeself-2.1.5/makeself.sh /usr/local/bin
$ sudo ln -s /opt/makeself-2.1.5/makeself-header.sh /usr/local/bin

A questo punto siamo pronti per l’utilizzo, la sintassi è la seguente:

[OPTIONS] archive_dir file_name label startup_script [SCRIPT_ARGS]

  • [OPTIONS] sono le opzioni, oltre alla citata –header c’è la possibilità di scegliere la compressione da utilizzare, se disabilitare checksum e crc etc.
  • archive_dir è il percorso alla directory che si intende includere nell’archivio
  • file_name è il nome del file auto-estrante. E’ possibile usare qualsiasi nome, ma per convenzione è bene che termini in .run (o al limite .sh)
  • lable è un etichetta che sarà mostrata in fase di installazione
  • l’ultimo argomento è il nome del file che si vuole lanciare al termine del processo di estrazione (e che si occupera dell’installazione). Questo script puù prendere dei parametri

Per più opzioni è possibile fare riferimento direttamente al sito ufficiale

Vediamo ora un esempio di utilizzo

Partiamo con un semplice script di installazione, che non fa altro che installare il nostro programma nella cartella ~/bin se presente


#!/bin/sh

#Install to ~/bin if it exists
if [ -d $HOME/bin ]
then
cp myprogram $HOME/bin/
fi

A questo punto invochiamo makeself

$ makeself.sh --bzip2 myprogram/ myprogram.bz2.run "The Installer For myprogram" ./post_extract.sh
Header is 402 lines long

About to compress 20 KB of data…
Adding files to archive named “myprogram.bz2.run”…
./
./myprogram.c
./post_extract.sh
./myprogram
CRC: 955035546
MD5: 7b74c31f31589ee236dea535cbc11fe4

Self-extractible archive “myprogram.bz2.run” successfully created.

e il nostro file auto installante è pronto per essere distribuito!

Per i più paranoici è anche possibile controllare l’integrità dell’archivio con:

$ sh myprogram.bz2.run --check
Verifying archive integrity... MD5 checksums are OK. All good.

© 2008 Ziogeek.com

Tag: ,