Estou aprendendo a interface CLI da Advanced Packaging Tool. Desde a saída de apt(8)
quando o stdout não é um terminal, ele não é adequado para "scripts que esperam uma interface de programação estável", então estou analisando apt-get(8)
.
Uma diferença entre apt update
e apt-get update
é que esta última está faltando uma linha final após todo o cache ter sido atualizado:
8 packages can be upgraded. Run 'apt list --upgradable' to see them.
Quero saber como é possível exibir essa linha exata apt-get(8)
.
apt
(Advanced Packaging Tool) eapt-get
são coisas diferentes. Eles foram projetados para funcionar de maneira diferente do que eu entendi. Se alguém lhe der o que deseja, talvez crie o hábito de usar esse comando.Respostas:
man apt-get
mostra:Então, se você apenas fizer:
apt-get upgrade --dry-run
ele produzirá:
fonte
man 8 apt-get
e encontrei essa opção, mas a saída era diferenteapt
.apt
é realmente um invólucro programáticoapt-get
e é por isso que o aviso existe.apt
mostra8 packages can be upgraded. Run 'apt list --upgradable' to see them.
, enquanto sua resposta é mostrada4 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
apt
não garantirá esse texto e eles podem nem garantir esse número.apt-get
no entanto, possui um requisito estrito de saída, porque é usado por outros softwares (como UIs e daemons) para processá-lo de várias maneiras. Portanto, você pode alterar seu código para aceitarapt-get
a saída ou pode| sed 's/to upgrade/packages can be upgraded/g'
, por exemplo (e arriscar sua quebra de código posteriormente).Achando que você precisa lidar com o número de atualizações disponíveis, aqui está uma sugestão:
Não há necessidade de sudo
A saída é fácil de trabalhar com
Mais opções:
fonte
motd
no login SSH?De
man 8 apt
:Então eu passei
/usr/share/doc/apt/examples/configure-index.gz
(usandozcat(1)
para mostrar o conteúdo do texto) e notei esta opção:Então, elaborei o seguinte comando que fez exatamente o que eu queria:
Testado para trabalhar em Xenial e Biônico.
fonte