I know that pacman -Su upgrades all packages. But how can I get just the list of packages that need upgrading?


Looking at the man page something like

pacman -Syu

to sync the database up to the latest version followed by

pacman -Qu


-u, --upgrades

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

local system. (Only package versions are used to find outdated packages, replacements are not checked here.) This option works best if the sync database is refreshed using -Sy.

  • 1
    DANGER: The documentation says "never run pacman -Sy" (source: wiki.archlinux.org/index.php/…) – blippy May 3 '16 at 14:34
  • 1
    @blippy That document didn't exist when this answer was written, it's earliest revision is some monhs later. Furthermore, the statement to which you refer was not added to the document until (Oct 23 2015)[wiki.archlinux.org/…) over 4 years later. Rather than being so melodramatic you should have just edited the answer and referenced the document as the reason for your change request Also note that even now the man page makes no such warnings. – user9517 May 3 '16 at 17:05
  • 2
    just want to clarify too - the reason for not running pacman -Sy is to avoid installing packages from different package database updates. e.g. pacman -S <something> may give you a different package and dependencies than pacman -Sy && pacman -S <something>. From their documentation however, it seems pacman -Sy && pacman -Qu is the correct answer to OP's question. Just make sure you eventually run pacman -Su prior to installing any packages. – aaaaaa Mar 6 '18 at 19:22
  • 1
    I just want to clarify that the article is not saying pacman -Sy in-and-of-itself is bad. It doesn't even say it's "bad" or "dangerous". It is merely stating that a partial upgrade is not supported and that you should avoid it. In other words, running pacman -Sy and then running pacman -S <some package with dependencies> has the potential to break something else that has the same dependencies. Running something like pacman -Sy && pacman -S man-pages to only get the latest man-pages would be perfectly fine (man-pages has no dependencies, and is not required by any other packages). – Drew Chapin Sep 9 '18 at 22:33
  • It's 5 days later when you've forgotten you ran pacman -Sy and run pacman -S nvidia that you're likely to break something. – Drew Chapin Sep 9 '18 at 22:35

The bash script checkupdates, included with the pacman package, provides a safe way to check for upgrades to installed packages without running a system update at the same time.

System Maintenance

| improve this answer | |
  • 1
    This should be the correct answer – Nitz Apr 25 at 10:01

As @Panagiotis mentioned, checkupdates provides a way to do this without requiring root or messing up your /var/lib/pacman database. Here's a minimal version:

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

It works by:

  1. Creating a temporary folder for your database.
  2. Symlinking your /var/lib/pacman/local.
  3. Running pacman -Sy on your temporary folder.
  4. Querying via pacman -Qu on your temporary folder.
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.