Est-il préférable de compiler à partir des sources ou d'installer à partir d'un package .deb?

18

Parfois, lors du téléchargement de logiciels à partir d'Internet, je trouve qu'il y a un paquet .deb prêt pour mon Debian / Ubuntu et aussi un tarball à compiler. Au début, j'utilisais simplement le paquet pour sa facilité d'installation, et je n'osais même pas tenter de compiler. Même le son me faisait un peu peur. De nos jours, cependant, quand j'ai la possibilité, je me retrouve parfois dans un dilemme: y a-t-il un avantage impopulaire à compiler à partir des sources par rapport au package .deb? J'espère le découvrir ici, merci.

the_midget_17
la source

Réponses:

24

L'avantage de la compilation à partir de la source est que vous pouvez compiler des packages avec certains indicateurs / options qui peuvent être manquants / désactivés dans les packages Ubuntu standard. De plus, cela facilite l'installation de plusieurs versions du même programme. De plus, vous pouvez choisir une version exacte d'un paquet qui peut déjà être supprimé ou pas encore présent dans les référentiels Ubuntu (exemple: j'ai plusieurs versions de Python 2.4.x dans mon répertoire / opt / car j'en ai besoin pour en exécuter d'autres plus anciennes). Logiciel).

L'inconvénient de la compilation à partir de la source est que, à moins que vous ne construisiez un .deb et que vous l'installiez, la procédure normale "./configure; make; sudo make install" garde le gestionnaire de paquets d'Ubuntu complètement inconscient des modifications que vous apportez, donc vous ne vais pas obtenir de mises à jour pour le logiciel compilé manuellement; et il est possible que le gestionnaire de packages écrase / casse votre package ultérieurement si vous ne faites pas attention de l'installer dans un emplacement séparé.

En bref: envisagez toujours d'installer à partir de référentiels Ubuntu standard d'abord, envisagez ensuite d'installer un .deb; compiler uniquement à partir de sources si vous savez exactement pourquoi vous devez le faire.

Sergey
la source
J'ai également lu ce que les performances du paquet pourraient être différentes, quand il est compilé, une sorte de meilleure compatibilité avec le noyau actuel. Je ne l'ai pas comparé personnellement.
Fedir RYKHTIK
@Fedir: Je ne suis pas sûr que le noyau ait quoi que ce soit à voir avec cela, c'est plutôt l'architecture du processeur - par exemple, dans le temps, de nombreuses distributions contenaient des packages compilés avec le jeu d'instructions 80386 pour une compatibilité maximale tandis que la compilation manuelle d'un programme pour Pentium l'activerait pour utiliser des instructions plus efficaces. Il existe des distributions entières, telles que Gentoo, qui sont compilées à partir des sources sur la machine hôte pour cette raison. Cependant, la différence est généralement minime et ne peut être remarquée que dans des applications très spécifiques.
Sergey
1
Notez que l'utilisation de checkinstall à la place de make install atténue un grand nombre des inconvénients mentionnés. Voir help.ubuntu.com/community/CompilingEasyHowTo
ndemou
1
Désolé pour tâtonner, @EliahKagan, mais, si virtualenv est génial, c'est plus pour maintenir plusieurs environnements Python avec différentes bibliothèques installées. Si vous vouliez une version spécifique de Python, peut-être compilée avec des paramètres spécifiques - vous auriez toujours besoin d'installer le binaire réel - à partir d'un .deb ou compilé à partir de zéro.
Sergey
@Sergey Vous avez raison. (Et je ne vois rien de ce que vous avez dit comme de la foutaise - si je dois m'excuser pour mon commentaire faux et trompeur!) Si je comprends bien, les gestionnaires de paquets aiment créerconda automatiquement des environnements virtuels et installer différentes installations de Python pour eux , créer et maintenir des versions par projet. Mais comme vous le dites, virtualenv ne le fera pas lui-même.
Eliah Kagan
1

Je me disputais à ce sujet hier. Je pense qu'il est extrêmement important de ne rien construire de fragile, car il est connu qu'il n'y a pas de documentation à jour et bonne, surtout lorsque vous travaillez avec un système fragile, vous n'aurez pas le temps de combattre le feu et d'écrire la documentation, et là où tout est robuste, la documentation n'est pas si nécessaire. Vous ne devez donc jamais compiler à partir de la source, trouver une autre solution, utiliser un autre logiciel, changer votre architecture, mais n'utilisez pas quelque chose qui se cassera après la mise à jour. Et oui, cela n'a rien à voir avec la version du noyau, il s'agit de l'architecture de votre machine, et de nos jours, vous ne pouvez guère obtenir de différence significative avec la compilation à partir du code source, je parie que vous n'en obtiendrez pas.

Edik Mkoyan
la source
0

Il est certainement beaucoup plus facile d'installer le .deb, bien que si vous le pouvez, le meilleur pari est de le trouver dans un repo ou un ppa, afin que vous puissiez recevoir des mises à jour.

AFAIK il n'y a aucun avantage réel à le compiler vous-même, sauf si vous prévoyez de le modifier en premier. Si vous voulez juste le logiciel tel quel, installez le .deb

Chris Wayne
la source