パックマンを使用して一部の特定のパッケージをどのように更新できますか?
たとえば、py.+パッケージ(regex構文を使用)のみを次のように更新するにはどうすればよいですか?
$ sudo pacman -S 'py.+'
error: target not found: py.+
動作しません
。助けてください。よろしくお願いします。
答え1
Arch Linuxでは一部のアップグレードはサポートされていません;常にシステム全体をすぐにアップグレードする必要があり()、pacman -Syu
新しいパッケージがインストールされたら()。次のバージョンがインストールされます。pacman -Syu package
pacman -S package
package
現在、同期データベースにインストールされているバージョンを再インストールできます。
pacman -Sy
次に、同期データベースを更新し、最新バージョンをインストールします。pacman -S package
package
そしてその依存性、後者の以前のバージョンに依存する他のインストールされたパッケージが破損する可能性があります。
上記の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で利用可能)この例では実際に必要です。-o
xargs
/dev/tty
pacman
または、検索で返されるパッケージの数が少ないと確信している場合は、入れ子になったコマンド置換を使用できます。
pacman -Si $(pacman -Qnq $(pacman -Qsq '^py[^ ]+$'))
1正規表現検索を実行するには、他のユーティリティが必要な場合があります。名前たとえばpacsift
(パシリス) またはexpac
。pacman
検索オプションはパッケージの「提供」フィールドもチェックします。
2参照いつ二重引用符が必要ですか?、スペースやその他の特殊文字が原因でシェルスクリプトが停止するのはなぜですか?そしてbash / POSIXシェルで変数を引用することを忘れてしまうセキュリティリスク。
答え2
サポートされます。 --ignore package1,package2 を使用し、すべてを無視できます。
したがって sudo または doas pacman -Syu --ignore vim,firefox,linux