Por que usar o apt-get upgrade em vez do apt-get dist-upgrade?

265

Eu costumo usar apt-get update && apt-get upgrade para executar minhas atualizações e upgrades, em vez da GUI, porque ela parece rodar mais rapidamente.

No entanto, tenho notado ultimamente que muitas vezes recebo uma mensagem dizendo que uma das minhas atualizações foi retida. Eu, então, geralmente corro dist-upgrade para executá-lo e ele funciona bem. Tanto quanto eu posso dizer depois de ler essa questão e suas respostas, dist-upgrade faz as mesmas coisas e depois algumas.

Então, minha pergunta é: Por que usar apt-get upgrade ? Por que não usar apt-get dist-upgrade o tempo todo? Por que apt-get upgrade existe mesmo?

    
por jimchristie 30.09.2012 / 05:21

5 respostas

355

Eu normalmente atualizo minhas máquinas com:

sudo apt-get update && time sudo apt-get dist-upgrade

Abaixo, um trecho de man apt-get . O uso da atualização é mantido na regra: sob nenhuma circunstância os pacotes atualmente instalados são removidos ou os pacotes ainda não instalados são recuperados e instalados. Se isso for importante para você, use apt-get upgrade . Se você quer que as coisas "simplesmente funcionem", provavelmente você deseja que apt-get dist-upgrade garanta que as dependências sejam resolvidas.

Para expandir o motivo pelo qual você deseja atualizar em vez de dist-upgrade , se você for um administrador de sistemas, precisará de previsibilidade. Você pode estar usando recursos avançados como apt pinning ou puxando de uma coleção de PPAs (talvez você tenha um PPA interno), com várias automações instaladas para inspecionar seu sistema e atualizações disponíveis, em vez de sempre atualizar avidamente todos os pacotes disponíveis. Você ficaria muito frustrado quando o apt executasse um comportamento não formatado, especialmente se isso levasse ao tempo de inatividade de um serviço de produção.

upgrade
    upgrade is used to install the newest versions of all packages
    currently installed on the system from the sources enumerated in
    /etc/apt/sources.list. Packages currently installed with new
    versions available are retrieved and upgraded; under no
    circumstances are currently installed packages removed, or packages
    not already installed retrieved and installed. New versions of
    currently installed packages that cannot be upgraded without
    changing the install status of another package will be left at
    their current version. An update must be performed first so that
    apt-get knows that new versions of packages are available.

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. So, dist-upgrade
    command may remove some packages. The /etc/apt/sources.list file
    contains a list of locations from which to retrieve desired package
    files. See also apt_preferences(5) for a mechanism for overriding
    the general settings for individual packages.
    
por rduplain 06.12.2012 / 18:02
107

Eu sei que esta pergunta foi respondida e tem um ano de idade, mas eu sinto que isso precisa ser dito. O Ubuntu 14.04 e posteriores (e o Debian Jessie e mais tarde, para aqueles que encontram isso do Google) usam o APT 1.0, que permite o comando apt em vez de apt-get e apt-cache para algumas operações.

  • apt-get upgrade não alterará o que está instalado (apenas versões),
  • apt-get dist-upgrade instalará ou removerá pacotes conforme necessário para concluir a atualização,
  • apt upgrade instalará automaticamente, mas não removerá pacotes.
  • apt full-upgrade desempenha a mesma função que apt-get dist-upgrade .
por Stephen Angelico 22.07.2014 / 07:22
6

A opção upgrade instala apenas a nova versão dos pacotes que já estão instalados no sistema (e, sim, as atualizações do kernel pertencem a eles).

No entanto, às vezes, as atualizações alteram as dependências: por exemplo, uma nova versão de um pacote não dependerá mais de uma biblioteca que você instalou ou exigirá instalação de bibliotecas adicionais. A opção upgrade nunca removerá os pacotes instalados dos quais você não precisa mais.

No entanto, a opção dist-upgrade pode manipular "de maneira inteligente" as alterações no sistema de dependências. Isso inclui a remoção de pacotes que não são mais necessários ou a resolução de conflitos entre pacotes que surgiram devido a alterações nas dependências.

    
por January 30.09.2012 / 08:17
2

Os usuários podem ter vindo a confiar em pacotes que foram instalados implicitamente por causa da dependência de outros pacotes (explicitamente instalados) neles. Assim, o sistema de empacotamento não pode estar ciente de um desejo do usuário / administrador de reter certas funcionalidades que poderiam ser removidas via dist-upgrade.

    
por user244474 04.02.2014 / 14:42
-4

Não deve ser um problema para os Usuários Domésticos sempre "dist-upgrade", mas se você estiver executando sistemas complexos, é melhor "nunca (realmente) alterar um sistema em execução" ... Mesmo que haja "deve" não há problema, pode haver "probs" - o que te cortará! VOCÊ deve ser aquele que tem o direito 2 decidir; -)

    
por Thorben Kaufmann 12.08.2015 / 14:17