Quelle est la différence entre la création à partir du source et l’utilisation d’un package d’installation?

46

Je me demandais: lors de l’installation de quelque chose, il est facile de cliquer deux fois sur un fichier exécutable d’installation et, d’autre part, de le construire à partir du source.

Le dernier, télécharger un paquet source, est vraiment fastidieux.

Mais quelle est la différence fondamentale entre ces deux méthodes?

Kwagjj
la source

Réponses:

44

Tous les logiciels sont des programmes , également appelés paquets sources . Donc, tous les paquets sources doivent être construits d’ abord pour pouvoir fonctionner sur votre système.

Les packages binaires sont ceux qui ont déjà été générés à partir des sources par une personne disposant des fonctionnalités générales et des paramètres fournis dans le logiciel, de sorte qu’un grand nombre d’utilisateurs puissent l’installer et l’utiliser.

Les paquets binaires sont faciles à installer .
Mais peut ne pas avoir toutes les options du paquet en amont.

Donc, pour installer à partir du source, vous devez créer le code source vous-même. Cela signifie que vous devez vous occuper vous-même des dépendances. Vous devez également connaître toutes les fonctionnalités du package pour pouvoir le construire en conséquence.

Avantages de l'installation à partir de la source:

  • Vous pouvez installer la dernière version et rester à jour, qu'il s'agisse d'un correctif de sécurité ou d'une nouvelle fonctionnalité.
  • Vous permet de réduire les fonctionnalités lors de l'installation afin de répondre à vos besoins.
  • De même, vous pouvez ajouter des fonctionnalités qui peuvent ne pas être fournies dans le binaire.
  • Installez-le à l'emplacement de votre choix.
  • Dans le cas de certains logiciels, vous pouvez fournir des informations spécifiques à votre matériel pour une installation appropriée.

En bref, l’installation à partir du code source vous donne une lourde option de personnalisation. Cela demande beaucoup d’efforts, alors que l’installation à partir de fichiers binaires est plus facile, mais vous ne pourrez peut- être pas personnaliser à votre guise.

Mise à jour : Ajout de l'argument lié à la sécurité dans les commentaires ci-dessous. Oui, c’est vrai que lors de l’installation à partir de binaires, vous n’avez pas l’intégrité du code source. Mais alors, cela dépend d'où vous avez obtenu le binaire. Il existe de nombreuses sources fiables sur lesquelles vous pouvez obtenir le fichier binaire de tout nouveau projet, le seul point négatif est le temps . Cela peut prendre un certain temps pour que le binaire des mises à jour, voire un nouveau projet, apparaisse dans nos référentiels de confiance.

Et par-dessus tout, à propos de la sécurité des logiciels, je voudrais mettre en évidence cette page hilarante chez Bell-Labs fournie par Joe dans les commentaires ci-dessous.

débutant
la source
4
source peut aussi être compilé de manière optimisée pour votre système (ce qui .. peut ne pas être une bonne idée, car les éléments compilés sont "spécifiques" au système et risquent de ne pas fonctionner avec une sauvegarde ... mais vous avez le source, vous pouvez recompiler (si vous en avez le temps))
Olivier Dulac
Cela dépend si vous avez ce "système de sauvegarde" du tout. Si vous ne faites que des recherches, vous ne le faites généralement pas.
h22
1
Pour l’hyperparanoïde, l’un des avantages de l’installation à partir du source est la sécurité et la possibilité de réviser le code si vous le pouvez et si vous le souhaitez: lors de l’installation à partir du source, vous savez que vous avez un fichier binaire à partir de ce code source et non un binaire avec des modifications inconnues (en supposant que vous faites confiance à la source en premier lieu).
LawrenceC
6
@ultrasawblade - Vous n'êtes évidemment pas assez paranoïaque! <G> - voir cm.bell-labs.com/who/ken/trust.html pour connaître le mois complet.
Joe
32

Un fichier source contient le code original tel qu'écrit par le développeur dans le langage de son choix (C, C ++, Python, etc.) et est générique. Il n'est spécifique à aucune distribution et, dans de nombreux cas, à aucun système d'exploitation.

Un paquetage (RPM ou DEB par exemple) est l'exécutable binaire (ou script interprété, etc.) préparé à l'avance pour votre distribution particulière. La tâche de préparer le source pour la compilation (en ajoutant les correctifs nécessaires, etc.), la compilation proprement dite, la création de fichiers de configuration propres à la distribution, la création de scripts de pré-installation et de post-installation, etc., est entièrement effectuée pour vous par le mainteneur du paquet.

En d’autres termes, tout le travail sur les ânes a été effectué pour vous dans un package, alors que vous devrez le faire vous-même si vous choisissez d’installer à partir des sources.

Il est beaucoup plus facile d'utiliser un paquet dans presque tous les cas, par exemple:

  • Ils sont beaucoup plus faciles à installer
  • Ils sont spécialement conçus pour fonctionner avec votre distro
  • Ils sont parfois corrigés par le mainteneur du paquet pour corriger des bogues spécifiques à la distribution
  • Le gestionnaire de paquets les désinstallera
  • Le gestionnaire de paquets gérera toutes les dépendances pour vous
  • Le gestionnaire de paquets s'occupera des mises à jour
  • Vous n'avez pas besoin d'installer des outils de développement sur votre système (compilateurs, make, etc.)

