Posso fazer uma atualização de versão silenciosa ou autônoma?

31

Como atualizo para uma nova versão do Ubuntu sem ter que reagir às solicitações?

Estou no 12.04 agora e gostaria de instalar o 12.10. Quando inicio a atualização, ela geralmente baixa coisas, faz uma pergunta, instala um pouco, faz uma pergunta, etc. Eu gostaria de dar um pontapé no processo, ir embora e terminar depois de algumas horas. Eu estou bem com isso atualizando automaticamente os arquivos de configuração em / etc e assim por diante. Então, como iniciar uma atualização autônoma?

jdm
fonte

Respostas:

42

O comando a seguir atualiza para a nova versão estável sem prompts:

do-release-upgrade -f DistUpgradeViewNonInteractive

O comando a seguir atualiza para o release de desenvolvimento atual sem prompts:

do-release-upgrade -d -f DistUpgradeViewNonInteractive

Não testei, mas parece que apenas executa a ação padrão quando surge uma pergunta. Ele também excede o tempo limite de scripts, se eles travarem por muito tempo.

Você pode precisar usá-lo dpkg-reconfigureposteriormente se não estiver satisfeito com a configuração de determinados pacotes, mas na maioria das vezes você deve estar bem.

Fonte: http://awaseroot.wordpress.com/2012/04/29/ubuntu-release-upgrade-fully-automatic-non-interactive-upgrade/ . No link, também existem outras maneiras de fazer isso.

jdm
fonte
Evite fazer referência a conteúdo de links, mas inclua as informações relevantes também para evitar que informações sejam perdidas se o site não estiver acessível.
K0pernikus
Fiz isso e tudo parecia funcionar, mas após uma reinicialização, recebi apenas um erro do grub , então você parece ter que adicionar mais algumas configurações do grub após esta atualização autônoma. talvez com sudo apt-get install grub-emu?
rubo77
6
Isso não funciona para o Trusty => Xenial. Ainda receba perguntas sobre arquivos / etc modificados.
Willem
Isso não deve ser executado com o sudo?
Cerin
Em relação às perguntas sobre arquivos / etc modificados, existe uma solução interessante aqui: awaseroot.wordpress.com/2012/04/29/… . Execute o comando com 'echo "y \ n \ ny \ ny \ ny \ n" | 'na frente do-release-upgrade. Semeia as respostas para as perguntas. Adicione muitas respostas caso haja muitos arquivos modificados no / etc.
nmgeek
6

Apenas para expandir as respostas anteriores, veja como fazer remotamente o mesmo que a resposta aceita, usando uma atualização sem senha sobre ssh que fará com que sua caixa seja atualizada para a versão mais recente. É copiado da minha própria entrada de blog .

Todas essas etapas assumem que seu repositório de pacotes está funcionando. Ou seja, se você executar a atualização do apt-get, não receberá muitos 404s por ter uma versão desatualizada. Você precisa corrigir isso primeiro, então veja esta resposta para isso.

0. Atualize todos os pacotes existentes

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

1. Configure a execução sem senha

Adicione você mesmo à lista de usuários que podem executar o-release-upgrade usando o sudo sem digitar uma senha.

sudo visudo -f /etc/sudoers.d/do-release-upgrade.

e adicionando a seguinte linha, substituindo meu nome de usuário pelo seu, é claro:

my-username ALL=NOPASSWD: /usr/bin/do-release-upgrade

2. Inicie atualizações incrementais

Faça logout e execute o seguinte comando no seu computador. Ele fará uma atualização sem solicitar a entrada (aceitando todas as respostas padrão), aguarde a reinicialização do computador e tente atualizar novamente. É executado até que você seja atualizado para a versão mais recente.

while true; do 
    ssh my-user@my-server sudo do-release-upgrade -f DistUpgradeViewNonInteractive;
    sleep 120; 
done

3. Corrija os arquivos de configuração ao estado anterior

Posteriormente, você terá que mover os arquivos de configuração com backup para o local anterior, pois o processo de atualização colocou as configurações padrão em seu lugar.

Não está satisfeito com as respostas padrão?

Esse cara tem uma maneira de preparar previamente as respostas para cada prompt, mas a desvantagem é que você deve saber quantas solicitações existem…

oligofren
fonte
5

Para confirmar o que Thomas Ward declara em sua resposta e contradizer a resposta aceita, do-release-upgrade -d -f DistUpgradeViewNonInteractiveNÃO FUNCIONA.

De fato, no primeiro prompt, ele quebrou minha partição de teste 16.04 a 18.04 e eu tive que reclonizá-la. É aqui que o script congela:

Setting up mount (2.31.1-0.4ubuntu3) ...
Setting up systemd (237-3ubuntu10) ...
Installing new version of config file /etc/pam.d/systemd-user ...
Installing new version of config file /etc/systemd/journald.conf ...

Configuration file '/etc/systemd/logind.conf'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** logind.conf (Y/I/N/O/D/Z) [default=N] ? y

Y
CRASHED... NOTHING HAPPENS NOW... WILL KILL AND RESTART WITHOUT -f OPTION...

Devido aos inibidores de entrada, nem a reinicialização nem o desligamento funcionarão após a eliminação do script. Você precisa fazer um desligamento a frio (mantenha pressionado o botão liga / desliga ~ 10 segundos).

