Was ist der Unterschied zwischen der Erstellung aus dem Quellcode und der Verwendung eines Installationspakets?

46

Ich habe mich gefragt: Wenn Sie etwas installieren, gibt es eine einfache Möglichkeit, auf eine ausführbare Installationsdatei zu doppelklicken, und auf der anderen Seite gibt es eine Möglichkeit, sie aus dem Quellcode zu erstellen.

Letzteres, das Herunterladen eines Quellpakets, ist sehr umständlich.

Aber was ist der grundlegende Unterschied zwischen diesen beiden Methoden?

kwagjj
quelle

Antworten:

44

Alle Software sind Programme , die auch als Quellpakete bezeichnet werden . Also alle Quellpakete werden müssen gebaut ersten, die auf dem System ausgeführt werden .

Bei den Binärpaketen handelt es sich um Pakete , die bereits von jemandem mit allgemeinen Funktionen und Parametern aus dem Quellcode erstellt wurden, damit eine große Anzahl von Benutzern sie installieren und verwenden kann.

Binärpakete sind einfach zu installieren .
Aber möglicherweise nicht über alle Optionen aus dem Upstream - Paket.

Für die Installation aus dem Quellcode müssen Sie den Quellcode also selbst erstellen. Das heißt, Sie müssen sich selbst um die Abhängigkeiten kümmern. Außerdem müssen Sie alle Funktionen des Pakets kennen, damit Sie es entsprechend erstellen können.

Vorteile der Installation von der Quelle:

  • Sie können die neueste Version installieren und immer auf dem neuesten Stand bleiben, egal ob es sich um einen Sicherheitspatch oder eine neue Funktion handelt.
  • Ermöglicht das Reduzieren der Funktionen während der Installation, um Ihren Anforderungen zu entsprechen.
  • Ebenso können Sie einige Funktionen hinzufügen, die möglicherweise nicht in der Binärdatei enthalten sind.
  • Installieren Sie es an einem von Ihnen gewünschten Ort.
  • Im Falle von Software geben Sie möglicherweise Ihre hardwarespezifischen Informationen für eine geeignete Installation an.

Kurz gesagt, die Installation aus dem Quellcode bietet Ihnen umfangreiche Anpassungsmöglichkeiten und ist gleichzeitig sehr aufwändig. Die Installation aus dem Binärcode ist einfacher, Sie können sie jedoch möglicherweise nicht nach Ihren Wünschen anpassen .

Update : Hinzufügen des Arguments zur Sicherheit in den Kommentaren unten. Ja, es stimmt, dass Sie bei der Installation von einer Binärdatei nicht die Integrität des Quellcodes haben. Aber dann kommt es darauf an, woher Sie die Binärdatei haben. Es gibt viele vertrauenswürdige Quellen, aus denen Sie die Binärdatei jedes neuen Projekts abrufen können. Das einzig Negative ist die Zeit . Es kann einige Zeit dauern, bis die Binärdatei der Updates oder sogar ein neues Projekt in unseren vertrauenswürdigen Repositorys angezeigt wird.

Und vor allem, was die Software-Sicherheit betrifft, möchte ich diese urkomische Seite bei Bell-Labs hervorheben, die Joe in den folgenden Kommentaren zur Verfügung gestellt hat.

