Links em / usr / bin ou / usr / local / bin: difícil ou simbólico?

0

Para os links localizados em /usr/bin e em /usr/local/bin , eles são melhores para serem duros ou simbólicos? Eles parecem ser todos simbólicos? Por quê?

    
por Tim 23.03.2015 / 16:58

1 resposta

4

Quando os links são colocados em /usr/bin ou /usr/local/bin , geralmente isso ocorre porque o binário real está em outro lugar. Por que está morando em outro lugar? Geralmente porque é parte de um grupo de arquivos, muitas vezes em seu próprio subdiretório, do qual depende para ser executado. Por que todos esses arquivos não podem ser despejados em /usr/bin ou /usr/local/bin ? Como esses locais são apenas para binários, os binários ficam no nível superior desses diretórios e nenhum subdiretório é permitido.

Então, por que não usamos um link físico? Porque um link rígido para um arquivo é considerado como de status igual ao arquivo original (ele compartilha o mesmo inode) e o arquivo não será excluído enquanto houver um link físico para ele. Em contraste, um link simbólico é simplesmente um ponteiro para "a coisa real". Na prática, colocar um link físico em um arquivo binário que está morando em outro lugar não faria muito sentido, porque se esses outros arquivos naquele outro subdiretório de local / localidade fossem removidos, o arquivo não poderia funcionar sozinho.

Um exemplo disso são os vários utilitários TeX, que vivem em /usr/bin . Se você olhar para eles, verá que muitos deles apontam para arquivos que estão realmente em /usr/share/texlive/texmf-dist/scripts/ . Você pode ver isso, por exemplo, fazendo ls -la | grep texmf .

Como mencionado, outra razão é que os hard links não funcionam nos sistemas de arquivos.

Outra situação na qual os links são usados para arquivos em /usr/bin ou /usr/local/bin é o sistema de alternativas do Debian. Nesse caso, um binário pode ser um link simbólico apontando para um link simbólico em /etc/alternatives , que então aponta para o binário real, muitas vezes novamente em si mesmo em /usr/bin .

Exemplo:

ls -la /usr/bin/awk 
lrwxrwxrwx 1 root root 21 Jul 31  2013 /usr/bin/awk -> /etc/alternatives/awk
ls -la /etc/alternatives/awk
lrwxrwxrwx 1 root root 13 Aug 11  2013 /etc/alternatives/awk -> /usr/bin/gawk

É bastante óbvio, neste caso, que um link simbólico é o mecanismo correto, porque ele está apontando para qualquer um dos vários binários possíveis.

    
por 23.03.2015 / 17:21