web-dev-qa-db-fra.com

Quelle est la différence entre créer à partir de la source et utiliser un package d'installation?

Je me demandais: lors de l'installation de quelque chose, il y a un moyen facile de double-cliquer sur un fichier exécutable d'installation, et d'autre part, il y a un moyen de le construire à partir de la source.

Ce dernier, téléchargeant un bundle source, est vraiment lourd.

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

47
kwagjj

Tous les logiciels sont des programmes , également appelés packages source . Tous les packages source doivent donc être construits en premier, pour fonctionner sur votre système.

Les packages binaires sont déjà construits à partir de la source par quelqu'un avec caractéristiques et paramètres généraux fournis dans le logiciel afin qu'un grand nombre d'utilisateurs puissent l'installer et l'utiliser.

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

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

Avantages de l'installation depuis la source:

  • Vous pouvez installer la dernière version et pouvez toujours rester à jour, que ce soit un correctif de sécurité ou 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 certaines 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 depuis source vous donne une option de personnalisation lourde en même temps, cela prend beaucoup d'efforts, tandis que l'installation from binary est plus facile mais vous pouvez ne pas être en mesure de personnaliser comme vous le souhaitez.

Mise à jour : Ajout de l'argument relatif à la sécurité dans les commentaires ci-dessous. Oui, il est vrai que lors de l'installation à partir de binaire, 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 d'où vous pouvez obtenir le binaire de tout nouveau projet, le seul point négatif est le temps. Il peut s'écouler un certain temps avant que le binaire des mises à jour ou même un nouveau projet n'apparaisse dans nos référentiels de confiance.

Et surtout, à propos de la sécurité des logiciels, je voudrais souligner cette hilarante page chez bell-labs fournie par Joe dans les commentaires ci-dessous.

44
beginer

Un fichier source contient le code d'origine tel qu'écrit par le développeur dans la langue qu'il/elle choisit (C, C++, Python etc), et est générique. Il n'est spécifique à aucune distribution et dans de nombreux cas, à n'importe quel système d'exploitation.

Un package (RPM ou DEB par exemple) est l'exécutable binaire (ou script interprété, etc.) pré-préparé pour votre distribution particulière. La tâche de préparer la source pour la compilation (ajouter les correctifs nécessaires, etc.), la compilation proprement dite, la création de fichiers de configuration spécifiques à la distribution, la création de scripts de pré et post-installation, etc. sont tous effectués pour vous par le responsable du package.

En d'autres termes, tout le travail de l'âne a été fait 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 package dans presque tous les cas:

  • Ils sont beaucoup plus faciles à installer
  • Ils sont spécialement conçus pour fonctionner avec votre distribution
  • 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 se chargera des mises à jour
  • Vous n'avez pas besoin d'installer des outils de développement sur votre système (compilateurs, make etc)

Cependant, parfois la version packagée est une ancienne version ou pire encore, il n'y a 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 vérifier une mise à jour et de recompiler
  • Vous devrez vous assurer que toutes les dépendances sont installées, y compris les packages dev - il pourrait y en avoir beaucoup.
  • 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 l'effort supplémentaire, la compilation à partir de la source peut vous offrir les avantages suivants:

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

Notez que si certains packages prédéfinis de distributions contiennent des exécutables binaires prêts à être installés et exécutés (RPM et DEB en sont des exemples), d'autres distributions fournissent des packages qui automatisent simplement le processus de compilation.

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

Arch Linux a un système de packaging où les packages traditionnels sont binaires tandis que de nombreux packages supplémentaires sont compilés sur le système à l'aide de fichiers PKGBUILD.

32
garethTheRed

Outre les autres réponses, je voudrais 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 abonner à 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, les mises à jour de sécurité.

Chaque fois que l'application est mise à jour, vous devrez recompiler la nouvelle version, alors gardez à l'esprit que vous devrez épargner une partie de votre temps chaque semaine.

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

19
Daniel

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

Ceci est surtout important pour les applications critiques de projet qui utilisent très fortement le CPU, comme les outils de pipeline bioinformatique, par exemple, ou les outils de modélisation géophysique. Ces logiciels s'exécutent dans un environnement très contrôlé, ne disposent pas de contrôle d'accès à eux seuls, ont donc rarement des bogues de sécurité si urgents qu'ils doivent être corrigés en jours ou en heures. Il n'a presque jamais besoin de s'exécuter sur une machine différente avec une architecture initialement inconnue.

Oui, je sais, les ordinateurs sont très très très rapides maintenant et tous les efforts ou actions que vous entreprenez sont très très très chers, mais le troisième jour de séance et d'attente de fin de votre programme (c'est la situation dont je parle) de telles vérités commencer à sembler douteux.

Différemment, les applications telles que les navigateurs et autres devraient être mieux utilisées à partir du référentiel du responsable (et non à partir de certains packages prédéfinis téléchargés), car il est très important de les maintenir à jour.

6
h22

Une façon d'obtenir le meilleur des deux mondes (logiciel à jour, installation/désinstallation simple, incorporez la plupart des ajustements et adaptations de distribution, peut optimiser pour les exigences locales), tandis que les coûts (doivent vous tenir à jour, faites attention aux bogues) 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), c'est de construire vos propres packages, en commençant par les packages source de votre distribution. Oui, c'est plus de travail que de construire et d'installer.

0
vonbrand