update-alternatives
pode, de fato, ser usado para gerenciar links simbólicos em /bin
, ou mesmo em qualquer outro lugar; esse é o objetivo . Requer pacotes cooperativos ou configuração manual - as várias alternativas precisam ser registradas.
dpkg-reconfigure
não é específico, ele só executa o script de mantenedor de pós-instalação de um pacote. Portanto, seu comportamento depende totalmente do pacote específico usado para configurar. No caso de bash
e dash
, os scripts do mantenedor manipulam o link simbólico /bin/sh
, portanto, neste caso específico, dpkg-reconfigure
é usado para gerenciar um symlink.
O motivo pelo qual bash
e dash
não usam update-alternatives
para gerenciar /bin/sh
é simplesmente que quando a possibilidade foi ativada, update-alternatives
não foi considerado robusto o suficiente para ser usado para tal um arquivo confidencial como /bin/sh
. Se qualquer coisa alguma vez der errado e /bin/sh
for removido ou apontar para um arquivo inexistente, o sistema será inutilizado e será difícil de consertar; Ele nem sequer inicializa corretamente ... Portanto, bash
e dash
tomam muito cuidado para garantir que /bin/sh
seja sempre utilizável. Isso envolve um processamento cuidadoso em seu “script” de pré-instalação (que é na verdade um binário, para evitar loops de pré-dependência), um truque envolvendo dpkg-divert
e algum tratamento de última hora em seus scripts de pós-instalação. Você encontrará detalhes do design de tudo isso no bug # 34717 (dezenove anos atrás).
Para saber quais binários em um sistema são manipulados usando alternativas e quais são manipulados usando desvios (dos scripts do mantenedor), você pode usar as ferramentas correspondentes, em particular dpkg-divert --list
, que listará todos os desvios. Para update-alternatives --list
, você precisa conhecer o grupo alternativo em que tem interesse, mas as alternativas são fáceis de detectar porque são todos links simbólicos para um arquivo em /etc/alternatives
.