Arch Linuxでアップグレードが必要なパッケージを特定する方法は?


8

私はそれがpacman -Suすべてのパッケージをアップグレードすることを知っています。しかし、どうすればアップグレードが必要なパッケージのリストだけを取得できますか?

回答:


11

次のようなmanページを見る

pacman -Syu

データベースを最新バージョンに同期し、その後に

pacman -Qu

-u、-upgrades

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/…]までドキュメントに追加されませんでした。それほどメロドラマ的ではなく、回答を編集して、変更要求の理由としてドキュメントを参照するだけで済みます。 また、manページではそのような警告は
user9517

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最新のマンページのみを取得するようなものを実行することは完全にうまくいきます(マンページには依存関係がなく、他のパッケージでは必要ありません)。
Drew Chapin

何かを壊す可能性が高いのはpacman -Sy、実行と実行pacman -S nvidiaを忘れた5日後です。
Drew Chapin


0

@Panagiotisが述べたように、checkupdatesrootを必要とせずに、または/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一時フォルダーでクエリを実行します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.