Un tuto très basique, juste pour expliquer comment marche « makeself » sous Linux.

Cet utilitaire permet de créer un programme exécutable, auto extractible , qui peut lancer un script shell après sa décompression avec des fichiers en argument.

Exemple:

On crée un répertoire, appelé par exemple « rep », et 2 fichiers dedans, appelés par exemple « fic1 » et « fic2 »:

$ mkdir rep1

$ echo 'coucou' > rep1/fic1

$ echo 'hello' > rep1/fic2

Ensuite, on rajoute dans le répertoire "rep1" un script shell. Par exemple il ne fera qu'exécuter un "ls":

$ echo 'cat fic1; cat fic2' > rep1/monscript.sh

On rend ce script exécutable…

$ chmod +x rep1/monscript.sh


Et on compresse le tout avec makeself:
$ makeself ./rep1 ./fic.run "TEST makeself" ./monscript.sh
Header is 401 lines long

About to compress 12 KB of data...
Adding files to archive named "./fic.run"...
./
./fic1
./fic2
./fic.sh
CRC: 3933999350
MD5: 2e22c175c87aa4baa63115d19419d774

Self-extractible archive "./fic.run" successfully created.
$ 

Voilà on a obtenu un fichier nommé "fic.run":
$ ls -l
total 12
-rwxr-xr-x 1 jrullier users 9506 Oct  8 15:11 fic.run
drwxr-xr-x 2 jrullier users   41 Oct  8 15:09 rep1
$

Qui est de type "POSIX shell script executable (binary data)" :

$ file fic.run
fic.run: POSIX shell script executable (binary data)
$

Si vous essayez un more fic.run, vous verrez qu'il est en partie en clair, et en partie (la fin) en binaire.

On peut maintenant supprimer le répertoire "rep1":
$ mv rep1 rep1.old
$

Lançons l'auto-extractible:

$ ./fic.run
Verifying archive integrity... All good.
Uncompressing TEST makeself....
coucou
hello
$

Il est a noter que le répertoire rep1, et les fichiers fic1 et fic2 ne sont pas restaurés (contrairement à l'extraction d'un Zip par exemple). Seul le résultat du script "monscript.sh" a été obtenu.

$ ls -l
total 12
-rwxr-xr-x 1 jrullier users 9539 Oct  8 15:53 fic.run
drwxr-xr-x 2 jrullier users   47 Oct  8 15:49 rep2
$

Remarque: On peut voir la liste des fichiers contenus dans un autoextractible, sans le lancer, grâce à l'option "--list" :

$ ./fic.run --list
Target directory: rep1
drwxr-xr-x jrullier/jrullier 0 2019-10-08 16:56 ./
-rw-r--r-- jrullier/jrullier 6 2019-10-08 16:56 ./fic2
-rw-r--r-- jrullier/jrullier 19 2019-10-08 16:56 ./monscript.sh
-rw-r--r-- jrullier/jrullier  7 2019-10-08 16:55 ./fic1
$

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Blue Captcha Image
Refresh

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.