'update-alternatives' versus 'dpkg-reconfigure'

0

De Por que o shell padrão está no meu Ubuntu 14.04? :

On Debian derivatives, you can switch between Dash and Bash as the default /bin/sh by running dpkg-reconfigure dash as root.

É correto que update-alternatives e dpkg-reconfigure possam ser usados para alterar o executável ao qual um link simbólico em /bin/ está vinculado?

Se sim, para esse propósito, quais são as diferenças entre update-alternatives e dpkg-reconfigure ?

Obrigado.

    
por Tim 15.04.2018 / 04:00

2 respostas

3

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 .

    
por 15.04.2018 / 19:27
1

O comando update-alternatives requer que todas as alternativas se registrem nele, para que ele possa gerenciar qual alternativa irá obter o link simbólico em / bin apontando para.

O sistema de alternativas é bastante flexível, pois pode gerenciar vários links simbólicos de uma só vez e pode manipular múltiplas implementações alternativas, possivelmente dando-lhes pesos que ajudarão a decidir qual deles será selecionado quando mais de dois estiverem instalados e também escolherão graciosamente aquele que tem o próximo peso mais alto, se esse for desinstalado.

O esquema usado por dpkg-reconfigure dash usa o sistema de redirecionamento do dpkg, onde um pacote (bash) envia /bin/sh , mas outros pacotes podem "desviá-lo" para substituir suas implementações.

O sistema de redirecionamento do dpkg não está limitado a links simbólicos (também pode desviar arquivos) e não requer que o pacote principal envie o link simbólico original (ou arquivo) para ser modificado para adotar um sistema como update-alternatives .

O sistema de redirecionamento não é tão flexível quanto o sistema de alternativas, já que ele geralmente depende de pacotes para configurar para se colocar no topo do desvio e, em muitos casos, não faz nenhuma configuração (apenas instalando um novo pacote) Desvia automaticamente os arquivos de um pacote instalado anteriormente, sem configuração.) Essas limitações também dificultam o uso do sistema de redirecionamento do dpkg para implementar mais de duas alternativas.

    
por 15.04.2018 / 05:50