リポジトリにないインストール済みパッケージをyumとしてリストする方法

リポジトリにないインストール済みパッケージをyumとしてリストする方法

私はOracle Linux / RHELを実行しており、名前/スキーマがアクティブリポジトリにないインストール済みパッケージのリストを取得しようとしています。これらのパッケージは実行されるyum list installedと赤で表示されますが、これらのパッケージだけを一覧表示するyumコマンドはありますか?

答え1

これは厳しくOL7の場合:

sudo yum list installed | egrep -v "@ol7|@anaconda"

以下では、すべてのリポジトリを表示できます。

sudo yum list installed | grep -v "Loaded plugins" | awk '{print $3}' | sort -u

答え2

私はあなたの「質問」に簡単に答えることができるかもしれません。ポジティブリポジトリ」を使用していますが、リポジトリを介してインストールされていないすべてのパッケージを見つけることができます。

awk 'NR <=3 { next; } { while (NF < 3) 
  { getline more; $0=$0 more; } }  
  $3 !~ /^@/ {  print }' \
 <( yum list installed )

現在含まれていないパッケージに興味がある場合有効リポジトリが有効になっている場合、またはシステムで認識されなくなったリポジトリによってインストールされている可能性がある場合は、次のことを実行できます。

awk 'FNR==NR && FNR > 1 { sub(/^!/,"",$1); repos["@" $1]=1; next; } 
  FNR <=3 { next; } { while (NF < 3) { getline more; $0=$0 more; } } 
  !($3 in repos) {  print }' \
<( yum repolist enabled ; echo anaconda ) \
<( yum list installed )

awkに初めてアクセスする人にとって、これは最初のFNR==NR入力ファイル/ストリームを残りの入力から分離するイディオムです。このセクションでは、次の注意事項に従ってリポジトリ名をハッシュとしてロードします。

  • !で始まるリポジトリ名を含み、!で始まるリポジトリ名を除外します。
  • インストールされているリストの最終フィールドと比較すると、より速い検索のために@名前の前に追加されます。

これで複雑に見える中間プログラムは、yumが自動的に分割される行を再構築します。入力行に列/フィールドが3つ未満の場合は、次の行が追加されます。

最後のプログラムは、3番目のフィールドが@で始まるかどうかをテストするか、そのフィールドがリポジトリリストにあるかどうかをテストします。

注:yum repolist enabled ; echo anacondaos-install中にインストールされたパッケージも除外されるように、repolistに「anaconda」を追加します。

関連情報