Comment déterminer quels packages doivent être mis à niveau dans Arch Linux?

8

Je sais que pacman -Sutous les packages sont mis à niveau. Mais comment puis-je obtenir uniquement la liste des packages qui nécessitent une mise à niveau?

Eugene Yarmash
la source

Réponses:

11

En regardant la page de manuel quelque chose comme

pacman -Syu

pour synchroniser la base de données jusqu'à la dernière version suivie de

pacman -Qu

à

-u, --mises à niveau

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

système local. (Seules les versions de packages sont utilisées pour rechercher des packages obsolètes, les remplacements ne sont pas vérifiés ici.) Cette option fonctionne mieux si la base de données de synchronisation est actualisée à l'aide de -Sy.

Iain
la source
1
DANGER : La documentation dit "ne jamais courir pacman -Sy" (source: wiki.archlinux.org/index.php/… )
blippy
1
@blippy Ce document n'existait pas lorsque cette réponse a été écrite, sa première révision est quelques mois plus tard . De plus, la déclaration à laquelle vous faites référence n'a été ajoutée au document que le (23 octobre 2015) [ wiki.archlinux.org/… ) plus de 4 ans plus tard. Plutôt que d'être si mélodramatique, vous devriez juste avoir édité la réponse et référencé le document comme la raison de votre demande de changement . Notez également que même maintenant la page de manuel ne fait pas de tels avertissements.
user9517
2
je veux juste clarifier aussi - la raison de ne pas fonctionner pacman -Syest d'éviter d'installer des packages à partir de différentes mises à jour de base de données de packages. par exemple, pacman -S <something>peut vous donner un package et des dépendances différents de pacman -Sy && pacman -S <something>. D'après leur documentation cependant, il semble que ce pacman -Sy && pacman -Qusoit la bonne réponse à la question d'OP. Assurez-vous simplement que vous exécutez éventuellement pacman -Suavant d'installer des packages.
aaaaaa
1
Je veux juste préciser que l'article ne dit pas pacman -Syen soi que c'est mauvais. Il ne dit même pas que c'est "mauvais" ou "dangereux". Il indique simplement qu'une mise à niveau partielle n'est pas prise en charge et que vous devez l'éviter. En d'autres termes, exécuter pacman -Sy puis exécuter pacman -S <some package with dependencies>a le potentiel de casser quelque chose d'autre qui a les mêmes dépendances. Exécuter quelque chose comme pacman -Sy && pacman -S man-pagespour obtenir uniquement les dernières pages de manuel serait parfaitement correct (les pages de manuel n'ont pas de dépendances et ne sont requises par aucun autre package).
Drew Chapin
C'est 5 jours plus tard que vous avez oublié que vous couriez pacman -Syet couriez pacman -S nvidiaque vous risqueriez de casser quelque chose.
Drew Chapin
7
checkupdates

Les mises à jour du script bash, incluses avec le package pacman, fournissent un moyen sûr de vérifier les mises à niveau des packages installés sans exécuter une mise à jour du système en même temps.

Entretien du système

Panagiotis Dimopoulos
la source
Cela devrait être la bonne réponse
Nitz
0

Comme l'a mentionné @Panagiotis, checkupdatesfournit un moyen de le faire sans avoir besoin de rooter ou gâcher votre /var/lib/pacmanbase de données. Voici une version minimale:

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

Il fonctionne par:

  1. Création d'un dossier temporaire pour votre base de données.
  2. Associer votre /var/lib/pacman/local.
  3. Exécution pacman -Sysur votre dossier temporaire.
  4. Interrogation via pacman -Qusur votre dossier temporaire.
Mateen Ulhaq
la source