web-dev-qa-db-ja.com

Zypper:リポジトリにないインストール済みパッケージを一覧表示する方法

パッケージ管理にZypperを使用しているシステム(私の場合はopenSuse)で、現在有効になっているリポジトリに関連付けられていない、インストールされているすべてのパッケージのリストを取得するにはどうすればよいですか?

実際の問題:ディストリビューションをアップグレードするとき(たとえば、openSuse 12.1から12.2に)、有効にしたすべての非標準リポジトリを無効にします。多くの場合、特定のツールの新しいバージョンを取得するためにそれらを追加しただけですが、その新しいバージョンはデフォルトで更新されたディストリビューションに含まれています。リポジトリから追加のパッケージがインストールされることもありましたが、それらを検出する方法がわかりません。システムは機能しますが、アップグレード後に提供リポジトリを削除したため、これらのパッケージは更新されません。

4
David B.

それは、ジッパーの問い合わせをいじり回すことについて少しです。

1)非opensuse-distribution-repositoriesからのインストール済みパッケージを検索します。

zypper search -s | grep "i |" | grep -vi "| patch" | grep -vi "| opensuse" > list1.txt

2)opensuseリポジトリから入手できるパッケージを検索します(インストールされているかどうかに関係なく)。

zypper search -s | grep "v |" | grep -vi "| patch" | grep -i "| opensuse" > list2.txt

3)list1から、list2に表されていないパッケージを特定します。

cat list1.txt | cut -d " " -f3 | cut -d " " -f1 | while read line
do
    if [ "$(cat list2.txt | grep -i $line)" = "" ]; then
        echo "$line"
    fi
done

これで問題が解決するはずです(openSUSE 11.3でテスト済み)。

3
s-m-e

オプションpaの方がおそらく適切です。

zypper pa -i

インストールされているすべてのパッケージと、それらの使用可能なバージョンおよびリポジトリを一覧表示します。 -rフラグが付いた特定のリポジトリに属する​​パッケージのみを一覧表示するように選択できます。

zypper pa -i -r openSUSE-12.1

そこから、@ ernestophelesによって提案された戦略を使用して、ニーズに一致する戦略を見つけることができます。

1
Chris Maes