Por que o apt upgrade está mudando meu x-www-browser para o google-chrome-stable?

2

Pela segunda vez, acabei de executar apt upgrade e isso aconteceu:

[...]
Setting up google-chrome-stable (48.0.2564.116-1) ...
update-alternatives: using /usr/bin/google-chrome-stable to provide /usr/bin/x-www-browser (x-www-browser) in auto mode
[...]

Eu estou puxando o cromo com deb http://dl.google.com/linux/chrome/deb/ stable main . Meu entendimento do apt é um pouco instável, mas geralmente esse não é o tipo de ação que deve acontecer apenas quando você instala um pacote pela primeira vez, ou quando usa dpkg reconfigure ? É extremamente irritante e parece insatisfatório que eu tenha que redefinir meu navegador preferido toda vez que eu apt upgrade .

Após a atualização, isso é o que o update-alternatives está me mostrando:

$ update-alternatives --config x-www-browser
There are 3 choices for the alternative x-www-browser (providing /usr/bin/x-www-browser).

  Selection    Path                           Priority   Status
------------------------------------------------------------
* 0            /usr/bin/google-chrome-stable   200       auto mode
  1            /usr/bin/chromium               40        manual mode
  2            /usr/bin/google-chrome-stable   200       manual mode
  3            /usr/bin/iceweasel              70        manual mode

Press enter to keep the current choice[*], or type selection number: 

Acho esta tabela bastante confusa, mas graças a esta questão acredito que Entenda que a primeira entrada ( 0 ) é usada apenas para selecionar o modo "auto", e o binário listado indica qual opção será usada. A questão é que tenho 99% de certeza de que usei update-alternatives para voltar ao meu navegador preferido (iceweasel) após a última atualização, por isso deveria estar no "modo manual". x-www-browser certamente estava abrindo o iceweasel antes dessa atualização.

A saída de apt upgrade indica que eu estava de algum modo errado e isso já estava no modo automático, mesmo que estivesse abrindo o iceweasel? Ou isso é o resultado de más práticas por parte dos mantenedores do chrome, e está sendo redefinido para o modo automático em cada atualização?

    
por ghostly_s 28.02.2016 / 23:17

2 respostas

2

O postinst do pacote do Chrome não é nada incomum. Apenas chama update-alternatives --install . Isso altera o link em /etc/alternatives apenas se a alternativa estiver atualmente no modo automático e a versão recém-instalada tiver uma prioridade mais alta que a configuração atual.

update-alternatives não sabe ou se importa se o pacote foi instalado ou atualizado recentemente. O script postinst o chama em todos os casos. Esse é o comportamento desejado: uma atualização de um pacote pode alterar a prioridade de algumas de suas alternativas.

Se a alternativa está mudando, a única explicação é que ela já estava no modo automático antes. Ele pode ter retornado ao modo automático se você removeu temporariamente o pacote que inclui a configuração manual atual, ou seja, se você removeu temporariamente iceweasel . Por outro lado, a atualização de iceweasel não afeta a configuração manual, porque o script prerm de iceweasel remove corretamente a alternativa se estiver sendo desinstalada ou desconfigurada e não se estiver sendo atualizada.¹

¹ O inverso não é verdadeiro: o prerm de google-chrome-stable tem um bug, ele remove a alternativa incondicionalmente, de modo que, se você fizer upgrade do pacote e tiver a alternativa configurada manualmente como /usr/bin/google-chrome-stable , retornará ao modo automático. Mais uma vez, esse bug é acionado apenas se a alternativa tiver sido definida manualmente para o Google Chrome. Isso não afeta o que acontece se a alternativa for definida manualmente para outra coisa.

    
por 28.02.2016 / 23:32
1

O script postinstall que controla isso foi mencionado na resposta de Gilles; Fiz algumas pesquisas e encontrei o script postinst do debian chrome aqui. A seção que controla esse comportamento não mudou desde que foi escrita em 2013, portanto, uma mudança na prioridade é descartada.

Eu fiz algumas experiências com as linhas update-alternatives --install do script e determinei que a mensagem que vi só seria gerada se o modo fosse anteriormente "auto". Eu também descobri outro comportamento não óbvio. Se uma alternativa estiver em "modo manual" e o link simbólico em /etc/alternatives/x-www-browser for apontado para outro binário pelo usuário em vez de usar o sistema de alternativas, update-alternatives reconhecerá automaticamente a mudança e continuará rastreando a configuração (supondo que binário também tem uma entrada no grupo de links). Mas se a alternativa for definida como "modo automático" , a indicação manual do link fará com que update-alternatives não acompanhe mais a configuração, e a reinstalação de uma alternativa a redefinirá com base no prioridade .

Eu tenho que concluir que eu modifiquei esse comportamento anteriormente, reinstalando a 'alternativa' com uma prioridade mais baixa, ou, mais provavelmente, criei manualmente um novo symlink sem mudar de "modo automático". Eu diria que a lógica por trás da prioridade '200', conforme explicada no script vinculado, é completamente ridícula, então não me surpreenderia se eu modificasse a prioridade apenas por princípio. ; -)

    
por 29.02.2016 / 03:13