OpenSUSE:リポジトリなしですべてのパッケージを探す

OpenSUSE:リポジトリなしですべてのパッケージを探す

すべてのリポジトリを12.1ではなく12.2ターゲットに変更して、OpenSUSE 12.1からOpenSUSE 12.2にアップグレードしました。これでアップグレードしたので、以下を含むリポジトリ*のない複数のパッケージを見つけました。YaSTソフトウェアマネージャバージョン列は赤いテキストで表示されます。スクロールして 1 つずつ削除することもできますが、チップ検索(zypper se)またはソフトウェアマネージャ同時にすべてターゲティング/選択する方法はありますか?

* - これらのパッケージ(OpenSUSE 12.1など)のリポジトリがありましたが、このリポジトリを12.2リポジトリに置き換えたため、リポジトリ接続がなくなりました。 12.2リポジトリにはシステムを実行するために必要なすべてが含まれているため、問題は発生しないでください。

答え1

rpm -qa --qf '%-30{DISTRIBUTION} %{NAME}\n'| sort

パッケージで使用されるすべてのリポジトリのリストを提供します。望ましくないものを見つけることは、読者の練習問題として残されます。:-)

答え2

使用マーティンの答え/guidance、私は複数のパッケージを削除するためのクイックスクリプトを書いていますzremove.sh

#!/bin/sh

pkgs=""
while read line
do
        pkgs="$pkgs $line"
done

zypper rm $pkgs

私のすべての「ストアなし」パッケージにディストリビューションがあることを確認しました。SUSE 12.1を開く内部に回転速度照会するときは、次のコマンドを実行してすべての項目を見つけて削除します。

rpm -qa --qf '%{DISTRIBUTION} : %{NAME}\n' | grep "openSUSE 12.1 :" | sed 's/openSUSE 12.1 : //' | sudo zremove.sh

これは通常、バックアップストアなしですべてのパッケージを見つける方法に関する質問には答えませんが、元の問題を解決します。

答え3

Repository: @Systemリポジトリが「欠落している」パッケージまたは.rpmファイルから直接インストールされたパッケージは、操作を実行すると表示されますzypper info。したがって、理論的にはを使用して見つけることができるはずですzypper packages --repo @System --installed-onlyが、libzyppにはまだありません(openSUSE バグ 770239 - "zypper pa" は @System repo をサポートしていません。)。

回避策としてインストールされている各パッケージに対してこれを行い、zypper infoリポジトリを所有するユーザーをフィルタリングする必要があります@System

rpm -qa --queryformat="%{n}\n" | while read p; do zypper info $p | grep -q '^Repository: @System' && echo $p; done

かなり遅いですが、作業は完了です。

答え4

次のコマンドは、参照されたリポジトリーがなくなったか、または以下を介して直接インストールされたrpmすべてのインストール済みパッケージをリストします。

LC_ALL=C zypper pa --installed | awk '$0 ~ /^i/ && $3 == "@System" {print $5}'

関連情報