O que o “sudo apt-get update” faz?


Respostas:


551

Em poucas palavras, apt-get updatena verdade não instala novas versões de software. Em vez disso, atualiza as listas de pacotes para atualizações de pacotes que precisam de atualização, bem como novos pacotes que acabaram de chegar aos repositórios.

  • apt-get updatebaixa as listas de pacotes dos repositórios e as "atualiza" para obter informações sobre as versões mais recentes dos pacotes e suas dependências. Isso será feito para todos os repositórios e PPAs. Em http://linux.die.net/man/8/apt-get :

    Usado para sincronizar novamente os arquivos de índice de pacotes de suas fontes. Os índices dos pacotes disponíveis são buscados no (s) local (is) especificado (s) em /etc/apt/sources.list(5). Uma atualização sempre deve ser realizada antes de uma atualização ou dist-upgrade.

  • apt-get upgradebuscará novas versões de pacotes existentes na máquina se o APT souber dessas novas versões por meio de apt-get update.

    Em http://linux.die.net/man/8/apt-get :

    Usado para instalar as versões mais recentes de todos os pacotes atualmente instalados no sistema a partir das fontes enumeradas em /etc/apt/sources.list(5). Pacotes atualmente instalados com novas versões disponíveis são recuperados e atualizados; sob nenhuma circunstância os pacotes instalados no momento são removidos, nem os pacotes que ainda não estão instalados são recuperados e instalados. Novas versões dos pacotes atualmente instalados que não podem ser atualizados sem alterar o status de instalação de outro pacote serão deixadas na versão atual. Uma ênfase deve ser realizada primeiro para que o apt-get saiba que novas versões de pacotes estão disponíveis.

  • apt-get dist-upgradefará o mesmo trabalho realizado apt-get upgrade, além de também lidar com as dependências de maneira inteligente, para remover pacotes obsoletos ou adicionar novos. Veja aqui: O que é "dist-upgrade" e por que ele atualiza mais do que "upgrade"?

    Em http://linux.die.net/man/8/apt-get :

    Além de desempenhar a função de atualização, esta opção também lida de maneira inteligente com as dependências variáveis ​​com as novas versões dos pacotes; O apt-get possui um sistema de resolução de conflitos "inteligente" e tentará atualizar os pacotes mais importantes às custas dos menos importantes, se necessário. O /etc/apt/sources.listarquivo (5) contém uma lista de locais para recuperar os arquivos de pacote desejados. Veja também apt_preferences (5) para um mecanismo para substituir as configurações gerais de pacotes individuais.

Você pode combinar comandos da &&seguinte maneira:

sudo apt-get update && sudo apt-get install foo bar baz foo-dev foo-dbg

ou para obter as versões mais recentes possíveis, de acordo com os requisitos de versão das dependências:

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

Você precisa das sudoduas vezes, mas como, sudopor padrão, não solicita sua solicitação dentro de 5 minutos ou mais desde a última sudooperação, sua senha será solicitada apenas uma vez (ou não).


11
Sempre precisamos executar o sudo apt-get updatecomando sempre que instalamos pacotes? Qual é a desvantagem se não o fizermos?
JohnnyQ

14
@JohnnyQ Se você não executar esse comando, poderá instalar um pacote desatualizado.
ζ--

ah parece que é apenas uma coisa de convenção então. Portanto, estou assumindo que não é realmente necessário, especialmente se você estiver usando apenas pacotes básicos com comandos básicos que não são atualizados normalmente. Problema na minha situação é que apt-get updatedemora um pouco, a internet aqui ainda é primitiva.
JohnnyQ

2
@JohnnyQ, se sua atualização do apt-get for lenta, então o seu apt-get dist-upgrade também será lento, então isso não é realmente um argumento para não fazer a atualização do apt-get primeiro. Por outro lado, você pode acelerar sua atualização do apt-get olhando para a pasta /etc/apt/sources.d/ para ver se você adicionou algum repositório personalizado e se um deles pode não responder, o que atrasará todo o processo de atualização.
Mladen B.

