Wie erstelle ich mein gesamtes installiertes Paket aus Quellen?

26

Ich habe gelesen, wie quellbasierte Linux-Distributionen wie Gentoo im Vergleich zu vorgefertigten Distributionen wie Ubuntu beträchtliche Leistungssteigerungen erzielen können, da sie aus dem Quellcode mit Optimierungen für Ihr bestimmtes System installiert werden. Ist es möglich, Ubuntu aus dem Quellcode zu erstellen, um den gleichen Nutzen zu erzielen?

Ciferkey
quelle
3
Installieren Sie dafür Gentoo, nicht Ubuntu. Im Ernst, warum sollte man eine Distribution verwenden, die beim quellbasierten Abhängigkeitsmanagement absolut versagt, anstatt einer, die sie in den Schatten stellt?
Mathepic
7
Ich wäre gespannt auf Benchmarks zwischen Source und Binary, bei denen tatsächlich die gleichen Stack-Versionen und -Konfigurationen verwendet wurden. Der Vergleich ist normalerweise eine Ubuntu-Version (mit ihren Standardeinstellungen) mit der neuesten Version von Gentoo mit einem seltsamen Dateisystem und bizarren App-Standardeinstellungen. Die Ubuntu-Standardeinstellungen sind größtenteils ziemlich vernünftig und daher kommt der größte Teil der Leistung von Ubuntu , weshalb die meisten direkten Vergleiche Ubuntu vor Gentoo stellen.
Oli
1
Ein gutes Beispiel für einen schlechten Vergleich ist dieser Artikel aus dem Linux-Magazin (zum Lesen ist eine kostenlose Registrierung erforderlich), in dem verschiedene Kernel, verschiedene Nvidia-Treiber, verschiedene X-Versionen und verschiedene Desktop-Umgebungen verwendet werden. Sie können auch zwei verschiedene Versionen von Ubuntu vergleichen. Sie werden ähnliche Unterschiede aufweisen.
Oli
4
Leistungssteigerungen von was? Netzwerkdurchsatz, Festplattengeschwindigkeit, Prozessumschaltung, reine mathematische Berechnungen, 3D-Grafik, Startzeit?
Benutzer unbekannt
1
Ich würde nur raten, Software zu kompilieren, die CPU-Leistung in großem Maßstab benötigt (Videocodierung kommt in den Sinn) und vom Benutzer viel genutzt wird und von der CPU-Optimierung wie zum Beispiel FMA3 oder AVX2 profitiert.
Keiki

Antworten:

42

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

Ich bin mir nicht sicher, welche Vorteile Sie haben, wenn Sie über relativ neue Hardwarekomponenten verfügen. Für den Teil "Ubuntu from Source" lautet die Antwort jedoch JA. Sie können nicht nur Ihre Lieblingsanwendungen aus dem Quellcode erstellen, sondern das gesamte Betriebssystem.

Hier ist, wie:

Sie müssen apt-build installieren . Es ist ein Kommandotool wie apt-get, aber anstatt das Binärpaket herunterzuladen und zu installieren, lädt apt-build den Quellcode des Pakets herunter, kompiliert ihn und installiert ihn dann auf Ihrem System.

Nachdem Sie es mit installiert haben

sudo apt-get install apt-build

Sie werden nach einem Optimierungslevel gefragt (Medium ist in Ordnung), ob Sie ein passendes Repo für APT erstellen möchten (Ja) und nach einer Frage zur Prozessorarchitektur (mein Intel i7 gilt als Core2). Selbstverständlich können alle Optionen folgendermaßen umkonfiguriert werden:

dpkg-reconfigure apt-build

Der obige Befehl bietet zwei zusätzliche Optionen für den Compiler gcc und den Builder make. Ihre Beschreibungen finden Sie in den Systemhandbüchern: man gcc und man make.

Für eine manuelle und verfügbare Befehlsoptionen überprüfen

man apt-build

Am nützlichsten sind jedoch:

  • apt-build update - aktualisiert die Repoliste (wie apt-get update)
  • apt-build upgrade - Aktualisiert das Betriebssystem (wie apt-get upgrade)
  • apt-build install program - installiert eine Anwendung (wie apt-get install)
  • apt-build world - etwas für Hardcore-Benutzer, es kompiliert das gesamte System neu!

Beispielsweise:

Nehmen wir an, Sie möchten Gedit kompilieren / installieren. Anstelle von apt-get install musst du nur

sudo apt-build install gedit

Apt-build verwendet deb-src-Einträge in der Datei /etc/apt/sources.list, sodass der Kompilierungs- und Installationsprozess vollautomatisch abläuft (ähnlich wie bei Gentoo). Apt-build lädt die Quellen der Hauptanwendung und ihrer Abhängigkeiten herunter, kompiliert sie, erstellt ein Deb-Paket und installiert schließlich das Paket.

Einige Notizen zur Apt-Build-Welt.

Meiner Meinung nach versuchen Sie es nicht, es sei denn, Sie haben 24 oder mehr Stunden zur Verfügung!

Wenn dies das erste ist, was Sie tun sollten, entfernen / deaktivieren / deinstallieren Sie alle Anwendungen von Drittanbietern (besser in einer Neuinstallation von Ubuntu) und führen Sie dann Folgendes aus:

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

