Mon système Ubuntu 13.04 64 bits contient les répertoires suivants /
:
lib
lib32
lib64
libx32
libexec
Dans le /usr
répertoire il y a:
lib
lib32
libx32
libexec
Cela semblait être quelque chose qui pourrait être facilement répondu par une recherche, mais je n'ai rien trouvé en ligne, à part que ces répertoires stockent des bibliothèques partagées (sauf libexec). Mais quelles bibliothèques partagées vont dans quels dossiers (autres que 32 bits dans lib32 et 64 bits dans lib64)? Quelqu'un pourrait-il expliquer la différence entre tous ces répertoires?
directory-structure
libraries
Gsingh2011
la source
la source
Réponses:
Ah oui, c’est une partie très déroutante si vous avez traité avec Unix pendant un certain temps. Il existe une norme que la plupart des Unix "essaient" de suivre et qui s'appelle FHS - FileSystem Hierarchy Standard .
Etant donné que j'utilise principalement les distributions basées sur Red Hat, je connais bien mieux leur conception de FHS. pour les distributions Linux Fedora, CentOS et RHEL. Mais j'ai aussi utilisé des distributions basées sur Debian et BSD, et elles ne diffèrent pas beaucoup en ce qui concerne l'emplacement des données, du point de vue du système de fichiers.
Maintenant à vos questions. Je regarderais le document FHS , qui gouverne vaguement ces structures de répertoires. En général:
Annuaire -
/lib
Contient les bibliothèques partagées essentielles et les modules du noyau.
Objectif: Le répertoire / lib contient les images de la bibliothèque partagée nécessaires au démarrage du système et à l'exécution des commandes dans le système de fichiers racine, c'est-à-dire. par les binaires dans / bin et / sbin.
Remarque1: Les bibliothèques partagées qui ne sont nécessaires que pour les fichiers binaires de / usr (tels que tous les fichiers binaires X Window) ne doivent pas se trouver dans / lib. Seules les bibliothèques partagées requises pour exécuter les fichiers binaires dans / bin et / sbin peuvent être ici.
Note2: Etant donné que le but principal de / lib est de contenir des bibliothèques pour les outils déployés dans les répertoires / bin & / sbin, les bibliothèques dans / lib peuvent être 32 bits ou 64 bits.
Par exemple (système Fedora 14 64 bits)
Voici un échantillon des fichiers de mon / lib
Annuaire -
/lib<qual>
Bibliothèques partagées essentielles au format alternatif (facultatif). Ce sont les répertoires / lib32, / lib64, etc.
Objectif: Il peut exister une ou plusieurs variantes du répertoire / lib sur les systèmes prenant en charge plusieurs formats binaires nécessitant des bibliothèques distinctes. Ceci est couramment utilisé pour la prise en charge 64 bits ou 32 bits sur des systèmes prenant en charge plusieurs formats binaires, mais nécessitant des bibliothèques du même nom.
Remarque: Dans ce cas, / lib32 et / lib64 peuvent être les répertoires de la bibliothèque et / lib un lien symbolique vers l'un d'entre eux.
Annuaire -
/usr/lib
Bibliothèques de programmation et de packages.
Objectif: / usr / lib inclut les fichiers objet, les bibliothèques et les fichiers binaires internes qui ne sont pas destinés à être exécutés directement par les utilisateurs ou les scripts shell.
Remarque1: Divers fichiers statiques et sous-répertoires spécifiques à une application, indépendants de l'architecture, doivent être placés dans / usr / share.
Les applications peuvent utiliser un seul sous-répertoire sous / usr / lib. Si une application utilise un sous-répertoire, toutes les données dépendantes de l'architecture utilisées exclusivement par l'application doivent être placées dans ce sous-répertoire.
Remarque2: Par exemple, le sous-répertoire perl5 pour les modules et les bibliothèques Perl 5.
Annuaire -
/usr/lib<qual>
Bibliothèques de formats alternatifs (facultatif).
But:
/usr/lib<qual>
effectue le même rôle que / usr / lib pour un format binaire autre, sauf que les liens symboliques/usr/lib<qual>/sendmail
et/usr/lib<qual>/X11
ne sont pas nécessaires.Remarque: Dans le cas où / usr / lib et
/usr/lib<qual>
sont identiques (l'un est un lien symbolique vers l'autre), ces fichiers et les sous-répertoires par application existeront.TLDR;
En général:
S'il existe des bibliothèques requises par un exécutable dans les répertoires / bin ou / sbin, ces bibliothèques doivent figurer dans les répertoires / lib *.
S'il existe des bibliothèques pour utiliser des programmes et des packages, elles se trouvent dans / usr / lib / *. S'il existe des exécutables requis par une bibliothèque particulière, mais que ces derniers ne sont pas supposés être appelés par les utilisateurs directement ou par root, ils se trouvent dans / usr / libexec.
la source
file
utilitaire avec les bibliothèques de ces répertoires pour voir la différence.