1
A propósito, "apt" significa Advanced Packaging Tool ( wiki.debian.org/Apt "O que é o APT?"). Algo que aprendi no outro dia, pensei em compartilhar. ("apt" aparece frequentemente em man apt-get, man apt, mas eu nunca tinha visto o acrônimo expandido antes).
jgreve

47

Uma pesquisa no Google pode fornecer a definição para quase qualquer comando do terminal, como pode --help no terminal. Por exemplo,

apt-get --help

sudo apt-get update essencialmente tem três partes:

sudo

executa o seguinte comando com recursos de superusuário (raiz). Muitas ações que exigem a modificação de arquivos do sistema ou a instalação de aplicativos requerem permissões extras para serem executadas.

apt-get

é uma ferramenta de linha de comando que o Ubuntu usa para instalar, remover e gerenciar pacotes de software

update

é uma opção para o programa apt-get usar, que atualiza as listas de pacotes de um servidor na internet. As listas de pacotes fornecem ao utilitário apt-get informações importantes sobre os pacotes de software que você pode instalar usando o apt-get. O apt-get usa essas listas para determinar qual software instalar quando receber um comando para instalar. Por exemplo

sudo apt-get install guake

instalaria o terminal Guake, conforme listado atualmente nas listas de software local do meu computador. No entanto, essa pode não ser a versão apropriada ou, se o programa for novo, pode não estar disponível. Portanto, ao instalar o software com o apt-get, você normalmente digita

sudo apt-get update
sudo apt-get install <package>

garantindo que o apt-get saiba instalar a versão mais recente do pacote.

Outra fonte útil de informações é o help.ubuntu.comsite. Por exemplo, se você pesquisasse nesse site apt-get, encontraria o AptGet / Howto como um dos resultados.


Alex, posso basicamente usar o comando como você o colocou: "apt-get update apt-get install <package>" Basicamente, duas coisas podem ser executadas apenas digitando os 2 comandos juntos dessa maneira?
Elysium

1
@Elysium Sim, se você tiver &&entre eles comosudo apt-get update&&sudo apt-get install foo bar baz
ζ--

7
Usar &&significa que o segundo comando será executado apenas se o primeiro for bem-sucedido. Se você não se importa com o sucesso do primeiro comando, use ;.
Flimm

4
Uma pesquisa no Google me levou a esta pergunta / resposta. Apenas FYI;)
teewuane

19

A execução sudo apt-get updatesimplesmente garante que sua lista de pacotes de todos os repositórios e PPAs esteja atualizada. Se você não executar esse comando, poderá obter versões mais antigas de vários pacotes que estão instalando ou, pior ainda, problemas de dependência. Se você acabou de adicionar um PPA e não atualizou, nada do PPA funcionará, pois você não possui uma lista de pacotes desse PPA ou repositório.

Em poucas palavras: é altamente recomendável executar sudo apt-get updateantes da instalação, mas pode ser pulado se você realmente estiver com pressa de tempo, a menos que tenha alterado repositórios ou PPAs desde o último apt-get update.


13

Ele atualiza a lista de softwares disponíveis no seu computador.

Seu computador possui uma lista (como um catálogo) que contém todo o software disponível que os servidores Ubuntu possuem. Mas o software e as versões disponíveis podem mudar, portanto, uma "atualização" chegará ao servidor e verá qual software está disponível para atualizar suas listas (ou catálogos) locais.

Note que updateé diferente de upgrade. A atualização, conforme mencionado acima, buscará o software disponível e atualizará as listas, enquanto upgradeinstalará novas versões do software instaladas no seu computador (atualizações reais de software).

Para realmente atualizar seu software (não "atualizar" as listas), você executa o comando

sudo apt-get upgrade

que geralmente é executado após uma "atualização".


Para que serve sudo apt-get installentão? Instalando pacotes específicos em vez de uma atualização geral?
Peter Mortensen

12

