私はそれがpacman -Su
すべてのパッケージをアップグレードすることを知っています。しかし、どうすればアップグレードが必要なパッケージのリストだけを取得できますか?
私はそれがpacman -Su
すべてのパッケージをアップグレードすることを知っています。しかし、どうすればアップグレードが必要なパッケージのリストだけを取得できますか?
回答:
次のようなmanページを見る
pacman -Syu
データベースを最新バージョンに同期し、その後に
pacman -Qu
に
-u、-upgrades
Restrict or filter output to packages that are out of date on the
ローカルシステム。(パッケージのバージョンのみが古いパッケージの検索に使用され、置換はここではチェックされません。)このオプションは、-Syを使用して同期データベースを更新する場合に最適に機能します。
pacman -Sy
それ自体が悪いと言っているのではないことを明確にしたいだけです。それが「悪い」または「危険」であるとさえ言っていません。部分的なアップグレードはサポートされておらず、回避する必要があることを示しているだけです。つまり、実行pacman -Sy
してから実行pacman -S <some package with dependencies>
すると、同じ依存関係を持つ他の何かを壊す可能性があります。pacman -Sy && pacman -S man-pages
最新のマンページのみを取得するようなものを実行することは完全にうまくいきます(マンページには依存関係がなく、他のパッケージでは必要ありません)。
pacman -Sy
、実行と実行pacman -S nvidia
を忘れた5日後です。
checkupdates
pacmanパッケージに含まれているbashスクリプトcheckupdatesは、システムアップデートを同時に実行せずに、インストールされたパッケージへのアップグレードを安全にチェックする方法を提供します。
@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
それはによって働きます:
/var/lib/pacman/local
。pacman -Sy
一時フォルダーで実行しています。pacman -Qu
一時フォルダーでクエリを実行します。
pacman -Sy
」と書かれています(ソース:wiki.archlinux.org/index.php/…)