Quando o apt-get upgrade ou apt upgrade é executado a partir do shell script e “dialog” é invocado, a entrada é interrompida

0

Depois de fazer o root e executar diretamente a partir da linha de comando "apt upgrade", alguns upgrades de pacotes resultam em um diálogo - branco em texto azul, com destaque de bloco vermelho para a opção selecionada com tecla tab) - que depois usando a aba para selecionar a opção apropriada e depois entrar, continua com a saída do processo.

Agora, se o comando apt upgrade for colocado em um script de shell Bourne executável (junto com outros comandos, por exemplo, apt-file update, apt update antes do apt upgrade) e os processos apt upgrade invocam diálogo para obter entrada do usuário config, substitua config por nova versão etc) então a entrada do teclado é ignorada - os caracteres ecoam no terminal, mas não são vistos pelo processo de diálogo.

A única coisa que pode ser feita é ir para outro terminal X, matar o processo apt, remover um arquivo de bloqueio, executar o dpkg --configure -a, executar o apt-get -f upgrade etc

Eu suspeito que o problema seja possivelmente devido ao redirecionamento de stdin e / ou o modo tty sendo alterado para o modo raw quando o diálogo é invocado.

Então, pode ser executado a partir de um script de shell com alguma configuração necessária para que a entrada não seja perdida quando o diálogo é invocado pelo apt?

Este problema é comum ao Debian, Ubuntu e Linux Mint.

    
por J G Miller 23.01.2017 / 03:54

1 resposta

1

Todo o meu erro no meu script de shell.

Eu estava fazendo echo Y | apt upgrade , o que obviamente causa o problema de redirecionamento quando o diálogo é chamado.

Eu deveria estar fazendo apt upgrade -y ou wajig upgrade -y .

Quando tentei pela primeira vez apt -y upgrade , estava reclamando que a sintaxe estava errada. por isso recorri a esse mau truque que eu havia esquecido de colocar no lugar.

Permita que outras pessoas tomem nota para evitar problemas como esses.

    
por 23.01.2017 / 04:34