62 votes

Comment fonctionnent les installateurs binaires Linux (.bin, .sh)?

Certains logiciels (par ex. le NetBeans IDE) navire Linux installateurs .sh fichiers. Curieux de savoir comment exactement ils 'package' ensemble des IDE dans un "shell script", j'ai ouvert le fichier dans un éditeur. J'ai vu certains de texte simple script shell code et puis un peu aléatoire charabia, qui je pense est "binaire" ou non en texte brut.

Je me demande comment ils mélangent la plaine de scripts shell, et puis probablement appeler la "non-lisibles" des choses, qui serait les fichiers binaires.

Toute réflexion sur ce point?

86voto

Curt Sampson Points 10866

En gros, c'est un script shell ajouté une archive compressée d'une certaine sorte, comme une archive tar. Vous utilisez l' tail ou sed commande sur vous-même (l' $0 variable en Bourne shell) pour enlever le script shell à l'avant et de passer le reste de votre décompresseur d'archiver.

Par exemple, créez le script suivant que self-extracting:

#!/bin/sh -e
sed -e '1,/^exit$/d' "$0" | tar xzf - && ./project/Setup
exit

Alors:

mkdir project
echo "#!/bin/sh" > project/Setup
echo "echo This is the setup script!" >> project/Setup
chmod +x project/Setup
tar czf - project >> self-extracting

Maintenant, si vous vous débarrassez de votre vieux - project répertoire, vous pouvez exécuter self-extracting et il sera extrait du goudron de fichier et exécutez le script d'installation.

52voto

nik Points 8025

Vous pourriez vouloir vérifier makeself.sh

De le des auteurs des notes.

makeself.sh est un petit script shell qui génère une auto-extractible tar.gz archive dans un répertoire. Le fichier qui en résulte apparaît comme un script shell (beaucoup de ceux qui ont une .exécuter suffixe), et peut être lancé comme est. L'archive puis décompresser lui-même dans un répertoire temporaire et une option arbitraire de la commande sera exécutée (par exemple un script d'installation).

Makeself archives comprennent également des totaux de contrôle de l'intégrité d'auto-validation (CRC et/ou des sommes de contrôle MD5).

L'makeself.sh le script lui-même est utilisé seulement pour créer les archives à partir d'un répertoire de fichiers. La résultante de ces archives est en fait un comprimé (à l'aide de gzip, bzip2, ou compresse) de l'archive TAR, avec un petit script shell stub au début. Ce petit tampon effectue toutes les étapes de l'extraction des fichiers, l'exécution de la commande incorporé, et en supprimant les fichiers temporaires, quand tout est fini. Tout ce que l'utilisateur a à faire pour installer le logiciel contenu dans une archive est de "lancer" les archives [c'est-à exécuter le script]

J'essaie de garder le code de ce script aussi portable que possible, j'.e c'est en ne s'appuyant pas sur toute bash spécifique et appelle uniquement les commandes qui sont installés sur n'importe quel fonctionnement système compatible avec UNIX. Ce script ainsi que les archives qu'il génère doivent s'exécuter sur n'importe quel Unix saveur, avec n'importe quel compatible Bourne shell, à condition bien sûr que les programmes de compression sont disponibles.

Enfin, l' makeself paquet lui-même est comme un auto-extractible script appelé makeself.run.

11voto

seb Points 1280

4voto

James F Points 211

GNU sharutils:

http://www.gnu.org/software/sharutils/

est un ensemble d'outils pour la création de shell archives, et dispose de quelques fonctionnalités supplémentaires qui peuvent être utiles (comme des sommes de contrôle pour veiller à ce que la charge utile n'est pas endommagé en transit).

La protection contre les modifications n'est pas vraiment possible lorsque le produit final doit être interprétable par le shell - tous ceux qui ont compris la technique de génération pourrait modifier la somme de contrôle.

0voto

eckes Points 1191

Il y a aussi d'autres/un logiciel commercial installateur constructeur (comme InstallAnywhere) en gros, ils ont leur propre version de shar/makeself.

Netbeans a son propre moteur d'installation, et une partie de lui, qui ne le déballage et le lancement se fait dans la NBI natif de lanceur de composant: http://wiki.netbeans.org/NBINativeLaunchers

Crée un shell(script) archive pour Linux/Unix/MacOS et natif de l'exécutable pour Windows. Vous pouvez l'utiliser pour vos propres projets, aussi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X