Comment construire tout mon package installé à partir des sources?

26

J'ai lu comment les distributions Linux basées sur la source comme Gentoo peuvent avoir des augmentations de performances considérables par rapport aux distributions pré-construites comme Ubuntu car elles s'installent à partir de la source avec des optimisations pour votre système particulier. Est-il possible de construire Ubuntu à partir de la source pour obtenir le même type d'avantage?

ciferkey
la source
3
Installez Gentoo, pas Ubuntu, pour cela. Sérieusement, pourquoi utiliser une distribution qui échoue absolument à la gestion des dépendances basées sur la source au lieu d'une qui bascule dessus?
mathepic
7
Je serais curieux de voir des repères entre la source et le binaire où ils utilisent en fait les mêmes versions de pile et la même configuration. La comparaison est généralement une version d'Ubuntu (avec ses valeurs par défaut) par rapport à la dernière Gentoo possible avec un système de fichiers bizarre et des valeurs par défaut d'application bizarres. Les valeurs par défaut d'Ubuntu sont pour la plupart assez saines et c'est de là que viennent la plupart de ses performances et c'est pourquoi la plupart des comparaisons directes placent Ubuntu devant Gentoo.
Oli
1
Un bon exemple d'une mauvaise comparaison est cet article de Linux Magazine (inscription gratuite requise pour lire) où ils utilisent différents noyaux, différents pilotes Nvidia, différentes versions X et différents environnements de bureau. Vous pourriez aussi bien comparer deux versions différentes d'Ubuntu. Ils montreront des échelles de différence similaires.
Oli
4
Les performances augmentent de quoi? Débit réseau, vitesse du disque, commutation de processus, calculs mathématiques purs, graphiques 3D, temps de démarrage?
utilisateur inconnu
1
Je ne conseillerais que de compiler un logiciel, qui nécessite des performances CPU à grande échelle (l'encodage vidéo vient à l'esprit) et est beaucoup utilisé par l'utilisateur et bénéficie d'une optimisation CPU comme par exemple FMA3 ou AVX2.
keiki

Réponses:

42

Is is possible to build Ubuntu from source to get the same kind of benefit?

Je ne suis pas sûr des avantages si vous avez des composants matériels assez nouveaux, mais pour la partie "Ubuntu depuis la source" de la question, la réponse est OUI, vous pouvez créer non seulement vos applications préférées à partir de la source, mais l'ensemble du système d'exploitation.

Voici comment:

Vous devez installer apt-build . C'est un outil de ligne de commande comme apt-get, mais au lieu de télécharger et d'installer le package binaire, apt-build télécharge le code source du package, le compile puis l'installe sur votre système.

Après l'avoir installé avec

sudo apt-get install apt-build

on vous demandera un niveau d'optimisation (moyen est ok), si vous voulez créer un dépôt apt-build pour APT (Oui) et une question sur l'architecture du processeur (mon Intel i7 est considéré comme core2). Bien sûr, toutes les options peuvent être reconfigurées de cette façon:

dpkg-reconfigure apt-build

La commande ci-dessus offre deux options supplémentaires pour le compilateur gcc et le constructeur make. Leurs descriptions se trouvent dans les manuels du système: man gcc et man make.

Pour une option de commande manuelle et disponible, vérifiez

man apt-build

Mais les plus utiles sont:

  • apt-build update - met à jour la liste de dépôt, (comme la mise à jour apt-get)
  • mise à niveau apt-build - met à jour le système d'exploitation, (comme la mise à niveau apt-get)
  • programme d'installation d'apt-build - installe une application, (comme l'installation d'apt-get)
  • monde apt-build - quelque chose pour les utilisateurs hard-core, il recompile tout le système!

Par exemple:

Disons que vous voulez compiler / installer Gedit. Au lieu d'installer apt-get, il vous suffit de faire

sudo apt-build install gedit

Apt-build utilise les entrées deb-src contenues dans le fichier /etc/apt/sources.list pour que les processus de compilation et d'installation soient entièrement automatiques (similaire à l'émergence trouvée dans Gentoo). Apt-build télécharge les sources de l'application principale et de ses dépendances, les compile, crée un paquet deb et enfin installe le paquet.

Quelques notes sur le monde apt-build.

À mon avis, n'essayez pas, sauf si vous avez 24 heures ou plus disponibles!

Si c'est la première chose que vous devriez, supprimez / désactivez / désinstallez toutes les applications tierces (il vaut mieux le faire dans une nouvelle installation d'Ubuntu), puis faites:

sudo su
dpkg --get-selections | awk '{if ($2 == "install") print $1}'> /etc/apt/apt-build.list
exit