Der obige Befehl kopiert Ihre vollständige Liste der Systempakete nach apt-build.list, damit sie aus dem Quellcode kompiliert werden können. Öffnen Sie diese Datei

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

und entfernen Sie alle GCC / G ++ - Einträge

Dann können Sie tun:

sudo apt-build world

Ich schlage vor, zwei Optionen hinzuzufügen - --yes und --force-yes -, um den Wiederherstellungsprozess vollautomatisch zu gestalten.

Salih Emin
quelle
10
+1 für die konkrete Antwort im Vergleich zu "Warum bauen?" Antworten. Ich würde es vorziehen, auch eine ausführlichere Meinung (selbst wenn subjektiv) zu den Vorteilen zu lesen, die Sie erhalten könnten (oder nicht), wenn Sie sie nutzen würden apt-build.
Enzotib
1
Derzeit gibt es +17 für diese Antwort. Aber hat es jemand erfolgreich gemacht?
Keiki
1
@ otakun85 Ich habe apt-build verwendet, um einige Pakete unter Ubuntu erfolgreich zu kompilieren (ich kann mich nicht erinnern, welches Release vom 12.04. | 12.10. | 13.04.). Die Manpage für apt-build hat dies am Ende BUGS Many., also erwarten Sie Ärger.
Phizes
Ich finde, dass apt-build worldes besser ist, ein "Linux from Scratch" -Buch herunterzuladen , anstatt es zu verwenden, und dies apt-buildfür jedes darin aufgeführte Paket zu tun . Es gibt die richtige Reihenfolge usw. an. Zum Beispiel bin ich mir nicht sicher, ob apt-build worldes zuerst neu kompiliert werden binutilssollte gcc, dann binutilswieder, gccwieder, dann Programmiersprachen gzipusw. Es scheint, als würde es einfach alles alphabetisch kompilieren.
Serhyi Vynohradov
@ SerhyiVynohradov: Es wäre egal. LFS tut dies, um Abhängigkeiten von Bibliotheken im Host-System zu vermeiden. Hier wird jedoch nur alles, was vorhanden ist, durch kompilierte Versionen ersetzt. Sie werden immer noch am selben Ort sein, die gleiche ABI haben, etc.
Nick Matteo
3

Sie könnten einen Flammenkrieg und eine große Debatte über diese Art von Thema beginnen, aber lassen Sie uns einen Blick auf das wirkliche Leben werfen.

Die Geschwindigkeit Ihres Betriebssystems hängt stark davon ab, auf welcher Hardware Sie es ausführen, und das ist der Hauptfaktor.

Ich wechsle häufig die Distribution, während ich die meiste Zeit bei Arch bin, aber ist Arch viel schneller als Ubuntu? Nein.

Gnome mit compiz unter Ubuntu 10.10 verwendet ungefähr 300 RAM, auf Arch 200 RAM habe ich 4 GB RAM, ich spüre den Unterschied nicht, aber wenn Sie Ubuntu mit gnome mit Arch mit awesome vergleichen, wird es einen enormen Anstieg in der Reaktionsfähigkeit und der Ressource geben Verwendung (300ram vs 50ram), aber das ist nur wichtig, wenn Sie eine Distribution für ein Netbook wählen.

Wenn Sie also einen schnellen Desktop haben und keine Zeit damit verbringen möchten, an Ihrem System zu basteln, verwenden Sie einfach Ubuntu. Wenn Sie jedoch ein Netbook haben, sollten Sie in Betracht ziehen, ein leichtes WM auf Arch zu verwenden :)

Marcus Maxwell
quelle
Nun, irgendwann werden Sie vielleicht zu der Situation kommen, in der Sie über die neueste Hardware verfügen, aber Sie müssen noch stundenlange Vorgänge ausführen. Und anstatt eine Reihe von Servern einzurichten, um die Last zu verteilen, macht es Ihnen nichts aus, einige Zeit damit zu verbringen, zu basteln, um diesen zusätzlichen 20% igen Schub zu bekommen. Ich habe Arch nie benutzt, aber Gentoo ausprobiert. Und ich habe oft gesehen, dass es keine "schnellere Distribution" gibt. Stattdessen gibt es eine "Distribution mit weniger Software". Möglicherweise verfügen Sie über ein Bare-Bones-System, das zwar schnell, aber nicht sicher ist. Und wenn Sie die anderen Pakete installieren, wird es genauso schnell wie Ubuntu + apt-build.
Serhyi Vynohradov
0

Apt-Build ist nicht nur für die Leistung nützlich, sondern Sie können benutzerdefinierte Distributionsimages und Repositorys für bestimmte Hardware erstellen, die für die Masseninstallation für Ihr Unternehmen bereit sind. Damit meine ich eine optimierte Binärdistribution, wenn Sie wissen, dass die gesamte Hardware gleich ist. Auf diese Weise erledigt nur ein Computer die gesamte Kompilierung, und der Rest wird nur mit der remastered ISO aktualisiert. Es ist nicht nur für Leichtgewicht oder Codierung. Mit einem benutzerdefinierten ISO-Installationsprogramm können Sie das System neu installieren, ohne es erneut zu kompilieren, wenn Ihr System nach einem Notfall aus irgendeinem Grund nicht wiederherstellbar ist.

Double T
quelle