No MacOS, um aplicativo é uma pasta, seja /Applications
se instalado em todo o sistema ou ~/Applications
se instalado apenas para um usuário específico, que contém um MacOS
diretório que contém o executável, um Resources
diretório que contém quaisquer ativos ou recursos extras que um aplicativo precisa para ser executado. Há também outros arquivos como Info.plist
ou Pkginfo
.
Minha pergunta é: qual é a estrutura do Ubuntu para aplicativos? De acordo com isso, o executável é armazenado em /usr/bin
ou algo assim. Mas isso parece ser apenas o executável. Onde os aplicativos armazenam os ativos, como o ícone do dock, texturas de jogos, etc.? Ou quaisquer outros dados que fazem parte do aplicativo, mas não do executável? No Mac, os aplicativos parecem ser pacotes autocontidos, mas não no Linux. Como todos os componentes do aplicativo são estruturados no sistema de arquivos?
PS: Eu esperava que isso fosse uma megaduplicata, mas por algum motivo todas as minhas pesquisas não deram em nada, exceto pela pergunta vinculada.
A estrutura de arquivos de um aplicativo Linux instalado pode ser bastante complexa. Arquivos do aplicativo (aplicativos, bibliotecas, dados, configuração) não estão contidos em um diretório específico, mas espalhados pela estrutura de arquivos do sistema de acordo com convenções, escritas no Filesystem Hierarchy Standard .
Aplicativos em contêiner (Snap, flatpak, Appimage) terão todos os seus executáveis, bibliotecas, dados e configurações em diretórios específicos ou em arquivos de imagem única. Quando um pacote em contêiner é executado, ele é exposto a esse sistema de arquivos como se fosse o sistema de arquivos raiz real do seu computador.
Cada aplicativo é iniciado com um executável , usado para iniciar o programa. Normalmente, o executável é instalado em um diretório que está listado na variável de ambiente $PATH. Você pode ver o conteúdo da variável de ambiente PATH com o comando
printenv PATH
.apt
), os executáveis do sistema vão em/usr/sbin
, outros executáveis vão em/usr/bin
./usr/local/bin
ousbin
.Binários executáveis e bibliotecas privadas de um programa de terceiros são comumente colocados em
/opt
, totalmente distintos dos componentes principais do sistema operacional. Normalmente, os executáveis de sobopt/
são vinculados em/usr/local/bin
, ou um script wrapper é colocado lá para que esses programas "opcionais" também possam ser iniciados convenientemente digitando um nome no prompt.Bibliotecas compartilhadas, ou seja, bibliotecas comumente usadas por diferentes aplicativos, normalmente são armazenadas em
/usr/lib
, aquelas de programas compilados em/usr/local/lib
.Os arquivos de configuração geralmente ficam em
/etc
.Os dados do programa (logs, bancos de dados, cache, …) usados durante a execução estão sob
/var
.O
whereis
comando pode dar uma ideia de onde os arquivos de um aplicativo estão, por exemploPara descobrir quais arquivos foram instalados onde por um pacote específico, você pode usar