特定のArchパッケージのみを更新

特定のArchパッケージのみを更新

パックマンを使用して一部の特定のパッケージをどのように更新できますか?

たとえば、py.+パッケージ(regex構文を使用)のみを次のように更新するにはどうすればよいですか?

$ sudo pacman -S 'py.+' 
error: target not found: py.+

動作しません
。助けてください。よろしくお願いします。

答え1

Arch Linuxでは一部のアップグレードはサポートされていません;常にシステム全体をすぐにアップグレードする必要があり()、pacman -Syu新しいパッケージがインストールされたら()。次のバージョンがインストールされます。pacman -Syu package
pacman -S packagepackage現在、同期データベースにインストールされているバージョンを再インストールできます。
pacman -Sy次に、同期データベースを更新し、最新バージョンをインストールします。pacman -S packagepackage そしてその依存性、後者の以前のバージョンに依存する他のインストールされたパッケージが破損する可能性があります。
上記のWikiページに記載されているように、pacman -Syuw以下も解決策ではありません。pacman -S package

つまり、これに基づいてアーチスウィキpacmanでパッケージリストを引数として提供する一般的な方法は、別のインスタンスを使用してパッケージリストをpacman生成することです。たとえば、インストールされているパッケージのリストの詳細を名前でインポートするにはまたは説明1はpy(だけでなく)で始まり、py関連のない項目をフィルタリングします。

pacman -Qsq '^py[^ ]+$' | xargs pacman -Qnq | xargs -o pacman -Si

ここでは、xargs「パラメータのリストが長すぎます」エラーを防ぐために使用されます。

パッケージ名を処理するときは、スペース、引用符、ワイルドカード、またはその他の珍しい文字が含まれていないと仮定するのは安全です。そうでなければ、引用されていないコマンドの置き換えはおそらく悪い考えです2。IFSパッケージ名に表示される文字が含まれていないことを確認してください。

ユーザーの対話が必要なコマンドを実行するときに必要な標準入力を再度開き、実行できるようにコマンドに指示する非標準xargsオプション(通常はGNU実装がデフォルトで提供されているArch Linuxで利用可能)この例では実際に必要です。-oxargs/dev/ttypacman

または、検索で返されるパッケージの数が少ないと確信している場合は、入れ子になったコマンド置換を使用できます。

pacman -Si $(pacman -Qnq $(pacman -Qsq '^py[^ ]+$'))

1正規表現検索を実行するには、他のユーティリティが必要な場合があります。名前たとえばpacsiftパシリス) またはexpacpacman検索オプションはパッケージの「提供」フィールドもチェックします。

2参照いつ二重引用符が必要ですか?スペースやその他の特殊文字が原因でシェルスクリプトが停止するのはなぜですか?そしてbash / POSIXシェルで変数を引用することを忘れてしまうセキュリティリスク

答え2

サポートされます。 --ignore package1,package2 を使用し、すべてを無視できます。

したがって sudo または doas pacman -Syu --ignore vim,firefox,linux

関連情報