Anfänger
quelle
4
source kann auch auf eine für Ihr System optimierte Weise kompiliert werden (was vielleicht keine gute Idee ist, da das kompilierte Zeug dann "systemspezifisch" ist und möglicherweise nicht an einem Backup arbeitet ... aber Sie haben das Quelle können Sie neu kompilieren (wenn Sie Zeit dafür haben)
Olivier Dulac
Dies hängt davon ab, ob Sie das "Backup-System" überhaupt haben. Wenn Sie nur ein bisschen recherchieren, tun Sie dies normalerweise nicht.
22.
1
Für die Hyperparanoiden ist ein Vorteil der Installation aus dem Quellcode die Sicherheit und die Möglichkeit, den Code zu überprüfen, wenn Sie in der Lage sind und oder wollen: Wenn Sie aus dem Quellcode installieren, wissen Sie, dass Sie eine Binärdatei aus diesem Quellcode haben und nicht eine Binärdatei mit unbekannten Änderungen (vorausgesetzt, Sie vertrauen in erster Linie der Quelle).
LawrenceC
6
@ultrasawblade - Du bist offensichtlich nicht paranoid genug! <G> - siehe cm.bell-labs.com/who/ken/trust.html für den gesamten Monat.
Joe
32

Eine Quelldatei enthält den Originalcode, der vom Entwickler in der von ihm gewählten Sprache (C, C ++, Python usw.) geschrieben wurde, und ist generisch. Es ist nicht spezifisch für jede Distribution und in vielen Fällen für jedes Betriebssystem.

Ein Paket (z. B. RPM oder DEB) ist die ausführbare Binärdatei (oder das interpretierte Skript usw.), die für Ihre spezielle Distribution vorgefertigt wurde. Die Vorbereitung der Quelle für das Kompilieren (Hinzufügen aller erforderlichen Patches usw.), das eigentliche Kompilieren, das Erstellen distro-spezifischer Konfigurationsdateien, das Erstellen von Skripten vor und nach der Installation usw. werden vom Paketbetreuer für Sie erledigt.

Mit anderen Worten, die gesamte Eselarbeit wurde in einem Paket für Sie erledigt, wohingegen Sie sie selbst erledigen müssen, wenn Sie sich für die Installation von der Quelle entscheiden.

Es ist viel einfacher, ein Paket in fast allen Fällen zu verwenden:

  • Sie sind viel einfacher zu installieren
  • Sie wurden speziell für die Verwendung mit Ihrer Distribution entwickelt
  • Sie werden manchmal vom Paketbetreuer gepatcht, um distro-spezifische Fehler zu beheben
  • Der Paketmanager deinstalliert sie
  • Der Paketmanager verwaltet alle Abhängigkeiten für Sie
  • Der Paketmanager kümmert sich um Updates
  • Sie müssen keine Entwicklertools auf Ihrem System installieren (Compiler, Make usw.)

Manchmal ist die gepackte Version jedoch eine alte Version oder, noch schlimmer, es gibt keine gepackte Version. In diesem Fall besteht Ihre einzige Möglichkeit darin, sich selbst zu kompilieren. In diesem Fall müssen Sie Folgendes berücksichtigen:

  • Sie müssen alle Entwicklertools auf Ihrem System installieren
  • Sie sind dafür verantwortlich, nach einem Update zu suchen und es erneut zu kompilieren
  • Sie müssen sicherstellen, dass alle Abhängigkeiten installiert sind, einschließlich der devPakete. Möglicherweise gibt es viele davon.
  • Möglicherweise müssen Sie Probleme beheben, wenn dies auf Ihrer Distribution nicht wie erwartet funktioniert

Wenn Sie bereit sind, zusätzlichen Aufwand zu betreiben, bietet das Kompilieren aus dem Quellcode möglicherweise die folgenden Vorteile:

  • Zugriff auf die neueste verfügbare Version
  • Die Option, den Kompilierungsprozess für Leistung / Stabilität zu optimieren
  • Vergnügen!

Beachten Sie, dass die vorgefertigten Pakete einiger Distributionen ausführbare Binärdateien enthalten, die installiert und ausgeführt werden können (RPM und DEB sind Beispiele), während andere Distributionen Pakete enthalten, die den Kompilierungsprozess einfach automatisieren.

Gentoos ebuildsist ein Beispiel dafür - das Paket enthält im Grunde Anweisungen für den Paketmanager, die beschreiben, wie die ausführbare Datei kompiliert und installiert wird. Dies hat viele Vorteile herkömmlicher Paketmanager (automatische Updates, Deinstallation usw.) und ermöglicht dem Benutzer dennoch, den Kompilierungsprozess nach seinem Geschmack zu optimieren.

Arch Linux verfügt über ein Paketsystem, bei dem die Mainstream-Pakete binär sind und viele zusätzliche Pakete mithilfe von PKGBUILDDateien auf dem System kompiliert werden.

garethTheRed
quelle
19

Neben den anderen Antworten möchte ich noch etwas hinzufügen:

Wenn Sie sich entscheiden, ein Programm selbst zu kompilieren, müssen Sie denken, dass Sie das Kompilieren nicht nur einmal ausführen müssen. Wahrscheinlich müssen Sie die Entwicklungsmailingliste der Anwendungen abonnieren, für die Sie sich entschieden haben, die neuen Versionen und insbesondere die Sicherheitsupdates zu kompilieren und auf dem neuesten Stand zu halten.

Jedes Mal, wenn die Anwendung aktualisiert wird, müssen Sie die neue Version neu kompilieren. Denken Sie also daran, dass Sie wöchentlich etwas Zeit sparen müssen.

Wenn Sie sich das nicht leisten können, ist es besser, den Paketbetreuer diesen Job für Sie erledigen zu lassen.

Daniel
quelle
6

Aufbauend auf der Quelle können Sie die Architektur Ihrer Maschine genau festlegen. Neue CPUs verfügen über zusätzliche Anweisungen, die Compiler verstehen und die Leistung ein wenig beeinträchtigen. Pre-Build-Pakete verwenden normalerweise die archaischste CPU, die noch häufig verwendet wird.

Dies ist vor allem für projektkritische Anwendungen wichtig, bei denen die CPU sehr stark beansprucht wird, z. B. Werkzeuge für bioinformatische Pipelines oder geophysikalische Modellierungswerkzeuge. Solche Software läuft in einer sehr kontrollierten Umgebung, verfügt nicht über eine eigene Zugriffskontrolle, so dass Sicherheitslücken selten so dringend sind, dass sie innerhalb von Tagen oder Stunden gepatcht werden müssen. Fast nie muss es auf einem anderen Computer mit zunächst unbekannter Architektur ausgeführt werden.

Ja, ich wusste, Computer sind jetzt sehr, sehr schnell und alle Bemühungen oder Maßnahmen, die Sie ergreifen, sind sehr, sehr teuer, aber am dritten Tag des Sitzens und Wartens auf die Fertigstellung Ihres Programms (das ist die Situation, von der ich spreche) sind solche Wahrheiten Fange an, fragwürdig auszusehen.

Im Gegensatz dazu sollten Anwendungen wie Browser und dergleichen besser über das Maintainer-Repository (und nicht über einige heruntergeladene vorgefertigte Pakete) verwendet werden, da es sehr wichtig ist, sie auf dem neuesten Stand zu halten.

h22
quelle
Wo solche Optimierungen, um Ihre CPU voll auszunutzen, einen Unterschied machen (dies ist nur in einigen sehr speziellen Codes relevant; das Sprichwort besagt, dass 95% der Zeit für 5% des Codes aufgewendet werden, so dass die anderen 95% optimiert werden Dies macht keinen nennenswerten Unterschied, und die meisten heutigen Programme warten zu 99% darauf, dass der Benutzer sich überhaupt entscheidet.) Programme bieten je nach CPU beim Start unterschiedlichen Code zum Einschalten.
Vonbrand
0

Ein Weg, um das Beste aus beiden Welten zu bekommen (aktuelle Software, einfache Installation / Deinstallation, Integration der meisten Optimierungen und Anpassungen der Distribution, Optimierung für lokale Anforderungen), während die Kosten (müssen selbst auf dem neuesten Stand bleiben, auf Fehler achten) und Last-Minute-Patches, folgen Sie der Entwicklung, Sie sind auf sich allein gestellt in Bezug auf Fehlerbehebungen und Inkompatibilitäten zwischen Versionen) können nicht (viel) gemindert werden, ist es, Ihre eigenen Pakete zu erstellen, beginnend mit den Quellpaketen aus Ihrer Distribution. Ja, es ist mehr Arbeit als nur das Bauen und Installieren.

vonbrand
quelle
1
Es scheint eine interessante Antwort zu sein ("das Beste aus beiden Welten"), aber ich kann nicht ganz verstehen, was Sie hier meinen: "Es ist, Ihre eigenen Pakete zu erstellen, beginnend mit den Quellpaketen aus Ihrer Distribution". Würde es Ihnen etwas ausmachen, etwas umzuschreiben / zu erklären?
Jan Żankowski