Ist es besser, aus dem Quellcode zu kompilieren oder von einem .deb-Paket zu installieren?

18

Wenn ich Software aus dem Internet herunterlade, stelle ich manchmal fest, dass ein .deb-Paket für mein Debian / Ubuntu und ein Tarball zum Kompilieren bereit ist. Anfangs benutzte ich das Paket einfach, um die Installation zu vereinfachen, und wagte nicht einmal den Versuch, es zu kompilieren. Sogar das Geräusch machte mir ein bisschen Angst. Wenn ich heutzutage die Möglichkeit habe, gerate ich manchmal in ein Dilemma: Hat das Kompilieren aus dem Quellcode einen unpopulären Vorteil gegenüber dem .deb-Paket? Ich hoffe es hier herauszufinden, danke.

the_midget_17
quelle

Antworten:

24

Der Vorteil des Kompilierens aus dem Quellcode besteht darin, dass Sie Pakete mit bestimmten Flags / Optionen kompilieren können, die in Ubuntu-Paketen mit Standardstandard fehlen / deaktiviert sein können. Außerdem können auf einfache Weise mehrere Versionen desselben Programms installiert werden. Sie können auch eine genaue Version eines Pakets auswählen, das möglicherweise bereits aus Ubuntu-Repositorys entfernt wurde oder noch nicht vorhanden ist (Beispiel: Ich habe mehrere Versionen von Python 2.4.x in meinem / opt / -Verzeichnis, da ich es zum Ausführen älterer Pakete benötige Software).

Der Nachteil des Kompilierens aus dem Quellcode besteht darin, dass die normale Prozedur "./configure; make; sudo make install" Ubuntus Paketmanager nicht über die vorgenommenen Änderungen informiert, es sei denn, Sie erstellen eine .deb-Datei und installieren diese Sie erhalten keine Updates für die manuell kompilierte Software. und es ist möglich, dass der Paketmanager Ihr Paket später überschreibt / beschädigt, wenn Sie nicht darauf achten, es an einem anderen Ort zu installieren.

Kurz gesagt: Ziehen Sie immer in Betracht, zuerst von Standard-Ubuntu-Repositorys zu installieren, und installieren Sie anschließend eine .deb-Datei. Kompilieren Sie nur aus Quellen, wenn Sie genau wissen, warum Sie dies tun müssen.

Sergey
quelle
Ich habe auch gelesen, was die Paketleistung anders sein könnte, wenn es kompiliert ist, eine Art bessere Kompatibilität mit dem aktuellen Kernel. Hat es nicht persönlich verglichen.
Fedir RYKHTIK
@Fedir: Ich bin mir nicht sicher, ob der Kernel irgendetwas damit zu tun hat, es ist eher eine Prozessorarchitektur. Früher enthielten viele Distributionen Pakete, die mit einem 80386-Befehlssatz kompiliert wurden, um maximale Kompatibilität zu gewährleisten, während das manuelle Kompilieren eines Programms für Pentium dies ermöglichen würde effizientere Anweisungen zu verwenden. Aus diesem Grund gibt es ganze Distributionen wie Gentoo, die vom Quellcode auf dem Hostcomputer kompiliert werden. Der Unterschied ist jedoch in der Regel minimal und kann nur in sehr spezifischen Anwendungen festgestellt werden.
Sergey
1
Beachten Sie, dass die Verwendung von checkinstall anstelle von make install viele der genannten Nachteile mindert. Siehe help.ubuntu.com/community/CompilingEasyHowTo
ndemou
1
Entschuldigen Sie, @EliahKagan, dass Sie sich für Nitpicking entschieden haben. Virtualenv ist zwar fantastisch, es dient jedoch eher dazu, mehrere Python- Umgebungen mit unterschiedlichen installierten Bibliotheken zu verwalten . Wenn Sie eine bestimmte Version von Python haben möchten, die möglicherweise mit bestimmten Einstellungen kompiliert wurde, müssen Sie die eigentliche Binärdatei noch installieren - entweder aus einer .deb-Datei oder von Grund auf neu kompiliert.
Sergey
@Sergey Du hast recht. (Und ich sehe nicht alles , was Sie als nitpickiing gesagt haben - wenn alles , was ich für meine falsch und irreführend Kommentar entschuldigen) Wie ich es verstehe Manager Paket wie condaautomatisch virtuelle Umgebungen machen und verschiedene Installationen von Python für sie installieren , Erstellen und Verwalten von Projektversionen. Aber wie Sie sagen, wird virtualenv dies nicht selbst tun.
Eliah Kagan
1

Ich habe erst gestern darüber gestritten. Ich halte es für äußerst wichtig, nichts Zerbrechliches zu bauen, da es bekanntermaßen keine aktuelle und gute Dokumentation gibt, insbesondere wenn Sie mit einem zerbrechlichen System arbeiten, wird es keine Zeit geben, das Feuer zu bekämpfen und zu schreiben Dokumentation, und wo alles robust ist, wird die Dokumentation nicht so oft benötigt. Sie sollten also niemals aus dem Quellcode kompilieren, eine andere Lösung finden, eine andere Software verwenden, Ihre Architektur ändern, aber nichts verwenden, das nach dem Update kaputt geht. Und ja, es hat nichts mit der Kernel-Version zu tun, es geht um die Architektur Ihrer Maschine, und heutzutage können Sie kaum einen signifikanten Unterschied beim Kompilieren aus dem Quellcode erzielen, ich wette, Sie werden keinen bekommen.

Edik Mkoyan
quelle
0

Es ist sicherlich viel einfacher, die .deb-Datei zu installieren. Am besten ist es jedoch, sie in einem Repo oder einem PPA zu finden, damit Sie Updates erhalten.

AFAIK es gibt keinen wirklichen Vorteil, es selbst zu kompilieren, es sei denn, Sie planen, es zuerst zu ändern. Wenn Sie die Software nur so haben möchten, wie sie ist, installieren Sie die .deb-Datei

Chris Wayne
quelle