Organização do sistema de arquivos do Linux

1

Como um usuário Windows de longa data em recuperação, tenho tentado esclarecer minha compreensão do local "correto" para colocar as coisas no Linux (ou UNIX também, eu acho, mas raramente trabalho em um sistema operacional não-UNIX X e Mac OS X dificilmente é "adequado"). Eu prefiro manter a questão bastante independente da distribuição, mas se a resposta correta depende de um sabor particular, então está tudo bem. Meu objetivo é fazer com que os outros trabalhem dentro de um sistema que eu configurei e seja capaz de seguir logicamente a organização.

1. Quando se trata do lançamento de um sysadmin (em oposição a um papel de usuário), onde as pessoas geralmente concordam que é melhor instalar binários do servidor como servidores web, banco de dados etc.? Pelo que eu recolhi ao longo do tempo, parece que ambos estão corretos:

  • /opt/<package>
  • /usr/local/bin/<package>

O Padrão de hierarquia do sistema de arquivos não parece diferenciar claramente. Existem vantagens desvantagens de um sobre o outro, ou isso é apenas preferência?

2. Eu também já vi esse tipo de coisa:

  • /usr/local/bin/foo-bar-3.2.1-baz
  • /usr/local/bar -> /usr/local/bin/foo-bar-3.2.1-baz

Onde o pacote específico à versão é o local real e, em seguida, um link simbólico é adicionado para facilitar a digitação / atualização. Isso é bem universal?

3. E então a próxima questão lógica é para onde vão os dados de seus binários? Isso parece ser comum:

  • /var/lib/<package>

Existe uma localização melhor?

    
por McKAMEY 15.12.2011 / 20:39

3 respostas

4

Neste dia e idade, não acredito que exista uma resposta definitiva, dura e rápida, sobre "onde é que o ficheiro X vai?" Existem convenções, com certeza, e muitas delas são documentadas por TLDP . No entanto, muitas distribuições terão suas próprias convenções sobre onde as coisas vão.

Em geral, eu vou com isso:

/opt : Grandes aplicativos irregulares que vivem em seus próprios diretórios, binários, bibliotecas, configurações e tudo. Eu vejo muitos aplicativos java morando lá, mas esse é provavelmente o ambiente em que trabalho

/usr/local : Qualquer script / programa que eu escrevi e não empacotado em um deb / rpm. Deve ser somente leitura para o usuário, para que o usuário não possa (facilmente) ir e sobrescrevê-lo

/var : como o nome sugere, os dados variáveis são aqui. Armazenamentos de dados persistentes. Muitos aplicativos usam /var/lib para dados do aplicativo e coisas como /var/run para arquivos PID e soquetes. Isso irá variar dependendo da distribuição.

    
por 15.12.2011 / 21:28
2

Eu também achei isso confuso quando me mudei para o Linux e com o tempo, isso é o que eu aprendi.

Regra # 1: Sempre que possível, sempre instale usando o gerenciador de pacotes da distro (yum para a maioria das distribuições baseadas em RPM e apt-get para a maioria das distribuições baseadas em Debian. O Slackware e o Gentoo têm seus próprios). Quando você usa o gerenciador de pacotes, seus pacotes serão instalados onde eles pertencem e onde outros aplicativos esperam encontrá-los. Mover binários de seu destino de gerenciador de pacotes causará problemas mais tarde, então deixe-os onde estão.

Regras # 2: Se você não consegue encontrar um pacote que você precisa no seu gerenciador de pacotes, você pode ter que compilar e instalar a partir do código-fonte. Esta é a situação em que as coisas podem ficar confusas. O aplicativo que você está compilando normalmente vem com um arquivo make que informa onde instalar os arquivos quando o make install for chamado. Em geral, é quando você encontrará arquivos instalados em / opt ou / usr / local. Esses são locais comuns para aplicativos instalados a partir da origem. Mais especificamente, parece-me que normalmente encontro binários de código fechado em / opt e binários de código aberto acabam em / usr / local

Em relação ao symlinking que você está vendo; você está certo. Na maioria dos casos, quando você vê uma situação de link simbólico como você declarou, isso foi feito pelo processo de instalação para facilitar as atualizações / compatibilidade com versões anteriores / ou algum outro problema conhecido.

Com relação aos dados - se você estiver falando sobre arquivos conf, você geralmente os encontrará no diretório / etc. Os vários diretórios lib fornecem bibliotecas que são usadas por outros aplicativos no sistema.

O projeto LSB (Linux Standards Base) tem tentado padronizar coisas como esta e locais de script de inicialização por anos. Ele fez alguns progressos, mas não tanto quanto eles gostariam principalmente porque as distribuições mais antigas estão entrincheiradas em como eles fazem negócios e não vêem o valor em mudar para algum outro método.

Espero que ajude.

    
por 15.12.2011 / 21:28
0

Você pode querer olhar para o Filesystem Hierarchy Standard (v2.3) no link .

Isso é referido pela Especificação Base do Linux Standards Core (v3.1) em Chapt. 16.

    
por 15.12.2011 / 22:01