web-dev-qa-db-ja.com

コマンドラインからリポジトリセクションのすべてのパッケージのリストを取得するにはどうすればよいですか?

Synapticでは、パッケージをセクションごとにリストできます。たとえば、下の画像には、「アマチュア無線(宇宙)」セクションのすべてのパッケージがリストされています。

コマンドラインでこのようなリストを取得するにはどうすればよいですか(編集:パッケージの説明付き)?

生のリストが必要です。 aptitudeのような端末アプリケーションは実行しません。

synaptic

13

さて、出力のためにaptitudeを使いたくないと言いますが、あなたが好きなものを得るためにそれを修正できることを知っている必要があります:

aptitude -F'|%p|%d|' search '?section(hamradio)'

トリックは、出力形式を変更する-Fスイッチにあります。 %pはパッケージを意味します。また、パッケージにさまざまなアーキテクチャ(AMD64とi386など)がある場合に出力され、説明を出力する%dも出力します。たとえば、インストールされていないパッケージに対して、検索パターンをさらにパーソナライズできます。

aptitude -F'|%p|%d|' search '?section(hamradio) !~i'

~iはインストール済みを意味し、!はnotですので、「not(!)installed(〜i)」と読むか、アーキテクチャで利用できるものだけが必要な場合:

aptitude -F'|%p|%d|' search '?section(hamradio) ~r native'

~rは、パッケージのアーキテクチャに一致する?architecture()であり、dpkg --print-architectureと同等のシステムと同じアーキテクチャを持つもののみをリストするnativeです。

したがって、前の行は次のようにさらに簡潔に記述できます。

aptitude -F'|%p|%d|' search '~s hamradio ~r native'
5
Braiam

dctrl-toolsInstall dctrl-tools パッケージがインストールされています。 aptおよびdpkgパッケージリストを検索するための便利なコマンドを提供します。 aptでイ​​ンストール可能な特定のセクションからすべてのパッケージの完全な説明を取得するには、実行します

grep-aptavail -F Section hamradio

これにより、hamradioセクションにすべてのパッケージの完全なパッケージメタデータが表示されます。見たいのがパッケージ名だけなら、実行

grep-aptavail -n -F Section -s Package hamradio

システムがマルチアーチ用に設定されている場合、同じパッケージが複数のアーキテクチャ用に構築されていると、このリストに同じパッケージが複数回表示されることがあります。これをさらに改善するには、次のいずれかを使用します

grep-aptavail -n -F Section -s Package hamradio | sort | uniq

または

grep-aptavail -n -F Section -s Package hamradio | sort -u

パッケージリストをソートし、同じ名前の重複パッケージを削除します。

SynapticがGUIに表示する「人間が読める」名前とは異なるセクションの実際の名前を使用する必要があることに注意してください。たとえば、上記の検索では、Synapticに表示されている文字列「Amateur Ra​​dio」の代わりにセクション名hamradioが使用されます。

すべてのオプションの完全な説明といくつかの例については、 grep-aptavail のmanページを参照してください。

11
Mike Miller

任意のセパレーターを使用した、1行のフィールドの追加

次の1行は、リポジトリセクションのすべての一意のパッケージ名とその説明を、それぞれ1行で出力します。すべてのフィールドは、パイプ文字、つまり Markdown pipe table への変換の準備ができている。 結果テーブル は私のWebサイトで見つけることができます。

grep-aptavail -n -s Package,Description -F Section hamradio |paste -sd '||\n' |sed 's:^:|:' |sort -u
3

次のコマンドを使用して、特定のセクションに属するパッケージのリストを取得できます。

$ dpkg-query -W -f='${binary:Package} ${Section}\n' | awk '{if ($2 == "shells") {print $1}}'
bash
bash-completion
busybox-initramfs
busybox-static
dash
zsh
zsh-common
2
Sylvain Pineau