apt vs código de erro do apt-get

0

Coisa estranha que tenho aqui, quando apt está bloqueado por alguma coisa. Respectivamente, os códigos de erro não correspondem. apt update parece sempre retornar sucesso 0 , enquanto apt-get update retorna um código de erro adequado.

vlastimil@vb-nb-mint ~/Development/bash $ sudo apt-get update
Reading package lists... Done
E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/

vlastimil@vb-nb-mint ~/Development/bash $ echo $?
100

vlastimil@vb-nb-mint ~/Development/bash $ sudo apt update
Reading package lists... Done
E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/

vlastimil@vb-nb-mint ~/Development/bash $ echo $?
0

localização do apt :

vlastimil@vb-nb-mint ~/Development/bash $ which apt
/usr/local/bin/apt

versão de apt :

vlastimil@vb-nb-mint ~/Development/bash $ apt-show-versions apt
apt:amd64/xenial-updates 1.2.12~ubuntu16.04.1 uptodate

Eu queria originalmente usar apt para o script de atualização manual, mas isso muda a situação. Alguém entende códigos de erro e tal para me ajudar com isso?

    
por Vlastimil 13.11.2016 / 18:50

1 resposta

1

Isso é aparentemente intencional, veja # 778357 : um código de saída 0 indica sucesso ou um erro transitório, qualquer outra coisa indica um erro permanente.

Conforme indicado na página de manual apt :

SCRIPT USAGE AND DIFFERENCES FROM OTHER APT TOOLS

The apt(8) commandline is designed as an end-user tool and it may change behavior between versions. While it tries not to break backward compatibility this is not guaranteed either if a change seems beneficial for interactive use.

All features of apt(8) are available in dedicated APT tools like apt-get(8) and apt-cache(8) as well. apt(8) just changes the default value of some options (see apt.conf(5) and specifically the Binary scope). So you should prefer using these commands (potentially with some additional options enabled) in your scripts as they keep backward compatibility as much as possible.

Portanto, você não deve usar apt em scripts.

(É estranho que você tenha apt em /usr/local/bin ; já que você tem um pacote apt atualizado instalado, você provavelmente já o tem em /usr/bin !)

    
por 13.11.2016 / 19:50