Faça com que “apt-get update” mostre a saída exata como `apt update`

8

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 updatee 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).

iBug
fonte
Tanto quanto eu sabia, apt(Advanced Packaging Tool) e apt-getsã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.
Brenden McFarling

Respostas:

9

man apt-get mostra:

   -s, --simulate, --just-print, --dry-run, --recon, --no-act
       No action; perform a simulation of events that would occur based on
       the current system state but do not actually change the system.
       Locking will be disabled (Debug::NoLocking) so the system state
       could change while apt-get is running. Simulations can also be
       executed by non-root users which might not have read access to all
       apt configuration distorting the simulation. A notice expressing
       this warning is also shown by default for non-root users
       (APT::Get::Show-User-Simulation-Note). Configuration Item:
       APT::Get::Simulate.

Então, se você apenas fizer:

apt-get upgrade --dry-run

ele produzirá:

...
4 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
...
restabelecer Monica-dor duh
fonte
Sim, eu procurei man 8 apt-gete encontrei essa opção, mas a saída era diferente apt.
iBug 25/03/19
Diferente como? Acabei de verificar no meu sistema e é idêntico. Eu pensei que era idêntico porque apté realmente um invólucro programático apt-gete é por isso que o aviso existe.
tu restabelece Monica-dor duh
aptmostra 8 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.
iBug 25/03/19
1
Sim, é porque você tem 8 para atualizar onde eu tenho 4. Ou você está se referindo ao texto ser diferente?
tu Reinstala Monica-dor duh
4
Sim, é exatamente disso que trata o aviso. aptnão garantirá esse texto e eles podem nem garantir esse número. apt-getno 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 aceitar apt-geta saída ou pode | sed 's/to upgrade/packages can be upgraded/g', por exemplo (e arriscar sua quebra de código posteriormente).
tu restabelece Monica-dor duh
4

Achando que você precisa lidar com o número de atualizações disponíveis, aqui está uma sugestão:

# With no option, returns two numbers, no CR nor LF
/usr/lib/update-notifier/apt-check

# With --human-readable, returns numbers, locale LANG text & CR/LF
/usr/lib/update-notifier/apt-check  --human-readable

Não há necessidade de sudo
A saída é fácil de trabalhar com

Mais opções:

> /usr/lib/update-notifier/apt-check  --help
Usage: apt-check [options]

Options:
  -h, --help            show this help message and exit
  -p, --package-names   Show the packages that are going to be
                        installed/upgraded
  --human-readable      Show human readable output on stdout
  --security-updates-unattended
                        Return the time in days when security updates are
                        installed unattended (0 means disabled)
cmak.fr
fonte
É exatamente isso que é usado para gerar motdno login SSH?
iBug 25/03/19
sim parece que a mesma saída, mas eu não sei como é que motd
cmak.fr
2

De man 8 apt:

... ativa algumas opções ...

Então eu passei /usr/share/doc/apt/examples/configure-index.gz(usando zcat(1)para mostrar o conteúdo do texto) e notei esta opção:

apt::cmd::show-update-stats

Então, elaborei o seguinte comando que fez exatamente o que eu queria:

# apt-get -o apt::cmd::show-update-stats=true update

Testado para trabalhar em Xenial e Biônico.

iBug
fonte