私はこの質問に類似した何かを探しています: Zypper:特定のリポジトリからすべてのパッケージを表示するにはどうすればよいですか?
私はUbuntuを使用しているため、aptitudeベースのソリューションが必要です。特定のリポジトリからinstalledパッケージのリストを取得するにはどうすればよいですか?
Aptitudeを使用して、安定版ブランチの外にあるインストール済みパッケージを探すには、以下を使用できます。
aptitude search "?narrow(?installed,?not(?archive(stable)))"
バージョンとパッケージ名(および説明の代わり)を表示するには、次のように、フォーマットオプション(略して-F
)を指定してコマンドを使用できます。
aptitude search -F "%p %V %v" "?narrow(?installed,?not(?archive(stable)))"
その他のフォーマットについては、 manpage をご覧ください(ここに avail。options を含むドキュメント)。
たとえば、DebianでSqueezeの外部にパッケージをインストールした場合(たとえば、apt-get install -t sid package-name
を実行して)機能します。
インストールされたパッケージがapt-cache policy
からどこから来ているかを確認できます。使用方法は次のとおりです。
apt-cache policy <package-name>
たとえば、私のpython-numpyパッケージは次の出力をレンダリングします。
$ LANG=C apt-cache policy python-numpy
python-numpy:
Installed: 1:1.6.2-1
Candidate: 1:1.6.2-1.2
Version table:
1:1.7.0-1 0
1 http://ftp.es.debian.org/debian/ experimental/main AMD64 Packages
1:1.6.2-1.2 0
500 http://ftp.es.debian.org/debian/ sid/main AMD64 Packages
*** 1:1.6.2-1 0
100 /var/lib/dpkg/status
1:1.4.1-5 0
990 http://ftp.es.debian.org/debian/ squeeze/main AMD64 Packages
990 http://ftp.de.debian.org/debian/ squeeze/main AMD64 Packages
つまり、私は現在のsid/mainのブランチの1つ後ろのバージョンであるため、古いsidバージョンがインストールされています。まだ1.4.1-5
で安定しているので、_1.6.2-1
にいます。
提出時にこのパッケージはすでに更新されています:)
Aptitudeの情報ページと数十回の試行を読んだ後、ようやくこれを取得しました:
_aptitude search '?narrow(?installed,?not(?archive(testing)) ?archive(unstable))'
_
または(同等):
_aptitude search '~S ~i (!~Atesting ~Aunstable)'
_
anyリポジトリの不安定なアーカイブからインストールされたパッケージを検索します。デフォルトのアーカイブからパッケージを除外する必要があります(上記の例でテストしています)。
Www.debian-multimedia.org/unstableからインストールされたパッケージをフィルタリングしたい場合:
_aptitude search '~S ~i (!~Atesting ~Aunstable ?origin("Unofficial Multimedia Packages"))
_
Edit:「Archive」、「Origin」などは、リポジトリのRelease
ファイルから差し引かれます。残念ながら、すべてのツールがこれらのすべての行を見ることができるわけではなく、それらには異なる構文を使用しています。これらのファイルは_/var/lib/apt/lists/*Release
_として見つけることができます。または、単に_apt-cache policy
_と入力して概要を表示します。 apt-cacheは出力形式を変更しました。それ以降のバージョンではapt_preferencesスタイルを使用します。
Suite:
_または_Archive:
_(旧名!)?archive(___)
または_~A___
_%t
_release a=___
_natty-backports
_、_trusty-security
_、stable
Origin:
_ ?origin(___)
または_~O___
_release o=___
_Canonical
、_Google, Inc.
_、_LP-PPA-dockbar-main
_、Ubuntu
Originタグ( o = Debian)現在のリポジトリごとに:
apt-cache policy | sed -n 's/.*o=\([^,]\+\).*/\1/p' | uniq
次に、特定のOriginから(またはからではなく)パッケージを検索します。
aptitude search "?installed?origin(Debian)"
aptitude search "?installed?not(?origin(Debian))"
これは ない 各リポジトリに依存して独自のOrigin情報を提供するため、セキュリティ監査に適していますが、複数のリポジトリに存在するパッケージのOriginのトラブルシューティングに役立つ場合があります。
完全を期すために:Ubuntuシステムでは、このタスクにもSynapticを使用できます。左側の列では、パッケージをその起源でフィルタリングできます。
私はこれを見つけました:
aptitude search "?origin (<repository>) ?installed"
「aptitude search」 here でサポートされている検索語句のリストを見つけることもできます。
まず、/ var/lib/apt/listsで目的のリポジトリに適切なファイルを見つけます。プログラムでこれを行うことは可能であるはずですが、私はそうする必要はありませんでした。
例としてgoogle chromeを使用して、これを試してください:
SEARCH_PATTERN=dl.google.com_linux_chrome # adjust to suit your needs
for PKG in $( grep-dctrl -sPackage . /var/lib/apt/lists/${SEARCH_PATTERN}_*_Packages | sed 's/^Package: //' )
do
if dpkg -s "${PKG}" 2> /dev/null 1> /dev/null
then
echo ${PKG}
fi
done
そして私は出力を取得します:
google-chrome-stable
dpkg -sは、パッケージがインストールされている場合は0を返し、それ以外の場合はゼロ以外を返します。将来の参考のために、の出力
grep-dctrl -sPackage . /var/lib/apt/lists/${SEARCH_PATTERN}_*_Packages
だった
Package: google-chrome-beta
Package: google-chrome-stable
Package: google-chrome-unstable
?archive()
のパラメーターは正規表現であるため、他の回答は実際には正しくありません。したがって、?archive(stable)
はstable
とunstable
の両方に一致します。 stable
だけを除外するには、正規表現パターンをアンカーする必要があります。
_aptitude search -F "%p %V %v %t" '?any-version(?installed ?not(?archive("^stable$")))'
_
複数のリポジトリを除外するには:
_aptitude search -F "%p %V %v %t" '?any-version(?installed ?not(?archive("^(xenial|xenial-updates)$")))'
_
また、一部のパッケージは複数のリポジトリに属していることに注意してください。 _xenial-security,xenial-updates
_。 ?archive()
は、各リポジトリに対してregexパターンを個別に評価するため、?archive("^xenial-updates$")
は、他のリポジトリにも属している場合でも、_xenial-updates
_に属するパッケージに一致します。