Como instalar atualizações via linha de comando?

692

Quando entro no meu servidor Web via SSH, vejo as informações:

88 packages can be updated.
80 updates are security updates

Tentei apt-get updateentão, apt-get upgrademas cada vez que faço login, ainda vejo a mensagem sobre atualizações. Como eu os instalo?

Marlin
fonte
1
Você tentou isso primeiro: sudo apt-get clean isso deve limpar o cache.
user2635584

Respostas:

870

Usa isto:

sudo apt update        # Fetches the list of available updates
sudo apt upgrade       # Installs some updates; does not remove packages
sudo apt full-upgrade  # Installs updates; may also remove some packages, if needed
sudo apt autoremove    # Removes any old packages that are no longer needed

A documentação sobre cada aptopção pode ser encontrada nas páginas de manual do apt . Eles também estão disponíveis executando man aptno seu terminal.

O uso de ambos upgradee full-upgradejuntos geralmente não é necessário, mas pode ajudar em alguns casos: consulte a documentação da Debian sobre atualizações do Debian 9 .

SirCharlo
fonte
29
Devo sempre reiniciar sudo rebootdepois?
Hellboy
1
Eu precisava adicionar -y para que funcionasse. Ubuntu 17.10
T04435
125

Execute todos os comandos digitando sudouma vez:

sudo -- sh -c 'apt-get update; apt-get upgrade -y; apt-get dist-upgrade -y; apt-get autoremove -y; apt-get autoclean -y'

ou

sudo -s -- <<EOF
apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y
apt-get autoremove -y
apt-get autoclean -y
EOF

ou ainda mais curto em um loop for (Obrigado @dessert)

sudo bash -c 'for i in update {,dist-}upgrade auto{remove,clean}; do apt-get $i -y; done'
Benny
fonte
3
Você pode combinar dist-upgradee autoremovepor apt-get dist-upgrade --auto-remove.
jarno 22/07
3
Não há necessidade de executar ambos upgradee dist-upgrade.
jarno 22/07
3
O @jarno dist-upgradepode remover pacotes. Usar upgradeprimeiro pode evitar isso, como quando novas versões de pacotes atendem às dependências mais facilmente do que as antigas. Não sei com que frequência isso ajuda na atualização de pacotes em uma versão estável do Ubuntu, mas é recomendado em outros contextos . Pessoalmente, raramente uso dist-upgradeno Ubuntu e, quando uso, nunca passo -y. Mas se alguém quiser correr dist-upgradee passar -y, acho razoável executar a upgradeação primeiro.
Eliah Kagan 22/07
1
@jarno enquanto você pode encadear --autoremovecom o comando upgrade de sua escolha, não é aconselhável, pois pode acabar com um estado impuro quando um dos pacotes falha. O melhor foi usar o autoremovesozinho em uma linha separada após a conclusão do processo de atualização; se você quiser limpar os arquivos de configuração antigos, poderá encadear isso --purge.
Videonauth 22/07
@Videonauth oh, depende de como apté implementado. Eu acho que deve ser implementado para que não deixe o sistema em estado impuro.
jarno 22/07
91

Este é um comportamento normal.

A mensagem que você vê no login foi anexada ao status do servidor 'Message-Of-the-Day', que é atualizado apenas a cada dia do calendário (ou na inicialização / inicialização do servidor). Dê uma olhada no conteúdo, usando

cat /etc/motd

Ainda vendo as mesmas atualizações disponíveis, depois de executar

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

é de se esperar. Se você executar novamente este comando, apenas serão solicitadas outras atualizações se atualizações ainda mais recentes (mais recentes) forem lançadas.

david6
fonte
Percebo que qualquer alteração de arquivo em todo o sistema não é exibida até o próximo dia do calendário. Existe uma maneira de "atualização" começar a ver as alterações imediatamente?
aljuaid86
Você quer dizer atualizações para o conteúdo da Mensagem do Dia ou não obter o que deseja após a execução sudo apt-get update && sudo apt-get upgrade?
David6
3
Isso não é mais verdade no 16.04. Após o "apt-get dist-upgrade" e uma reinicialização, vejo "0 pacotes podem ser atualizados".
Bogdan Calmac
1
A declaração '.. ou na reinicialização do servidor ..' acima cobre isso.
david6
3
cat: / etc / motd: Não
existe
11

Depois de fazer o login no servidor, execute o comando abaixo.

sudo apt-get upgrade

Deveria fazer o truque. Talvez você só precise reiniciar o servidor.

Mitch
fonte
3
Obrigado pela sua resposta, mas tentei o sudo apt-get upgrade. Reiniciar o servidor está fora de questão, porque eu tenho sites.
Marlin
3
se você instalou uma atualização que afeta diretamente o kernel ou é uma atualização de driver ou é uma atualização de segurança crítica, é necessário reiniciar o servidor.
Evandro Silva
Talvez você deva considerar um erro 503 por um minuto. Você sabe que tipo de atualização é essa?
NorTicUs 05/10/12
1
Como você pode dar um 503 se o servidor estiver offline?
Mcont
8

No meu caso, eu tinha um URL incorreto ou não acessível em /etc/apt/sources.list. Depois de remover esse URL, consegui atualizar todos os pacotes com sucesso.

Comandos:

sudo vi /etc/apt/sources.list
sudo apt-get update && sudo apt-get upgrade
burtsevyg
fonte
7

Minha (muito tarde, eu gosto de emblemas necromantes :-)):

  1. Instale o wajig (uma vez):

    sudo apt-get install wajig 
    
  2. Quando você deseja atualizar / atualizar completamente seu sistema

    wajig dailyupgrade
    

    (ele solicitará a senha, se necessário, e executará todas as etapas de atualização, atualização, dist-upgrade e remoção automática).

Rmano
fonte
1

esse script é útil para automatizar atualizações, incluindo a remoção de pacotes desnecessários e a reinicialização somente se o sistema operacional desejar

remote_user=usernamehere
remote_host=example.com

ssh -A -n -o StrictHostKeyChecking=no ${remote_user}@${remote_host} && \
sudo apt-get update && \
sudo apt-get -f install -y && \
sudo apt-get -o Dpkg::Options::="--force-confnew" -yy dist-upgrade -y && \
sudo apt-get autoremove -y && \
[ -f /var/run/reboot-required ] && \
echo "sudo reboot now" && \
sudo reboot now 

para executar em sua caixa local, basta deixar de fora essa primeira linha fazendo o ssh

Aqui está um pseudônimo que eu salvo em ~ / .bashrc

alias doit='echo; kill $( ps -eafww|grep update-manager|grep -v grep | grep update-manager | tr -s " " |cut -d" "  -f2 ) > /dev/null 2>&1;  echo "sudo apt-get update && sudo apt-get dist-upgrade &&  [ -f /var/run/reboot-required ] && echo && echo reboot required && echo";echo;sudo apt-get update && sudo apt-get dist-upgrade &&  [ -f /var/run/reboot-required ] && echo && echo reboot required && echo '

então no terminal eu apenas emito doit

Scott Stensland
fonte
0

Se você executar apt-get updatenovamente após a apt-get upgradeconclusão, essas mensagens no login do ssh deverão desaparecer.

Francisco Luz
fonte