Was sind die Vorteile des Erstellens von Tools / Bibliotheken aus dem Quellcode?

8

Erhalten Sie durch das Bauen aus der Quelle irgendwelche Vorteile? Ist der Code besser für Ihre Hardwarearchitektur optimiert? Ist es im Allgemeinen besser optimiert?

Warum sollte sich jemand dafür entscheiden, aus dem Quellcode zu erstellen, anstatt ein Paketverwaltungssystem wie APT / yum zu verwenden? Wenn es einen Optimierungsgewinn gibt, wann überwiegt dann der Nutzen eines Paketverwaltungssystems?

Doug T.
quelle
Ihre beiden Auswahlmöglichkeiten schließen sich nicht gegenseitig aus. Sie können die Quellen eines Pakets anpassen oder es sogar selbst verpacken.
Faheem Mitha

Antworten:

11

Das Erstellen aus dem Quellcode bietet die folgenden Optionen, die bei Verwendung einer Version aus einem Binärpaket-Manager nicht verfügbar sind.

Beim Kompilieren aus dem Quellcode können Sie:

  • Verwenden Sie prozessorspezifische Optimierungen
  • Verwenden Sie die neueste Version
  • Erfahren Sie, wie das Kompilieren und Verknüpfen funktioniert (Vorschlag von @mattdm)
  • Fehler beheben, Entwicklungsarbeit
  • Festlegen von Optionen zur Kompilierungszeit (z. B. X-Funktionen in vim einschließen)
Shawn J. Goff
quelle
1
Ist der Gewinn an prozessorspezifischen Optimierungen für einen normalen Desktop-Benutzer die Kosten der Komplexität der manuellen Verwaltung von Abhängigkeiten zwischen Softwareteilen wert? Ist es wie ein Gewinn von 2% oder eine Verdoppelung der Leistung?
Doug T.
1
@Doug Bei CPU-schwerer Software kann der Unterschied 10,20% betragen, bei typischer Desktop-Software beträgt der Unterschied Null. Wenn Sie versuchen möchten, Software aus dem Quellcode zu kompilieren, würde ich eine quellenbasierte Distribution empfehlen (zum Beispiel Gentoo). Es ist eine sehr schlechte Idee, Software von der Quelle (abgesehen von in / opt installierter Software von Drittanbietern) in einer Binärdistribution zu installieren.
Šimon Tóth
Ich denke, die Leistung ist es nicht wert, außerhalb Ihrer Paketmanager-Abhängigkeiten zu gehen. Es gibt jedoch quellenbasierte Paketverwaltungssysteme, die die Abhängigkeiten verfolgen und das Kompilieren aus dem Quellcode ermöglichen. Der oben aufgeführte Vorteil, den Sie damit nicht erhalten, ist nur die 'neueste Version' - der Paketmanager hat eine Version ausgewählt, die mit dem Rest der Distribution funktioniert.
Shawn J. Goff
5
Das einzige, was ich hinzufügen möchte, ist: Erfahren Sie viel mehr darüber, was unter der Haube vor sich geht. Das kann sich lohnen.
Mattdm
7

Ich habe genau das vor kurzem getan.

Ich habe openssl-1.0.something from source auf einem Slackware 11.0 Linux-System kompiliert. Ich wollte das Login-by-Passwort-Ding patchen, um es bei einem fehlgeschlagenen Login für 7 Sekunden anzuhalten, um diese nervigen chinesischen SSH-Passwort-Vermutungen zu tarpieren.

Ich habe Apache httpd 2.2.17 auf demselben Slackware 11.0-System kompiliert, weil es mit Apache 2.0 geliefert wurde, und ich wollte eine 2.2.x httpd.conf von einem anderen System verwenden.

Wenn ich es mir überlege, habe ich auch Alpine 2.0 (E-Mail-Client, Pine Follow-On) für dasselbe System kompiliert. Warum Slackware 11.0? Es läuft auf einem Computer aus dem Jahr 2003 mit Intel "Brookdale" -Grafiken, und spätere Slackware unterstützt die schlecht dokumentierten Intel-Grafiken einfach nicht.

Auf einem anderen Computer habe ich die Unterstützung für drahtlose TI ACX111-Chips von Github übernommen und einen neuen Treiber kompiliert, mit dem ich eine drahtlose Karte für 9 US-Dollar verwenden kann.

Ich kompiliere auch gewohnheitsmäßig Linux-Kernel neu, um sie spezifisch für den Computer zu machen, auf dem sie ausgeführt werden.

In meinem Fall gibt es also verschiedene Gründe für Anpassung, Hardware-Unterstützung und "nur weil".

Angesichts dessen, was wir über Epidemiologie in einer einheitlichen Population wissen (http://www.usenix.org/publications/login/2005-12/openpdfs/geer.pdf), warum kompiliert nicht jeder auf seinen eigenen Systemen aus Quellen, mit was auch immer Optionen zur Kompilierungszeit, die sie wählen? Dies würde zu einer weitaus viren- und wurmresistenteren Population führen.

Bruce Ediger
quelle
Es gibt einfachere Möglichkeiten, diese ssh-hämmernden Schurken zu verlangsamen ... suchen Sie nach einer Geschwindigkeitsbegrenzung für iptables. Diese Lösung ist breiter anwendbar und führt außerdem nicht zum Erlöschen Ihrer Garantie.
vonbrand
Normalerweise wird für Linux keine Garantie gewährt. Slackware 11 ist zu diesem Zeitpunkt einige Jahre alt. Sie stellen die Frage mit FUD, speziell "Angst". "Oh nein! Tu das nicht! Du wirst deine Garantie ungültig machen!" Wie oft ist man auf eine Garantie angewiesen? Sehr wenig. Wir alle möchten, dass jemand anderes die Verantwortung (insbesondere moralisch, aber hauptsächlich finanziell) für all unsere Handlungen übernimmt, aber das kann einfach nicht ohne viele schlimme Konsequenzen für den Einzelnen und die Gesellschaft geschehen. Ich stehe zu meinem Rat und mehr: Stellen Sie die Quelle selbst zusammen und übernehmen Sie die gesamte Verantwortung. Beschuldige niemanden.
Bruce Ediger
Ach komm schon. Wenn es sich um RHEL oder SLES handelt (oder sogar um Ubuntu LTS mit einem Supportvertrag), ist die Garantie mit Sicherheit ungültig. Wenn es Debian oder Fedora war, wird ein Fehlerbericht für Ihr gehacktes OpenSSH einfach geschlossen, ohne zweimal hinzuschauen.
vonbrand