Pular para o conteúdo principal

Precisamos mudar a FHS!

Os usuários de Linux mais avançados devem estar acostumados com a organização de diretórios de seu sistema operacional, que difere em muito daquela adotada pelo sistema da Microsoft, podendo confundir quem está usando o sistema pela primeira vez.



A organização das pastas no Linux é governada pela especificação Filesystem Hierarchy Standard, que é seguida pela maioria das distribuições atualmente existentes, com poucas modificações. O padrão, cuja última revisão se deu em 2004 2015, remonta às origens do Unix original e, para muitos, é algo perfeito e imutável.


No entanto, atualmente, percebo que o padrão adotado pela FHS é demasiada e desnecessariamente complexo e ineficiente. Além de confundir usuários novatos, a FHS dificulta o trabalho de desenvolvedores e de mantenedores de distros, que precisam estar a par do papel de cada diretório no sistema de arquivo. Isso não seria um grande problema se, atualmente, alguns desses diretórios não fossem totalmente redundantes e desorganizados. Senão, vejamos alguns poucos exemplos:




  • Qual a real necessidade prática de termos uma pasta /bin e outra /sbin? Ambas armazenam programas utilizados nos estágios iniciais do boot, com a diferença de que a segunda tem utilitários que requerem privilégios de root. Essa divisão é realmente necessária?

  • É mesmo preciso termos uma pasta /media e outra /mnt, sendo que antigamente tínhamos apenas a /mnt?

  • A pasta de configurações do sistema, /etc, é totalmente desorganizada. Basta perceber que, se você quiser configurar os servidores DNS do seu sistema, deve editar o arquivo /etc/resolv.conf, mas se quiser configurar as placas de rede, o arquivo é /etc/network/interfaces. Ambos os dois arquivos estão relacionados a redes, mas em locais diferentes.

  • Isso sem falar na pasta do usuário. Se você acha que sua pasta pessoal é organizada, mande seu gerenciador de arquivos exibir os arquivos ocultos; você verá que sua pasta está cheia de arquivos de configuração, jogados lá sem critério algum: alguns ficam na própria pasta enquanto outros, dentro de sua própria subpasta.

  • A pasta /dev é outra que armazena os links para dispositivos sem critérios: partições de disco ficam ao lado de placas de som e de terminais virtuais.

  • Os programas estão espalhados por todo o sistema: /usr, /usr/local, /opt, sem falar nos já mencionados /bin e /sbin.


Embora provavelmente alguém vá aparecer aqui para justificar essa desorganização com razões históricas e teóricas, o fato é que nem todos estão contentes com a FHS:




Como seria a organização ideal?


É claro que mudar a organização das pastas não seria algo simples, pois além de exigir a cooperação da maioria dos grandes players do mercado, também necessitaria de mudanças profundas na forma como os programas são compilados. Indo para o campo dos devaneios, porém, para mim o sistema poderia ser organizado em apenas seis pastas, separadas por áreas, inspiradas na organização do GoboLinux:




  •  A pasta /Applications reuniria todos os programas disponíveis para o usuário final. Sua organização também seria simples: dentro dessa pasta, haveria uma pasta para cada programa, separado por sua versão. Por exemplo: /Applications/firefox-53.0 armazenaria os arquivos do navegador Firefox, versão 53. Uma versão mais nova (ou mais antiga) poderia ser instalada lado a lado ou em seu lugar, se a pasta fosse apagada primeiro. Links simbólicos poderiam ser criados para indicar versões padrão.

    • Além disso, a pasta de cada aplicativo teria sua própria estrutura de pastas e de arquivos necessária para rodá-lo. Logo, na pasta, também ficariam todas as bibliotecas e arquivos de configuração daquele programa, eliminando em grande parte os problemas com dependências.

    • Opcionalmente, poderiam-se criar subpastas para reunir suítes de aplicativos, por exemplo: /Applications/KDE poderia conter as pastas de todos os aplicativos do KDE, evitando que estas ficassem soltas na pasta principal.

    • Haveria uma pasta /Applications/Services, que teria as pastas de todos os daemons do sistema, como por exemplo /Applications/Services/MySQL.



  • A pasta /Data armazenaria dados e informações dos aplicativos e do sistema, correspondendo às pastas /var, /tmp e/srv;

  • A pasta /Storage armazenaria todos os pontos de montagem de discos, de partições e de dispositivos removíveis.

  • A pasta /System conteria tudo aquilo que é necessário para inicializar e executar o sistema. Desta forma, teríamos:



    • /System/Binaries teria todos os arquivos binários utilizados pelo sistema, independente de suas permissões, correspondendo a /bin e a /sbin.

    • /System/Boot conteria os arquivos necessários para inicializar o sistema;

    • /System/Devices armazenaria links para dispositivos, sendo correspondente à pasta /dev, porém os dispositivos seriam organizados em subpastas. Exemplo: /System/Devices/Storage/sda01.

    • /System/Libraries teria todas as bibliotecas de uso comum pelos programas;

    • /System/Modules armazenaria os módulos do kernel, contendo subpastas para cada versão de kernel instalada;

    • /System/Settings corresponderia ao /etc, com a diferença de que, aqui, estariam apenas arquivos relacionados à configuração do sistema, organizados em pastas de acordo com sua área: /System/Settings/Network teria todos os arquivos de configuração de redes.



  • Os usuários teriam suas pastas pessoais em /Users, com a única diferença de que, dentro dessas pastas, haveria uma pasta oculta /Users/usuario/.Settings, que armazenaria os arquivos de configuração pessoais dos aplicativos instalados, cada um dentro de uma pasta, mesmo que houvesse apenas um arquivo. Desta forma, se um aplicativo fosse desinstalado, bastaria apagar sua pasta correspondente na pasta de cada usuário para uma limpeza completa.

  • Adicionalmente a estas cinco pastas, poderia haver uma pasta /root para servir de pasta pessoal do usuário root.


