Como determinar quais pacotes precisam ser atualizados no Arch Linux?

8

Eu sei que pacman -Suatualiza todos os pacotes. Mas como posso obter apenas a lista de pacotes que precisam de atualização?

Eugene Yarmash
fonte

Respostas:

11

Olhando para a página de manual, algo como

pacman -Syu

para sincronizar o banco de dados até a versão mais recente, seguida por

pacman -Qu

para

-u, --upgrades

Restrict or filter output to packages that are out of date on the

sistema local. (Somente versões de pacote são usadas para encontrar pacotes desatualizados, as substituições não são verificadas aqui.) Essa opção funciona melhor se o banco de dados de sincronização for atualizado usando -Sy.

Iain
fonte
1
PERIGO : A documentação diz "nunca execute pacman -Sy" (fonte: wiki.archlinux.org/index.php/… )
blippy
1
@ blippy Esse documento não existia quando esta resposta foi escrita, é a primeira revisão depois de alguns meses . Além disso, a declaração a que você se refere não foi adicionada ao documento até (23 de outubro de 2015) [ wiki.archlinux.org/… ) mais de quatro anos depois. Em vez de ser tão melodramático, você deveria apenas ter editado a resposta e referenciado o documento como o motivo da sua solicitação de mudança. Observe também que mesmo agora a página de manual não faz esses avisos.
User9517 3/16
2
só quero esclarecer também - o motivo da não execução pacman -Syé evitar a instalação de pacotes de diferentes atualizações de banco de dados de pacotes. por exemplo, pacman -S <something>pode fornecer um pacote e dependências diferentes do que pacman -Sy && pacman -S <something>. Da documentação deles, no entanto, parece pacman -Sy && pacman -Quser a resposta correta para a pergunta do OP. Apenas certifique-se de executar eventualmente pacman -Suantes de instalar qualquer pacote.
Aaaaaa
1
Eu só quero esclarecer que o artigo não está dizendo que pacman -Sypor si só é ruim. Nem diz que é "ruim" ou "perigoso". É apenas afirmar que uma atualização parcial não é suportada e que você deve evitá-la. Em outras palavras, executar pacman -Sy e, em seguida, executar pacman -S <some package with dependencies>tem o potencial de quebrar outra coisa que tem as mesmas dependências. Executar algo como pacman -Sy && pacman -S man-pagesapenas obter as últimas páginas de manual seria perfeitamente adequado (as páginas de manual não têm dependências e não são exigidas por outros pacotes).
Desenhou Chapin
Cinco dias depois, quando você esqueceu que correu pacman -Sye corre, pacman -S nvidiaé provável que quebre algo.
Desenhou Chapin
7
checkupdates

As datas de verificação do script bash, incluídas no pacote pacman, fornecem uma maneira segura de verificar se há atualizações nos pacotes instalados sem executar uma atualização do sistema ao mesmo tempo.

Manutenção de sistema

Panagiotis Dimopoulos
fonte
Esta deve ser a resposta correta
Nitz 25/04
0

Como o @Panagiotis mencionado, checkupdatesfornece uma maneira de fazer isso sem a necessidade de root ou atrapalhar o seu /var/lib/pacmanbanco de dados. Aqui está uma versão mínima:

TMPPATH="${TMPDIR:-/tmp}/checkup-db-${USER}"
DBPATH="$(pacman-conf DBPath)"

mkdir -p "$TMPPATH"
ln -s "$DBPATH/local" "$TMPPATH" &>/dev/null
fakeroot -- pacman -Sy --dbpath "$TMPPATH" --logfile /dev/null &>/dev/null
pacman -Qu --dbpath "$TMPPATH" 2>/dev/null

Funciona por:

  1. Criando uma pasta temporária para o seu banco de dados.
  2. Ligando o seu /var/lib/pacman/local.
  3. Em execução pacman -Syna sua pasta temporária.
  4. Consultando via pacman -Quna sua pasta temporária.
Mateen Ulhaq
fonte