Variáveis de ambiente padrão para caminhos específicos da distribuição

1

Parece-me que há muita confusão (ou pelo menos existe da minha parte) sobre como diferentes sistemas de arquivos são estruturados entre diferentes distribuições do Linux / Unix.

Seria lógico, então, que em vez de ter diferentes tipos de pacotes para cada sistema, seria mais útil ter variáveis de ambiente que apontassem para os diferentes diretórios nas estruturas de sistemas de arquivos individuais.

Por exemplo: Se eu quisesse saber a localização do diretório "arquivos de programas" em um sistema Windows, eu poderia usar a variável de ambiente %ProgramFiles% ou %ProgramFiles(x86)% . Existe algum recurso desse tipo em sistemas Linux ou Unix?

    
por apocalysque 01.01.2016 / 04:59

3 respostas

0

Se eu entendi corretamente, você quer dizer que os nomes e os caminhos de diferentes programas devem ser os mesmos em diferentes distribuições, como Ubuntu, debian e redhat / centos.

Eu tomaria o exemplo do servidor da web, o Apache. Algumas distribuições o instalam pelo nome apache2 e nomeiam seu arquivo de configuração como apache2.conf, enquanto outras o instalam como httpd e nomeiam o arquivo de configuração como httpd.conf, e os caminhos para esses arquivos também diferem entre as distribuições.

Um desses projetos que alcança uniformidade de gerenciamento de configuração em diferentes distribuições é o fantoche ( link ), o outro é o Chef, e muitos outros por aí.

Esses sistemas de gerenciamento de configurações ocultam as diferenças na hierarquia do sistema de arquivos ou nomes de caminhos ou nomes de pacotes diferentes do administrador do sistema.

    
por 01.01.2016 / 06:00
0

Minha formatação:

The Filesystem Hierarchy Standard (FHS) is a reference describing the conventions used for the layout of a UNIX system."

Como é apenas um conjunto de convenções, e o Linux não é criado por uma única empresa, é inevitável que vários desenvolvedores * nix se desviem do padrão com base em preocupações práticas, como código legado e preferências. Adicionar variáveis à mistura só complicaria ainda mais as coisas, em vez de simplificá-las, já que os criadores de distro ainda não seriam obrigados a ninguém, e já que "variáveis" se tornam um conceito muito confuso quando outras coisas além da shell entram em ação. p>     

por 01.01.2016 / 15:31
0

O Linux não tem um equivalente à variável %ProgramFiles% do Windows porque não precisa de um. Há um local padrão para programas instalados em seu próprio diretório: /opt . Bit maioria dos programas não estão instalados lá, porque eles vêm em pacotes, e seus arquivos estão localizados onde serão encontrados por outros programas. As razões pelas quais o Windows tem uma variável %ProgramFiles% são, na verdade, amplamente históricas:

  • O Windows possui letras de unidade. Mesmo se \Program Files fosse o local padrão, ainda haveria a pergunta se é c:\Program Files , D:\Program Files , etc. O Linux nunca teve esse problema porque links simbólicos permitem que um diretório apareça em qualquer lugar, independentemente do meio de armazenamento físico em que esteja. (Janelas modernas não precisam disso porque têm um recurso equivalente, mas a localização permanece modificável para compatibilidade com versões anteriores.)
  • O Windows permite que o administrador escolha o nome dos diretórios do sistema. Linux não faz isso; tudo bem, porque nunca funcionou, enquanto o Windows teve que acomodar os administradores que escolheram locais diferentes para compatibilidade com versões anteriores.
  • Todo programa do Windows vem com seu próprio instalador, portanto não há um mecanismo de gerenciamento de pacotes real, e a única maneira de rastrear quais arquivos pertencem a qual pacote é ter um pacote por diretório. Isso está começando a mudar, mas ainda não chegou lá. Em contraste, o Linux normalmente armazena arquivos onde eles serão encontrados e permite que o gerenciador de pacotes acompanhe quem eles pertencem.

O Linux possui variáveis de ambiente que especificam caminhos: PATH para comandos executáveis, LD_LIBRARY_PATH para bibliotecas compartilhadas, MANPATH para páginas manuais, etc. Eles são todos sobre onde encontrar arquivos, não onde colocar arquivos. Onde colocar arquivos não é algo que programas conhece, é algo que gerenciadores de pacotes conhecem. Os gerenciadores de pacotes têm seus arquivos de dados, eles não precisam de variáveis de ambiente para dizer onde estão as coisas.

A estrutura de diretórios nos sistemas Linux é padronizada no Padrão de hierarquia do sistema de arquivos . Não há necessidade de variáveis de ambiente para a maioria delas, seja porque o local é padrão ou porque não há necessidade de um único local.

O fato de que diferentes distribuições têm diferentes sistemas de pacotes não é devido a diferentes estruturas de diretórios. É um dos principais diferenciais entre distribuições.

    
por 02.01.2016 / 03:19