E você, gostou da ideia? Que tal começarmos a tirarmos-na do papel?

Comentários

  1. A ideia é muito boa, poderia realmente ser uma proposta de alteração no FHS, apesar de que a adoção seria lenta, mas creio que, sustentável.
    OFF: o layout do site ficou muito bom, bela mudança.

    ResponderExcluir
  2. Interessante a proposta. No entanto, muito trabalho para uma mudança pouco significativa, penso.

    ResponderExcluir
  3. Allyson de Paula5 de maio de 2017 09:00

    O OSX está mais próximo desse layout, já tem a /Applications e também o /System - embora com uma herança FHS - Applications Users dev net srv
    Library Volumes etc opt tmp
    Network bin home private usr
    System cores sbin var

    ResponderExcluir
  4. Marcelo F. Duarte5 de maio de 2017 10:24

    Se for para o bem comum, não vejo problemas com as alterações, a forma como a FHS é no começo confunde um pouco, mais depois se acostuma, o que teriamos que pensar é que seria uma mudança grande pois programas de legado não funcionariam, e não sendo muito contratrario, é basicamente a mesma estrutura do Windows, ajudaria os novatos, mais não os usuários antigos.

    ResponderExcluir
  5. A proposta é interessante, iria facilitar muito a vida dos desenvolvedores e também dos usuários. A grande questão é que envolveria uma mudança brutal e que necessitaria da adesão de toda a comunidade Linux. Será que todos estariam engajados nesta mudança?

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

Como acessar configurações avançadas no Sagemcom F@st 2704N

NOVO TUTORIAL: GUIA DEFINITIVO DAS CONFIGURAÇÕES AVANÇADAS DO SAGEMCOM F@ST 2704N!
Atualização 23/01/2015: Alguns problemas apontados e descobertos nesse modem:
1. Alguns usuários relatam dificuldade em salvar alterações na configuração ADSL;
2. Não sei como acessar os logs do modem; mesmo habilitando, eles não aparecem;
3. Se você trocar o DNS do modem, ele voltará ao da Oi ao ser reiniciado;
4. Estou enfrentando alguns problemas sérios de lentidão. Não sei se isso é relacionado ao modem ou a algum dispositivo na minha rede interna.
-----
Os modens da marca Sagemcom estão se tornando muito populares no Brasil, não, quiçá, por sua qualidade, mas porque eles são os atuais queridinhos das operadoras: quando você assina um plano ADSL, geralmente a operadora envia um modem wireless para sua casa a fim de que você possa navegar sem precisar ter gastos extras com esse equipamento. É claro que os equipamentos fornecidos pelas operadoras são básicos, mas saciam as necessidades dos usuários comuns - …

O Guia Definitivo das configurações avançadas no Sagemcom F@st 2704N

Há alguns meses, eu contei minha experiência com o Sagemcom F@st 2704N e tenho recebido diversos comentários sobre suas configurações avançadas. Agora que minhas aulas na faculdade estão acabando, resolvi reservar um tempinho para explorar melhor esse modem que, diga-se de passagem, é muito bom.