Você precisa executar apt-get updateuma vez antes de instalar novos pacotes, pois isso atualiza as informações do repositório local. Se você deseja instalar vários pacotes logo após o outro, não precisa executar apt-get update. Além disso, você pode instalar vários pacotes de uma vez, se digitar sudo apt-get install package1 package2...


Bom truque para isso!
Emerson Hsieh

6

Quando você instala pacotes da linha de comando com sudo apt-get install ...(ou sudo aptitude install ...) ou quando você os atualiza da linha de comando (com upgradeou em dist-upgradevez de install), as seguintes informações são obtidas na configuração do sistema local e não na Internet:

  1. quais pacotes estão disponíveis

  2. quais versões estão disponíveis

  3. onde os pacotes disponíveis devem ser recuperados de

A execução sudo apt-get update(ou sudo aptitude update) atualiza isso no seu sistema local. Esta é a etapa que realmente recupera informações sobre quais pacotes podem ser instalados, incluindo as atualizações disponíveis nos pacotes de pacotes atualmente instalados , de fontes da Internet.

Quando você instala pacotes com uma interface GUI (o Update Manager, o Software Center ou o Synaptic Package Manager), o trabalho sudo apt-get updateé feito automaticamente. Quando você instala pacotes a partir da linha de comando, não é, e você sempre deve fazer isso sozinho, a menos que tenha feito isso muito recentemente .

Como as informações sobre quais versões atualizadas dos pacotes estão disponíveis são obtidas executando sudo apt-get update(ou sudo aptitude update), é recomendável executá-lo antes de instalar qualquer pacote e necessário para instalá-lo nas últimas atualizações, mesmo se você não adicionou ou removeu nenhum Software Fontes (como um PPA) .

Observe que, se você estiver executando várias operações de gerenciamento de pacotes ao mesmo tempo, não precisará executar sudo apt-get updateantes de cada uma. É apenas se as informações não forem atualizadas há um tempo que você deve executá-las.


4

Como Eliah Kagan mencionou acima, você esperaria que um aplicativo GUI fosse executado apt-get updateantes apt-get install/ apt-get upgrade, mas eu acabei de descobrir um erro 404 interessante, em uma máquina VM de segurança ofensiva relativamente nova, que me deixou perplexo por um minuto.

Na linha de comando, executei apt-get updatee tentei o comando System Tools / Software-Update novamente, e desta vez ele foi executado sem erros 404.

Então, acho que você nem sempre pode assumir que apt-get updateé executado a partir de aplicativos GUI ...


Interessante ... Pode haver alguma situação incomum de rede entre você e o servidor que é melhor tratada quando você executa do apt-getque pela verificação automática executada ao executar o Atualizador de Software / Gerenciador de Atualizações? Você usa um proxy HTTP? E você é capaz de fazer isso acontecer de novo ou aconteceu apenas uma vez? Se for uma anomalia isolada, pergunto-me se talvez o problema seja devido a uma configuração incorreta temporária do servidor. Qual espelho você usa? Com mais informações, talvez eu possa melhorar minha resposta. (Btw, isso é concebido como uma resposta em separado, ou deve ser convertido em um comentário?)
Elias Kagan

3

Como dito por muitas pessoas antes de mim, isso atualiza seu repositório local (lista de pacotes).

Você pode ter problemas se tentar instalar

apt-get install foobar

e foobar ou uma dependência não têm sua versão mais recente no repositório. Isso pode ser especialmente problemático se você instalar um arquivo .deb manualmente ou um ppa de terceiros.

Basicamente, garante que sua lista corresponda à lista principal .


2

Vamos considerar o exemplo da instalação do VLC media player no Ubuntu:

sudo apt-get update

Ele verificará os repositórios para atualizações disponíveis.

Enquanto que

sudo apt-get install vlc vlc-plugin-pulse mozilla-plugin-vlc

instalará o VLC media player a partir dos repositórios que procuramos.

Se você fez login como usuário root (administrador), não precisa usá-lo sudo, porque já possui os privilégios de superusuário.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.