Meu sistema Ubuntu 13.04 de 64 bits possui os seguintes diretórios /
:
lib
lib32
lib64
libx32
libexec
No /usr
diretório existe:
lib
lib32
libx32
libexec
Parecia algo que poderia ser facilmente respondido com uma pesquisa, mas não encontrei nada online, exceto que esses diretórios armazenam bibliotecas compartilhadas (exceto libexec). Mas quais bibliotecas compartilhadas estão em quais pastas (além de 32 bits na lib32 e 64 bits na lib64)? Alguém poderia explicar a diferença entre todos esses diretórios?
directory-structure
libraries
gsingh2011
fonte
fonte
Respostas:
Ah, sim, essa é uma parte muito confusa se você lida com o Unixes por qualquer período de tempo. Existe um padrão que a maioria dos Unixes "tenta" seguir, chamado FHS - Filesystem Hierarchy Standard .
Dado que eu uso principalmente as distribuições baseadas no Red Hat, estou mais familiarizado com a sua opinião sobre as distribuições FHS para Fedora, CentOS e RHEL Linux. Mas eu também usei distribuições baseadas em Debian e BSD e elas não são tão diferentes em termos de onde as coisas são mantidas, em termos de sistema de arquivos.
Agora para suas perguntas. Eu daria uma olhada no documento FHS , que governa livremente essas estruturas de diretório. Em geral:
Diretório -
/lib
Contém bibliotecas compartilhadas essenciais e módulos do kernel.
Objetivo: O diretório / lib contém as imagens da biblioteca compartilhada necessárias para inicializar o sistema e executar os comandos no sistema de arquivos raiz, ie. por binários em / bin e / sbin.
Nota1: Bibliotecas compartilhadas que são necessárias apenas para binários em / usr (como quaisquer binários do X Window) não devem estar em / lib. Somente as bibliotecas compartilhadas necessárias para executar binários em / bin e / sbin podem estar aqui.
Nota2: Como o principal objetivo do / lib é conter bibliotecas para ferramentas implementadas nos diretórios / bin & / sbin, as bibliotecas no / lib podem ser de 32 ou 64 bits.
Por exemplo (sistema Fedora 14 de 64 bits)
Aqui está uma amostra dos arquivos do meu / lib
Diretório -
/lib<qual>
Bibliotecas compartilhadas essenciais de formato alternativo (opcional). Estes seriam os diretórios / lib32, / lib64, etc.
Objetivo: Pode haver uma ou mais variantes do diretório / lib em sistemas que suportam mais de um formato binário que requer bibliotecas separadas. Isso é comumente usado para suporte de 64 ou 32 bits em sistemas que suportam vários formatos binários, mas requerem bibliotecas com o mesmo nome.
Nota: Nesse caso, / lib32 e / lib64 podem ser os diretórios da biblioteca e / lib um link simbólico para um deles.
Diretório -
/usr/lib
Bibliotecas para programação e pacotes.
Objetivo: / usr / lib inclui arquivos de objetos, bibliotecas e binários internos que não devem ser executados diretamente por usuários ou scripts de shell.
Nota1: Vários arquivos estáticos e subdiretórios estáticos, específicos da aplicação, independentes da arquitetura devem ser colocados em / usr / share.
Os aplicativos podem usar um único subdiretório em / usr / lib. Se um aplicativo usar um subdiretório, todos os dados dependentes da arquitetura usados exclusivamente pelo aplicativo deverão ser colocados dentro desse subdiretório.
Nota2: Por exemplo, o subdiretório perl5 para módulos e bibliotecas do Perl 5.
Diretório -
/usr/lib<qual>
Bibliotecas de formato alternativo (opcional).
Finalidade:
/usr/lib<qual>
executa a mesma função que / usr / lib para um formato binário alternativo, a não ser que as ligações simbólicas/usr/lib<qual>/sendmail
e/usr/lib<qual>/X11
não são necessários.Nota: Nos casos em que / usr / lib e
/usr/lib<qual>
os mesmos (um é um link simbólico para o outro), esses arquivos e os subdiretórios por aplicativo existirão.TLDR;
Em geral:
Se houver bibliotecas exigidas por um executável nos diretórios / bin ou / sbin, essas bibliotecas deverão estar nos diretórios / lib *.
Se houver bibliotecas para usar programas e pacotes, elas serão acessadas em / usr / lib / *. Se houver executáveis necessários para uma biblioteca específica, mas esses executáveis não devem ser chamados pelos usuários diretamente ou pela raiz, eles serão acessados em / usr / libexec.
fonte
file
utilitário com as bibliotecas desses diretórios para ver a diferença.