La commande ci-dessus copiera votre liste complète des packages système dans apt-build.list afin qu'ils puissent être compilés à partir des sources. Ouvrez ce fichier

sudo gedit /etc/apt/apt-build.list

et supprimez toute entrée GCC / G ++

Ensuite, vous pouvez faire:

sudo apt-build world

Je suggère d'ajouter deux options - --yes et --force-yes - pour rendre le processus de reconstruction entièrement automatique.

Salih Emin
la source
10
+1 pour la réponse concrète, par rapport à "pourquoi construire?" réponses. Je préfère lire également une opinion plus approfondie (même si elle est subjective) sur les avantages que vous pourriez (ou ne pourriez pas) obtenir en utilisant apt-build.
enzotib
1
Il y a actuellement +17 pour cette réponse. Mais quelqu'un l'a-t-il réussi?
keiki
1
@ otakun85 J'ai utilisé apt-build pour compiler avec succès certains paquets sur Ubuntu (je ne me souviens pas de quelle version, une de 12.04 | 12.10 | 13.04), j'ai essayé le monde apt-build qui était un gâchis. La page de manuel pour apt-build a ceci à la fin BUGS Many., alors attendez-vous à des problèmes.
Phizes
Je trouve qu'au lieu d'utiliser, apt-build worldil vaut mieux télécharger un livre "Linux from Scratch", et faire apt-buildpour chaque paquet qui y est répertorié. Il spécifie l'ordre correct, etc. Par exemple, je ne suis pas sûr, s'il apt-build worldsait qu'il doit d'abord recompiler binutils, puis gcc, binutilsencore, gccencore, puis les langages de programmation, gzipetc. Il semble qu'il compile tout simplement par ordre alphabétique.
Serhyi Vynohradov
@SerhyiVynohradov: Cela n'aurait pas d'importance. LFS fait cela pour éviter de laisser des dépendances sur les bibliothèques dans le système hôte, mais ici, il suffit de tout remplacer en place par des versions compilées; ils seront toujours au même endroit, auront le même ABI, etc.
Nick Matteo
3

Vous pouvez lancer une guerre des flammes et un énorme débat sur ce genre de sujet, mais regardons la vie réelle.

La vitesse de votre système d'exploitation dépend grandement du matériel que vous utilisez et c'est le facteur majeur.

Je change fréquemment de distributions tout en restant la plupart du temps avec Arch, mais Arch est-il bien plus rapide qu'Ubuntu? Non.

Gnome avec compiz sur Ubuntu 10.10 utilise environ 300ram, sur Arch 200ram, j'ai 4 Go de RAM, je ne sens pas la différence, mais si vous comparez Ubuntu avec gnome à Arch avec génial, il y aura un énorme coup de pouce dans la réactivité et les ressources utilisation (300ram vs 50ram), mais cela n'a d'importance que si vous choisissez une distribution pour un netbook.

Donc, si vous avez un bureau rapide et que vous ne voulez pas passer du temps à bricoler votre système, utilisez simplement Ubuntu, mais si vous avez un netbook, envisagez d'utiliser un WM léger sur Arch :)

Marcus Maxwell
la source
Eh bien, à un moment donné, vous pouvez arriver à la situation où vous avez le dernier matériel, mais vous devez toujours effectuer des opérations d'une heure. Et au lieu de configurer un groupe de serveurs pour répartir la charge, cela ne vous dérange pas de passer un peu de temps à bricoler, pour obtenir ce coup de pouce supplémentaire de 20%. Je n'ai jamais utilisé Arch, mais j'ai essayé Gentoo. Et j'ai vu que bien des fois, il n'y a pas de "distribution plus rapide". Au lieu de cela, il existe une "distribution avec moins de logiciels". Vous pouvez avoir un système sans système d'exploitation qui est rapide, mais pas sécurisé. Et lorsque vous installez les autres packages, cela devient la même vitesse que Ubuntu + apt-build.
Serhyi Vynohradov
0

Apt-build est utile pour plus que les performances, vous pouvez créer des images de distribution personnalisées et un référentiel pour du matériel spécifique prêt pour une installation en masse pour votre entreprise. Par cela, je veux dire une distribution binaire optimisée si vous savez que tout le matériel sera le même. De cette façon, un seul ordinateur effectue tout le travail de compilation et les autres sont simplement mis à niveau à l'aide de l'ISO remasterisé. Il ne s'agit pas uniquement de légèreté ou d'encodage. Et un ISO d'installation personnalisé vous permet de réinstaller sans recompiler si, pour une raison quelconque, votre système est irrécupérable après une catastrophe.

Double T
la source