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