Was ist der Zweck von / usr / libexec?

28

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

/usr/libexecUmfasst interne Binärdateien, die nicht direkt von Benutzern oder Shell-Skripten ausgeführt werden sollen. Anwendungen können ein einzelnes Unterverzeichnis unter verwenden /usr/libexec.

Unter Mac OS X ist rootless-initein Programm, das launchdunmittelbar nach dem Booten aufgerufen wird , in gespeichert /usr/libexec. Warum sollte es in gespeichert werden, /usr/libexecwenn es sich um eine eigenständige ausführbare Datei handelt, die in /usr/binoder gespeichert werden kann /usr/sbin? initund andere Programme, die nicht direkt von Shell-Skripten aufgerufen werden, werden ebenfalls in Ordnern wie gespeichert [/usr]/{bin,sbin}.

Melab
quelle

Antworten:

14

Es ist eine Frage der Wartbarkeit - Plattform - Anbieter haben aus jahrelanger Erfahrung gelernt , dass , wenn Sie Binärdateien in setzen PATHstandardmäßig Menschen werden abhängig kommen auf sie da zu sein, und wird kommen zu den Argumenten abhängen und Optionen , die sie unterstützen.

Wenn dagegen etwas eingegeben wird, ist /usr/libexec/dies ein klarer Hinweis darauf, dass es als internes Implementierungsdetail betrachtet wird, und ein direkter Aufruf als Endbenutzer wird offiziell nicht unterstützt.

Sie können sich trotzdem dazu entschließen, direkt auf diese Binärdateien zuzugreifen. Der Plattformanbieter wird Sie jedoch nicht unterstützen oder unterstützen, wenn ein zukünftiges Upgrade die von Ihnen verwendeten privaten Schnittstellen zerstört.

ncoghlan
quelle
7

Ich denke, es ist neuer als init- die Idee ist, wie es heißt, ausführbare Dateien zu haben (also sollten sie nicht dabei sein /usr/lib), die man niemals von jemandem erwarten würde $PATH.

Aaron D. Marasco
quelle
3

OS X folgt nicht dem FHS-Standard. Es hat eine eigene Dateisystemhierarchie (ähnlich der FreeBSD-Dateisystemhierarchie). Auf der Manpage hiersteht-

libexec/ system daemons & system utilities (executed by other programs)

fd0
quelle
3

libexecist für System-Daemons und System-Dienstprogramme gedacht, die von anderen Programmen ausgeführt werden. Das heißt, die Binärdateien in diesem Verzeichnis mit Namespace sind für den Verbrauch anderer Programme gedacht und dürfen nicht direkt von Benutzern ausgeführt werden.

Der Exorzist
quelle