Confusão na definição 'apt-get dist-upgrade'

1

De acordo com man apt-get :

upgrade "is used to install the newest versions of all packages currently installed".

dist-upgrade "in addition to performing the function of upgrade, also intelligently handles changing dependencies with new versions of packages"

Eu procurei várias definições de dist-upgrade na Internet e descobri que ele é usado quando novas dependências (ainda não instaladas) precisam ser instaladas, embora não seja o que man apt-get definition diz, como eu entendo.

Eu sempre acho man pages muito precisos, mas não entendo o que 'alterar dependências com novas versões de pacotes' significa exatamente na definição dist-upgrade. Isso significa que as dependências são alteradas para novas versões das mesmas dependências? Será que 'mudou' significa que uma dependência foi removida e outra instalada, ou simplesmente que uma nova versão da mesma dependência foi instalada e usada no lugar da versão substituída? Não atualizar já instalar novas versões de dependências e 'dizer de alguma forma' que o pacote deve usar essas novas dependências?

Supondo que o pacote A dependa de um arquivo X dentro de um pacote B (a dependência): Quando a atualização instala uma versão mais nova do pacote B, chamada de pacote B-2, esta nova dependência é usada pelo pacote A ou é que ainda usa o pacote B até o dist-upgrade ser executado?

    
por Facundo Laffont 22.08.2016 / 05:35

2 respostas

1

Digamos que antes da atualização você tenha uma situação como essa, onde os pacotes php e e python têm dependência do libxml-dev-1.2

                            +--------------------+
                            | python_3.1         |
+--------------+            |                    |
| php7.0       |            | depends on libxml-dev_1.2
|              |            +-----+--------------+
| depends on libxml-dev_1.2       |
|              |                  v
+------------+-+
             |              +---------------------+
             |              | libxml-dev-1.2      |
             +------------> |                     |
                            |                     |
                            |                     |
                            +---------------------+

você atualiza o índice local de apt , com apt-get update ,
agora o apt-cache policy mostra que há uma nova versão do pacote disponível para o php - versão 7.3 .
Mas correr apt-cache show php mostra que o novo pacote php precisa de uma versão mais nova de sua dependência libxml-dev, o novo pacote php precisa dizer, libxml-dev-1.3 .
Normalmente o apt instalaria todas as dependências necessárias para satisfazer a instalação ou atualização do php 7.3, no entanto se apt substituiu libxml-dev-1.2 pelo mais recente libxml-dev-1.3 (lembrando que ter libxml-dev-1.2 e libxml-dev-1.3 rodando lado a lado não é realmente uma opção) para satisfazer os requisitos de dependência de php7.3 , ele "quebraria" o requisito de dependência do python.
Nesse cenário, apt-get upgrade não faria nada, no entanto, se você observar a entrada man apt-get de dist-upgrade

dist-upgrade
dist-upgrade in addition to performing the function of upgrade, also intelligently handles changing dependencies with new versions of packages; apt-get has a "smart" conflict resolution system, and it will attempt to upgrade the most important packages at the expense of less important ones if necessary. The dist-upgrade command may therefore remove some packages. [...]

Então, apt-get dist-upgrade irá empurrar / quebrar as regras sobre dependências especificadas pelo pacote para obter pacotes atualizados.

Portanto, dos dois comandos, apt-get dist-upgrade irá atualizar mais pacotes do que seria melhorado com apt-get upgrade

    
por 22.08.2016 / 07:51
0

ambos os casos podem acontecer dependendo da dependência de um arquivo ou pacote. para esse assunto, existe o comando deborphan que pode mostrar se existe um pacote órfão devido à dependência recém-instalada.

Geralmente, sempre uso dist-upgrade e, em algum momento, emito apt-get remove $(deborphan) para limpar as coisas.

    
por 22.08.2016 / 07:14