dpkg-divert と sed のこれらのオプションは Nvidia パッケージ転送とどのような関係がありますか?

dpkg-divert と sed のこれらのオプションは Nvidia パッケージ転送とどのような関係がありますか?

最近、nvidiaパッケージの転送によっていくつかのエラーが発生したため、このコマンドを使用する必要がありましたが、どのように機能するのか正確にはわかりません。

LC_MESSAGES=C dpkg-divert --list '*nvidia-340*' | sed -nre 's/^diversion of (.*) to .*/\1/p' | xargs -rd'\n' -n1 -- sudo dpkg-divert --remove
sudo apt --fix-broken install

パイプ演算子がどのように動作するかを読んで知っていますが、LC_MESSAGESコマンドsedがこれらの特定のオプションとどのように機能するかはわかりません。

答え1

LC_MESSAGES=C dpkg-divert --list '*nvidia-340*'

英語で glob パターンに一致するすべての遷移を一覧表示するので、*nvidia-340*出力は「diversion of ... to ... by ...」形式になります。

sed -nre 's/^diversion of (.*) to .*/\1/p'

「diversion of」と「to」の間のテキストを抽出し、つまり転送されたファイルの名前。 ;自動パターン空間出力を無効にする-nreのと同じであるため、コマンドが要求しない限り何も出力されません(コマンドの最後を参照)。拡張正規表現を有効にして実行するスクリプトを導入します。正規表現では、行の先頭(スペースを含む)で「diversion of」を一致させ、任意の数の文字を一致させ、一致グループを作成します。これは、コマンド内のフルテキストのみを一致するグループの内容に置き換えるために使用されます(-n -r -e-npsed-r-e^diversion of(.*)to .*s\1つまり「diversion of」と「to」の間のテキスト)。コマンドが一致すると、p最終的にパターンスペースが印刷されます。s

xargs -rd'\n' -n1 -- sudo dpkg-divert --remove

sudo dpkg-divert --remove前のステップの各ファイル出力に対して実行し、その転送を削除します。

sudo apt --fix-broken install

破損した依存関係を修正してみてください。

関連情報