Bringt es Vorteile, ähnliche Programme in einem einzigen Pfadverzeichnis zu gruppieren?

Bringt es Vorteile, ähnliche Programme in einem einzigen Pfadverzeichnis zu gruppieren?

Ich richte Prometheus auf einem Webserver ein und habe festgestellt, dass jeder Exporter ein eigenes Programm ist, das zu einem Verzeichnis in $PATH hinzugefügt werden muss.

Meine Frage ist, ob es Vorteile bringt, hierfür ein spezielles Verzeichnis anzulegen (zum Beispiel „/usr/exporters/bin“, um ein Beispiel zu nennen), alle Exportprogramme dort abzulegen und diese Datei zu $PATH hinzuzufügen? Oder ist es besser, die Programme einfach in das Standardverzeichnis für Binärdateien zu verschieben?

Antwort1

Der einzige Vorteil besteht darin, dass weniger Verzeichnisse vorhanden sind $PATHund daher weniger Verzeichnisse durchsucht werden müssen, wenn Sie nach einer ausführbaren Datei suchen. Aber:

  • Dieses Ereignis (Durchsuchen aller Verzeichnisse in $PATH) kommt selten vor. $PATHEinträge (die ausführbaren Dateien) werden in einer Hash-Tabelle in gespeichert bash, die beim Start oder über aktualisiert wird . Sie müssen nicht jedes Mal rehashsuchen .$PATH

  • Dieses Ereignis ist nicht teuer. Alle benötigten Informationen (Datei existiert und Berechtigungen erlauben die Ausführung) können aus dem Verzeichniseintrag der Datei entnommen werden – es ist nicht nötig, auf jede einzelne Datei zuzugreifen. Lesen Sie einfach das Verzeichnis.

Die Gründe, die ausführbaren Dateien NICHT in ein gemeinsames anderes Verzeichnis zu verschieben, sind unter anderem:

  • Sie haben eine nicht standardmäßige Umgebung. Wenn Sie um Hilfe bitten, ist ein zusätzlicher Aufwand erforderlich, um dies zu erklären. Probleme, die speziell durch die nicht standardmäßige Umgebung verursacht werden, werden sehr schwer zu lösen sein.

  • Sie verfügen über eine nicht standardmäßige Umgebung. Wenn aktualisierte Versionen veröffentlicht werden, entspricht Ihre Umgebung nicht den Anforderungen des Updates.

  • Sie verfügen über eine nicht standardmäßige Umgebung. Sie müssen daran denken, die Aktualisierungen für die nicht standardmäßige Umgebung diese Woche, nächste Woche, die Woche danach usw. durchzuführen.

Das ist Monkey Motion ohne Nutzen.

Antwort2

Es ist durchaus üblich, Binärdateien in den Verzeichnissen mit den passenden Bibliotheken aufzubewahren. Der Anwendungsfall ist die Versionskontrolle. Nehmen wir an, Sie haben mehrere Python-Versionen (2.7, 2.7, 3...) installiert und benötigen sie alle, möchten aber einen Standard definieren.

Normalerweise werden hierfür die alternativesSuite und Softlinks zur Binärdatei von EG /usr/bin(mit Definitionen in /etc/alternatives) verwendet.

Ein großer Vorteil könnte auch die Verwendung der Reihenfolge von links nach rechts in sein $PATH. Wenn Sie beispielsweise Standardbefehle durch lokale Versionen oder Skripte überschreiben, die Vorprüfungen durchführen (etwa ein Skript, das vor shredDing-Dateien eine Warnung einfügt), würden diese in einem Verzeichnis abgelegt, das am Anfang von aufgeführt ist $PATH, sodass die lokale (Benutzer-)Version ausgeführt wird und die Standardversion nur über ihren vollständigen Pfad.

Mehr zu Ihrer Frage: Das Verschieben der Binärdateien ist keine gute Idee: Sie sind möglicherweise auf andere Dateien in ihrem Verzeichnis angewiesen. Erstellen Sie höchstens Softlinks. Oder verwenden Sie einfach den alternativesSatz von Tools – das hilft auch dabei, mehr Übersicht zu behalten.

Antwort3

Es kommt darauf an...

Wenn Sie Hunderte dieser Programme haben, dann vielleicht.

Andernfalls /usr/local/bin/legen Sie Ihre Programme in einem Benutzerverzeichnis an einem sinnvollen Ort ab, da sich in Ihrem $PATH befindet, und platzieren Sie entsprechende Softlinks für jedes Programm in /usr/local/bin/. Das ist nicht perfekt, vermeidet aber eine PATH-Verfälschung.

verwandte Informationen