Was ist der Zweck von /usr/libexec?

Was ist der Zweck von /usr/libexec?

Ausführbare Dateien werden /usr/libexecauf Unix-ähnlichen Systemen gespeichert.Das sagt die FHS(Abschnitt 4.7. /usr/libexec : Binaries run by other programs (optional)":

/usr/libexecenthält interne Binärdateien, die nicht für die direkte Ausführung durch Benutzer oder Shell-Skripte vorgesehen sind. Anwendungen können ein einzelnes Unterverzeichnis unter verwenden /usr/libexec.

Unter macOS wird rootless-initein Programm, das launchdunmittelbar nach dem Booten aufgerufen wird, in gespeichert /usr/libexec.

Warum sollte es in gespeichert werden, wenn es eine eigenständige ausführbare Datei ist, die in oder /usr/libexecgespeichert werden könnte ? Und andere Programme, die nicht direkt von Shell-Skripten aufgerufen werden, werden auch in Ordnern wie gespeichert ./usr/bin/usr/sbininit[/usr]/{bin,sbin}

Antwort1

Es ist eine Frage der Unterstützung - Plattformanbieter haben aus jahrelanger Erfahrung gelernt, dass, wenn man PATHstandardmäßig Binärdateien einfügt, die LeuteWillebin darauf angewiesen, dass sie da sind, undWillehängen von den spezifischen Argumenten und Optionen ab, die sie unterstützen.

Wenn dagegen etwas eingefügt wird, /usr/libexec/ist dies ein klares Anzeichen dafür, dass es sich um ein internes Implementierungsdetail handelt und der direkte Aufruf als Endbenutzer nicht offiziell unterstützt wird.

Sie können sich dennoch dazu entschließen, direkt auf diese Binärdateien zuzugreifen. Sie erhalten dann jedoch weder Unterstützung noch Verständnis vom Plattformanbieter, wenn ein zukünftiges Upgrade die von Ihnen verwendeten privaten Schnittstellen beschädigt.

Antwort2

OS X folgt nicht demFHS-Norm. Es hat seine eigene Dateisystemhierarchie (ähnlich der Dateisystemhierarchie von FreeBSD). Die ManpagehierZustände:

libexec/- Systemdaemons und Systemdienstprogramme (von anderen Programmen ausgeführt)

Antwort3

libexecist für System-Daemons und System-Dienstprogramme gedacht, die von anderen Programmen ausgeführt werden. Das heißt, die in diesem Namespace-Verzeichnis abgelegten Binärdateien sind für die Nutzung durch andere Programme gedacht und nicht für die direkte Ausführung durch Benutzer.

Antwort4

Ich glaube, es ist neuer als init– die Idee ist, wie gesagt, ausführbare Dateien zu haben (sie sollten also nicht in sein /usr/lib), von denen man nie erwarten würde, dass sie in irgendjemandes vorhanden sind $PATH.

verwandte Informationen