Mein 64-Bit-Ubuntu-13.04-System hat die folgenden Verzeichnisse /
:
lib
lib32
lib64
libx32
libexec
Im /usr
Verzeichnis gibt es:
lib
lib32
libx32
libexec
Dies schien etwas zu sein, das leicht mit einer Suche beantwortet werden konnte, aber ich fand nichts online, außer dass diese Verzeichnisse gemeinsam genutzte Bibliotheken speichern (mit Ausnahme von libexec). Aber welche gemeinsam genutzten Bibliotheken befinden sich in welchen Ordnern (außer 32-Bit in lib32 und 64-Bit in lib64)? Könnte jemand den Unterschied zwischen all diesen Verzeichnissen erklären?
directory-structure
libraries
gsingh2011
quelle
quelle
Antworten:
Ah ja, das ist ein sehr verwirrender Teil, wenn Sie sich längere Zeit mit Unixen befasst haben. Es gibt einen Standard, den die meisten Unixe zu "befolgen" versuchen: FHS - Filesystem Hierarchy Standard .
Da ich hauptsächlich auf Red Hat basierende Distributionen verwende, bin ich mit deren Einstellungen zu FHS für Fedora-, CentOS- und RHEL-Linux-Distributionen bestens vertraut. Aber ich habe auch Debian- und BSD-basierte Distributionen verwendet und sie unterscheiden sich nicht allzu sehr darin, wo die Dinge aufbewahrt werden, was das Dateisystem betrifft.
Nun zu deinen Fragen. Ich würde einen Blick auf das FHS-Dokument werfen , das diese Verzeichnisstrukturen lose regelt. Im Allgemeinen:
Verzeichnis -
/lib
Enthält wichtige gemeinsam genutzte Bibliotheken und Kernelmodule.
Zweck: Das Verzeichnis / lib enthält die freigegebenen Bibliotheksimages, die zum Starten des Systems und Ausführen der Befehle im Root-Dateisystem erforderlich sind, d. H. durch Binärdateien in / bin und / sbin.
Hinweis 1: Freigegebene Bibliotheken, die nur für Binärdateien in / usr erforderlich sind (z. B. alle X Window-Binärdateien), dürfen sich nicht in / lib befinden. Hier befinden sich möglicherweise nur die gemeinsam genutzten Bibliotheken, die zum Ausführen von Binärdateien in / bin und / sbin erforderlich sind.
Hinweis 2: Angesichts des primären Zwecks von / lib, Bibliotheken für Tools zu enthalten, die in den Verzeichnissen / bin & / sbin bereitgestellt werden, können die Bibliotheken in / lib entweder 32-Bit- oder 64-Bit-Bibliotheken sein.
Zum Beispiel (Fedora 14 64-Bit-System)
Hier ist eine Auswahl der Dateien aus my / lib
Verzeichnis -
/lib<qual>
Wichtige gemeinsam genutzte Bibliotheken mit alternativem Format (optional). Dies wären die Verzeichnisse / lib32, / lib64 usw.
Zweck: Auf Systemen, die mehr als ein Binärformat unterstützen, das separate Bibliotheken erfordert, gibt es möglicherweise eine oder mehrere Varianten des Verzeichnisses / lib. Dies wird normalerweise für die 64-Bit- oder 32-Bit-Unterstützung auf Systemen verwendet, die mehrere Binärformate unterstützen, jedoch Bibliotheken mit demselben Namen erfordern.
Hinweis: In diesem Fall sind / lib32 und / lib64 möglicherweise die Bibliotheksverzeichnisse und / lib ein Symlink zu einem dieser Verzeichnisse.
Verzeichnis -
/usr/lib
Bibliotheken für Programmierung und Pakete.
Zweck: / usr / lib enthält Objektdateien, Bibliotheken und interne Binärdateien, die nicht direkt von Benutzern oder Shell-Skripten ausgeführt werden sollen.
Hinweis 1: Verschiedene architekturunabhängige anwendungsspezifische statische Dateien und Unterverzeichnisse müssen in / usr / share abgelegt werden.
Anwendungen können ein einzelnes Unterverzeichnis unter / usr / lib verwenden. Wenn eine Anwendung ein Unterverzeichnis verwendet, müssen alle architekturabhängigen Daten, die ausschließlich von der Anwendung verwendet werden, in diesem Unterverzeichnis abgelegt werden.
Hinweis 2: Zum Beispiel das Unterverzeichnis perl5 für Perl 5-Module und -Bibliotheken.
Verzeichnis -
/usr/lib<qual>
Alternative Formatbibliotheken (optional).
Zweck:
/usr/lib<qual>
Führt die gleiche Rolle wie / usr / lib für ein alternatives Binärformat aus, außer dass die symbolischen Verknüpfungen/usr/lib<qual>/sendmail
und/usr/lib<qual>/X11
nicht erforderlich sind.Hinweis: In dem Fall, in dem / usr / lib und
/usr/lib<qual>
identisch sind (einer ist ein symbolischer Link zum anderen), existieren diese Dateien und die anwendungsspezifischen Unterverzeichnisse.TLDR;
Im Allgemeinen:
Wenn sich Bibliotheken in den Verzeichnissen / bin oder / sbin befinden, die von einer ausführbaren Datei benötigt werden, sollten sich diese Bibliotheken in den Verzeichnissen / lib * befinden.
Wenn es Bibliotheken für die Verwendung von Programmen und Paketen gibt, werden diese in / usr / lib / * abgelegt. Wenn es ausführbare Dateien gibt, die von einer bestimmten Bibliothek benötigt werden, von den Benutzern jedoch nicht direkt oder von root aufgerufen werden sollen, werden sie in / usr / libexec abgelegt.
quelle
file
Dienstprogramm mit den Bibliotheken in diesen Verzeichnissen verwenden, um den Unterschied zu erkennen.