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


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

No entanto, tenho notado ultimamente que muitas vezes recebo uma mensagem de que uma das minhas atualizações foi retida. Então eu geralmente corro dist-upgrade para executá-lo e 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 em absoluto? Por que não usar apt-get dist-upgrade o tempo todo? Porque apt-get upgrade existe mesmo?


271
2017-09-30 03:21


origem


Nas versões mais recentes do Ubuntu, sudo apt full-upgrade faz coisas semelhantes. - Aaron Franke


Respostas:


Eu normalmente atualizo minhas máquinas com:

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

Abaixo está 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 é importante para você, use apt-get upgrade. Se você quer que as coisas "simplesmente funcionem", você provavelmente quer apt-get dist-upgrade para garantir que as dependências sejam resolvidas.

Para expandir por que você quer atualizar ao invés de dist-upgrade, se você é um administrador de sistemas, precisa de previsibilidade. Você pode estar usando recursos avançados como Apanhar 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.

365
2017-12-06 17:02



Obrigado por não só resumir as diferenças entre os dois, mas também explicar as situações em que um pode ser melhor que o outro. Isso era exatamente o que eu estava procurando. - jimchristie
dist-upgrade é mais provável que quebrar coisas mal do que upgrade. upgrade garante que seu sistema permaneça completo. - Braiam
O dist-upgrade é mais provável de corrigir problemas com versões de pacotes conflitantes, se você estiver confortável com a abordagem de rolo de estrada (ou seja, você não tem um software de produção de missão crítica rodando na caixa) - Henno
Uma pequena pergunta sobre o 'apt-get upgrade' referindo-se ao fato de que "nenhum pacote atualmente instalado foi removido ou um novo foi adicionado": os pacotes existentes também são atualizados de acordo. Por exemplo, oldA depende de oldB. O oldA e o oldB serão atualizados? Que tal se newA depender de oldB e não newB, o que acontece com esses dois durante o upgrade? ambos não atualizados ou ambos atualizados, o que pode deixar o newA não funcionando porque o oldB está perdido? - Kenny
Qual é a razão para usar time Aqui? - ItalyPaleAle


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

  • apt-get upgrade não vai mudar o que está instalado (apenas versões),
  • apt-get dist-upgrade irá instalar ou remover pacotes conforme necessário para completar a atualização,
  • apt upgrade irá instalar automaticamente mas não remover pacotes.
  • apt full-upgrade executa a mesma função que apt-get dist-upgrade.

111
2017-07-22 05:22



@muru Obrigado pela edição e pela nota sobre atualização completa. Eu uso principalmente o Debian 7 (que é pré-APT 1.0), e eu apenas toquei com o Debian Jessie e Ubuntu 14.04. - Stephen Angelico
seja bem-vindo. Como alguém que usa jessie e 14.04 regularmente, eu aprendi primeiro deste novo utilitário da sua resposta! - muru
Você tem uma fonte para sua descrição de apt upgrade? Tudo o que eu posso sugerir sugere apt upgrade é o mesmo que apt-get upgrade. Por exemplo, apt help upgrade nas saídas do meu sistema: "apt upgrade" is equivalent to "sudo apt-get upgrade" - Jon Bentley
As respectivas páginas de apt e apt-get especifique o que eu disse originalmente. - Stephen Angelico
apt safe-upgrade não é uma operação válida no meu sistema. Se você diz aptitude safe-upgradenão é bem assim. apt-get upgrade nunca irá instalar pacotes, enquanto apt upgrade e aptitude safe-upgrade irá instalar novos pacotes conforme as dependências o exigirem. assim aptitude safe-upgrade é equivalente a apt upgrade, não apt-get upgrade. - Stephen Angelico


o upgrade opção só instala 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á a instalação de bibliotecas adicionais. o upgrade opção nunca irá remover pacotes instalados que você realmente não precisa mais.

No entanto, o dist-upgrade opção pode "inteligentemente" lidar com mudanças no sistema de dependências. Isso inclui remover pacotes que não são mais necessários ou resolver conflitos entre pacotes que surgiram devido a alterações nas dependências.


6
2017-09-30 06:17



Embora isso seja preciso, não acho que isso responda à pergunta. Se tivermos uma opção "inteligente" que possa lidar com mudanças de dependência e remover a desordem, por que não usá-la sempre? - ændrük
upgrade também nunca adicionar novos pacotes que tornar-se necessário como dependências. A partir de man apt-get: "sob nenhuma circunstância pacotes atualmente instalados são removidos, ou pacotes ainda não instalados são recuperados e instalados" @ ændrük Só porque algo é "inteligente" não significa que ele sempre fará o que o usuário quiser (ou até mesmo algo razoável). Sempre que uma atualização do sistema remove um pacote, é bom verificar o que ele está fazendo antes de pressionar Y. - Eliah Kagan


Os usuários podem ter vindo a depender de 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.


2
2018-02-04 13:42





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


-4
2017-08-12 12:17



Should not be a problem for Win-Home Users to always "dist-upgrade" ..por que é que ? - heemayl
Bem, digamos que você configure um ubuntu-server, uma estação de trabalho para ambiente produtivo: quando você sempre e automatizado faz dist-upgrade você provavelmente não controlaria, quando receber problemas - mesmo que você não tenha tempo para resolver Naquele momento, uma atualização automatizada é feita. Algumas configurações podem precisar de toque "humano" para a porta. Isso é o que eu expirienced várias vezes. Quando você simplesmente trabalha em plataformas "Home" como o Win-Home, por padrão, o usuário não está habilitado para controlar as atualizações. Então você pode não incomodar você. - Thorben Kaufmann