Graças a Deus, essa foi uma atualização do clone 16.04 e não na partição 16.04 real.


Para tornar a vida ainda mais interessante, uma nova partição de 898 MB foi adicionada ao meu SSD NVMe e minhas partições regulares foram alteradas:

$ lsdrv
NAME        FSTYPE  LABEL                  MOUNTPOINT          SIZE MODEL

nvme0n1                                                        477G Samsung SSD 960 PRO 512G
├─nvme0n1p5 ntfs                                               858M 
├─nvme0n1p3                                                     16M 
├─nvme0n1p1 ntfs                                               450M 
├─nvme0n1p8 ntfs    Shared_WSL+Linux       /mnt/e                9G 
├─nvme0n1p6 ext4    Ubuntu18.04                               23.7G 
├─nvme0n1p4 ntfs    NVMe_Win10             /mnt/c            390.4G 
├─nvme0n1p2 vfat                           /boot/efi            99M 
├─nvme0n1p9 swap    Linux Swap             [SWAP]              7.9G 
└─nvme0n1p7 ext4    NVMe_Ubuntu_16.0       /                  44.6G 
  • nvme0n1p5 costumava ser onde minha partição Ubuntu 16.04 residia, mas agora está ligada nvme0n1p7
  • nvme0n1p8 costumava ser onde minha partição de teste 18.04 residia, mas agora está ligada nvme0n1p8

NOTA: Também atualizei o Windows 10 do Build 1709 para o Build 1803 esta tarde, para que seja possível que ele tenha criado a nova nvme0n1p5partição de 898 MB no ntfsformato.

WinEunuuchs2Unix
fonte
Porém, como é grande, você deve denunciá-lo no Launchpad. Usou a forma não interativa através de vários upgrades de distribuição antes
oligofren
atualizou o ubuntu e o windows na mesma caixa no mesmo dia? você deve desfrutar de dor
JDS
@JDS Windows foi borked. 1700 atualizações ausentes, todos os tipos de dependências quebradas Python 2 vs Python 3. Eu tenho que apagar e reinstalar o Ubuntu 16.04 da Windows Store suspiro .
WinEunuuchs2Unix
2

Você pode fazer isso através do terminal, usando sudo apt-get -y upgrade. Isso responderá "sim" a todas as solicitações. Porém, ele não será executado automaticamente, então você deve executá-lo. Ele deve trabalhar. AFAIK, não há como usar o gerenciador de atualizações da GUI para fazer atualizações autônomas do software ( isso NÃO é o mesmo que uma atualização de versão! )

Se você estiver tentando atualizar para uma versão diferente do Ubuntu (também conhecida como atualização de versão e, geralmente, a próxima versão da linha de lançamentos relativa à sua versão do Ubuntu), será necessário ativá-la manualmente . sudo do-release-upgradepode funcionar. Porém, não há como ignorar as solicitações anteriores. É por isso que você inicia as atualizações quando está por perto para receber esses avisos - haverá avisos.

Thomas Ward
fonte
1
"Não há como ignorar avisos anteriores". E o sinalizador DistUpgradeViewNonInteractive? Isso ignora os avisos.
Oligofren 6/06/2013
1
@oligofren Thomas está certo, porque a -f DistUpgradeViewNonInteractiveflag faz com que o script seja bloqueado no primeiro (Y/I/N/O/D/Z)prompt. Veja minha resposta que acabei de publicar.
WinEunuuchs2Unix
-4

Tente adicionar a -yopção, apt-getmas saiba que ela responderá a ytodas as perguntas.

blogueiro
fonte
1
Estou usando o gerenciador de atualizações gráficas, não o apt-get. Eu poderia fazer a atualização no console, mas ouvi dizer que 'apt-get dist-upgrade' não funcionava em anos (para atualizar entre versões), para que o comando não fosse 'apt-get'.
JDM
@jdm apt-get dist-upgradedeve funcionar bem. Onde você está aqui não funciona mais?
Seth
3
O @Seth apt-get dist-upgradenão realiza agora e nunca, em nenhum sistema operacional, realizou uma atualização de versão por conta própria. Veja man apt-get. upgradeapenas atualiza pacotes que podem ser atualizados sem que nenhum pacote seja instalado ou desinstalado recentemente. dist-upgradeatualiza pacotes mesmo quando isso significa que os pacotes são removidos ou adicionados. Isso é útil principalmente para executar atualizações comuns - por exemplo, upgradenão atualiza os kernels.
Eliah Kagan
2
Alterar sources.listpara apontar para os arquivos da próxima versão e, em seguida, executar apt-get dist-upgrade, se for bem-sucedido , executará uma atualização da versão. Isso é suportado no Debian, embora seja recomendável usá-lo aptitude dist-upgradepor causa de sua resolução de dependência mais avançada. No Ubuntu, nada disso é suportado , embora possa ter sucesso. Em vez disso, do-release-upgradeé usado para atualizar para uma versão posterior na linha de comando . Esse utilitário não exibe -ysinalizador, portanto, essa resposta não se aplica à situação de atualização para uma nova versão .
Eliah Kagan
Huh, interessante. Eu devo ter lido sobre o Debian então.
Seth