如何确定Arch Linux中需要升级的软件包?


Answers:


11

看着手册页

pacman -Syu

将数据库同步到最新版本,然后再同步

pacman -Qu

-u,-升级

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

本地系统。(仅使用软件包版本查找过时的软件包,此处不检查替换版本。)如果使用-Sy刷新了同步数据库,则此选项最有效。


1
危险:文档中说“永不运行pacman -Sy”(来源:wiki.archlinux.org/index.php/…
blippy

1
@blippy撰写此答案时,该文档不存在,最早的修订版本是在稍后的一个月。此外,直到4年后(2015年10月23日)[ wiki.archlinux.org/… ] ,您所引用的声明才添加到文档中。您应该只是编辑答案并引用文档作为进行更改请求的理由,而不是那么乐于助人。 还要注意,即使现​​在手册页也没有发出此类警告。
user9517's

2
我也想澄清一下- 不运行的原因pacman -Sy是避免安装来自不同软件包数据库更新的软件包。例如,pacman -S <something>可能会给您不同于的包和依赖项pacman -Sy && pacman -S <something>。然而,从他们的文档来看,这似乎pacman -Sy && pacman -Qu是对OP问题的正确答案。只需确保最终运行pacman -Su即可安装任何软件包。
aaaaaa

1
我只是想澄清一下,这篇文章并不是说“ pacman -Sy内在”是不好的。它甚至没有说这是“坏”或“危险”的。仅说明不支持部分升级,因此应避免这样做。换句话说,先运行pacman -Sy 运行pacman -S <some package with dependencies>有可能破坏其他具有相同依赖项的东西。运行pacman -Sy && pacman -S man-pages仅获取最新手册页之类的东西就很好了(手册页没有依赖性,任何其他软件包都不需要)。
德鲁·查平

5天后,当您忘记跑步pacman -Sy和跑步时pacman -S nvidia,很可能会破坏某些东西。
德鲁·查平


0

正如@Panagiotis提到的那样,checkupdates它提供了一种无需root或弄乱/var/lib/pacman数据库的方法。这是一个最低版本:

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

它的工作原理是:

  1. 为您的数据库创建一个临时文件夹。
  2. 链接到您的/var/lib/pacman/local
  3. pacman -Sy在您的临时文件夹上运行。
  4. 通过查询pacman -Qu您的临时文件夹。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.