Cependant, la version packagée est parfois une ancienne version ou, pire encore, il n’existe pas de version packagée; Dans ce cas, votre seule option est de vous compiler. Si vous le faites, vous devez tenir compte des éléments suivants:

  • Vous devrez installer tous les outils de développement sur votre système.
  • Vous serez responsable de la vérification de la mise à jour et de la recompilation
  • Vous devrez vous assurer que toutes les dépendances sont installées, y compris les devpaquetages - ils pourraient être nombreux.
  • Vous devrez peut-être déboguer des problèmes si cela ne fonctionne pas comme prévu sur votre distribution

Si vous êtes prêt à faire un effort supplémentaire, alors compiler à partir de la source peut vous donner les avantages de:

  • Accès à la dernière version disponible
  • La possibilité d'optimiser le processus de compilation performance / stabilité
  • Jouissance!

Notez que, si les packages pré-construits de certaines distributions fournissent des exécutables binaires prêts à être installés et exécutés (RPM et DEB sont des exemples), d’autres distributions fournissent des packages qui automatisent simplement le processus de compilation.

Gentoo en ebuildsest un exemple: le paquet est essentiellement une instruction destinée au gestionnaire de paquet décrivant comment compiler et installer l'exécutable. Cela présente de nombreux avantages des gestionnaires de paquets traditionnels (mises à jour automatiques, désinstallation, etc.) tout en permettant à l'utilisateur d'optimiser le processus de compilation à son goût.

Arch Linux dispose d’un système d’emballage dans lequel les principaux paquets sont binaires, tandis que de nombreux autres paquets sont compilés sur le système à l’aide de PKGBUILDfichiers.

garethTheRed
la source
19

Outre les autres réponses, j'aimerais ajouter quelque chose:

Si vous décidez de compiler un programme vous-même, vous devez penser que la compilation n'est pas quelque chose que vous ne faites qu'une seule fois. Vous devrez probablement vous inscrire à la liste de diffusion de développement des applications que vous avez décidé de compiler et rester à jour avec les nouvelles versions et, en particulier, avec les mises à jour de sécurité.

Chaque fois que l’application est mise à jour, vous devrez recompiler la nouvelle version, mais gardez bien à l’esprit que vous devrez gagner du temps chaque semaine.

Si vous ne pouvez pas vous le permettre, il est préférable de laisser le responsable du paquet faire ce travail pour vous.

Daniel
la source
6

Construire à partir de la source permet de spécifier l'architecture de votre machine. Les nouveaux processeurs ont des instructions supplémentaires que les compilateurs comprennent, ce qui réduit un peu les performances. Les packages de pré-construction comptent généralement sur le processeur le plus archaïque encore utilisé couramment.

Cela est particulièrement important pour les applications critiques de projets qui utilisent beaucoup de ressources processeur, telles que les outils de pipeline bioinformatique, par exemple, ou les outils de modélisation géophysique. Un tel logiciel fonctionne dans un environnement très contrôlé, ne comporte pas de contrôle d'accès, et les bogues de sécurité ont rarement une si grande urgence qu'ils doivent être corrigés en quelques jours ou heures. Presque jamais, il doit être exécuté sur une machine différente avec une architecture initialement inconnue.

Oui, je le savais, les ordinateurs sont très très très rapides maintenant et tous les efforts ou actions que vous prenez sont très très très coûteux, mais le troisième jour de séance et d'attendre que votre programme soit terminé (c'est la situation dont je parle), de telles vérités commencer à regarder discutable.

De manière différente, les applications telles que les navigateurs, etc., devraient être mieux utilisées à partir du référentiel du responsable (et non à partir de certains paquetages préconstruits téléchargés), car il est très important de les maintenir à jour.

h22
la source
Là où de tels ajustements pour exploiter votre processeur au maximum font la différence (cela n’est pertinent que dans un code très spécialisé; on dit que 95% du temps est consacré à 5% du code, de sorte que l’optimisation des 95% restants ne fait aucune différence notable, et la plupart des programmes actuels attendent de toute façon que l'utilisateur se décide de toute façon), ceux-ci offrent un code différent à activer en fonction du processeur au démarrage.
vonbrand
0

Une façon d'obtenir le meilleur des deux mondes (logiciel à jour, installation / désinstallation simple, intégration de la plupart des ajustements et adaptations de la distribution, optimisation pour les besoins locaux), tout en réduisant les coûts (nécessité de rester à jour, de surveiller les bugs) et les correctifs de dernière minute, suivez le développement, vous êtes seul en ce qui concerne les corrections de bugs et les incompatibilités entre les versions) ne peuvent pas être atténués (beaucoup), est de construire vos propres packages, en commençant par les packages source de votre distribution. Oui, cela représente plus de travail que de simplement construire et installer.

vonbrand
la source
1
Cela semble être une réponse intéressante ("le meilleur des deux mondes"), mais je ne comprends pas bien ce que vous voulez dire: "consiste à construire vos propres paquets, en commençant par les paquets sources de votre distribution". Souhaitez-vous reformuler / expliquer?
Jan Żankowski