Deixe-me dar um exemplo do pacote Debian coreutils no Ubuntu 22.04. Se inspecionarmos a lista de arquivos instalados pelo coreutils:
$ cat /var/lib/dpkg/info/coreutils.list | less
Vemos que há alguns binários que são colocados em /bin
e alguns em /usr/bin
. No entanto, devido à /usr
fusão, o /bin
diretório é essencialmente um link simbólico para /usr/bin
. Qual é a lógica por trás do envio de alguns binários em /bin
e outros em /usr/bin
quando os diretórios serão usr merged
de qualquer maneira na instalação?
Os arquivos são enviados em
/bin
ou/usr/bin
principalmente por razões históricas; em parte, porque costumava ser possível inicializar sistemas sem/usr
e montá-lo mais tarde no processo de inicialização — então todos os arquivos necessários para inicializar um sistema o suficiente para montar/usr
tinham que estar no sistema de arquivos raiz. (Isso é simplificado, mas os detalhes não são importantes aqui.)Os sistemas mesclados
/usr
são uma mudança recente no Debian; o lançamento 12 foi o primeiro lançamento a suportar somente mesclados/usr
(acho que a primeira distribuição Linux mesclada foi o Fedora 17 em 2012). Devido à maneira como as atualizações de lançamento são tratadas no Debian, foi decidido que os pacotes não deveriam mover arquivos historicamente enviados em/bin
etc. para seus novos locais em/usr
, pelo menos para o Debian 12. O Ubuntu 22.04 envia pacotes com base em versões do desenvolvimento que levaram ao Debian 12, então essa moratória se aplica a ele também (transitivamente).A situação está mudando no Debian 13; por exemplo,
coreutils
no Debian 13 todos os seus arquivos serão enviados em/usr
. Essa mudança aconteceu na versão 9.4-3.1 do pacote, então o Ubuntu 24.10 e posteriores enviamcoreutils
arquivos/usr
somente em .Veja também a página wiki do Debian sobre a
/usr
fusão e o raciocínio dado para isso no systemd .