Quelle est la différence entre build à 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 file exécutable d'installation, et d'autre part, il existe un moyen de le build à partir de la source.

Le dernier, le téléchargement d'un bundle source, est vraiment encombrant.

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

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

Les packages binarys sont déjà construits à partir d'une source par quelqu'un avec des fonctionnalités générales et des parameters fournis dans le logiciel afin qu'un grand nombre d'users puissent l'installer et l'utiliser.

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

Donc, pour l'installation à partir de la source, vous devez build le code source vous-même. Cela signifie que vous devez prendre soin des dependencies vous-même. Aussi, vous devez être conscient de toutes les fonctionnalités du package afin que vous puissiez le build en conséquence.

Avantages de l'installation depuis la source:

  • Vous pouvez installer la dernière version et restr toujours à jour, qu'il s'agisse d'un correctif de security 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 append certaines fonctionnalités qui peuvent ne pas être fournies dans le binary.
  • Installez-le dans un endroit que vous souhaitez.
  • Dans le cas de certains logiciels, vous pouvez fournir des informations spécifiques à votre matériel pour une installation appropriée.

Bref, l'installation à partir de la source vous offre une lourde option de personnalisation en même time, cela request beaucoup d'efforts, alors que l'installation à partir d'un binary est plus facile mais vous ne pourrez peut- être pas personnaliser comme vous le souhaitez.

Mise à jour : Ajout de l'argument relatif à la security dans les commentaires ci-dessous. Oui, il est vrai que lors de l'installation à partir de binary, vous n'avez pas l'intégrité du code source. Mais cela dépend de l'endroit où vous avez le binary. Il y a beaucoup de sources de confiance d'où vous pouvez get le binary de tout nouveau projet, le seul point négatif est le time . Cela peut prendre du time pour que le binary des mises à jour ou même un nouveau projet apparaisse dans nos référentiels de confiance.

Et par-dessus tout, à propos de la security des logiciels, j'aimerais souligner cette page hilarante aux bell-labs fournie par Joe dans les commentaires ci-dessous.

Un file source contient le code d'origine tel qu'il est écrit par le développeur dans la langue choisie (C, C ++, Python, etc.) et est générique. Il n'est pas spécifique à une dissortingbution et dans de nombreux cas à un operating system.

Un packageage (RPM ou DEB par exemple) est l'exécutable binary (ou un script interprété, etc.) pré-préparé pour votre dissortingbution particulière. La tâche de préparation de la source pour la compilation (ajout de correctifs nécessaires, etc.), la compilation réelle, la création de files de configuration spécifiques à la dissortingbution, la création de scripts pré et post installation, etc.

En d'autres termes, tout le travail d'âne a été fait pour vous dans un package, alors que vous devrez le faire vous-même si vous choisissez d'installer à partir de la source.

Il est beaucoup plus facile d'utiliser un package dans presque tous les cas comme:

  • Ils sont beaucoup plus faciles à installer
  • Ils sont spécifiquement conçus pour fonctionner avec votre dissortingbution
  • Ils sont parfois corrigés par le mainteneur de packages pour corriger les bogues spécifiques à la dissortingbution
  • Le gestionnaire de packages les désinstallera
  • Le gestionnaire de packages va gérer toutes les dependencies pour vous
  • Le gestionnaire de packages prendra en charge les 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 comstackr. Si vous le faites, vous devez prendre en count les éléments suivants:

  • Vous devrez installer tous les outils de développement sur votre système
  • Vous serez responsable de vérifier la mise à jour et la recompilation
  • Vous devrez vous assurer que toutes les dependencies 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 dissortingbution

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

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

Notez que si les packages préconfigurés de certains distros fournissent des exécutables binarys prêts à être installés et exécutés (RPM et DEB sont des exemples), d'autres dissortingbutions fournissent des packages qui automatisent simplement le process de compilation.

Les ebuilds de Gentoo en sont un exemple – le packageage est essentiellement des instructions au gestionnaire de packages décrivant comment comstackr et installer l'exécutable. Cela présente plusieurs avantages des gestionnaires de packages traditionnels (mises à jour automatiques, désinstallation, etc.) tout en permettant à l'user d'optimiser le process de compilation à son goût.

Arch Linux dispose d'un système d'empackageage où les packages grand public sont binarys alors que de nombreux packages supplémentaires sont compilés sur le système en utilisant des files PKGBUILD .

En dehors des autres réponses, j'aimerais append quelque chose:

Si vous décidez de comstackr un programme par vous-même, vous devez penser que la compilation n'est pas quelque chose que vous faites une seule fois. Vous aurez probablement besoin de vous abonner à la list de diffusion de développement des applications que vous avez décidé de comstackr et de restr à jour avec les nouvelles versions et, en particulier, les mises à jour de security.

Chaque fois que l'application est mise à jour, vous devrez recomstackr la nouvelle version, gardez donc à l'esprit que vous devrez épargner du time chaque semaine.

Si vous ne pouvez pas vous le permettre, il vaut mieux laisser le responsable du package faire ce travail pour vous.

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 include, réduisant un peu les performances. Les packages de pré-build countnt généralement sur les processeurs les plus archaïques encore en usage.

Cela est surtout important pour les applications critiques du projet qui utilisent très fortement le processeur, comme 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é, il ne comporte pas de contrôle d'access lui-même, il est donc rare que les bogues de security soient corrigés en quelques jours ou quelques heures. Presque jamais il n'a besoin de fonctionner sur une machine différente avec une architecture initialement inconnue.

Oui, je sais, les ordinateurs sont très très rapides et les efforts que vous effectuez sont très très chers, mais le troisième jour de votre séance et de l'attente de votre programme (c'est la situation dont je parle), de telles vérités commencer à paraître discutable.

Différemment, les applications comme les browsers et autres devraient être mieux utilisées à partir du référentiel du mainteneur (et non à partir de certains packages pré-construits téléchargés), car il est très important de les tenir à jour.

Une façon d'get le meilleur des deux mondes (un logiciel à jour, une installation / désinstallation simple, intégrant la plupart des ajustements de dissortingbution et des adaptations, peut être optimisée pour les besoins locaux), tandis que les coûts (doivent se tenir à jour, et les correctifs de dernière minute, suivre le développement, vous êtes seul en ce qui concerne les corrections de bugs et les incompatibilités entre les versions) ne peut être atténué (beaucoup), c'est build vos propres packages, en commençant par les packages source de votre dissortingbution. Oui, c'est plus de travail que de build et d'installer.