web-dev-qa-db-ja.com

Ubuntu Linuxで、「ユニバース」リポジトリからインストールされたパッケージを一覧表示するにはどうすればよいですか?

Ubuntu 10.04 LTSサーバーで、インストールされているパッケージを一覧表示し、それらがどのリポジトリからのものかを確認したいと思います。

インストールされているパッケージを一覧表示するのは簡単ですが、リポジトリの名前(「メイン」や「ユニバース」など)は含まれていません。また、この情報は/var/lib/dpkg/statusにないため、dpkg-queryにも表示されません。

「サポートされていない」ソフトウェア、つまり「メイン」リポジトリからのものではなく、Ubuntuがセキュリティアップデートを保証していないソフトウェアのリストを取得したいと思います。

注:これはサーバーです。 X、GNOME、KDEはインストールされていません。

8
Nate

さて、私はこれを行う方法を理解しました:

aptitude search "~i" -F "%s# %p"

もちろん、「ユニバース」リポジトリからアイテムを見つけるために簡単にgrepすることができます。

aptitude search "~i" -F "%s# %p" | grep universe
13
Nate

適性検索をしてみました〜i -F "%s#%p"

ubuntu 12.04と14.04にありますが、リポジトリは表示されませんでした。

だから私はこの小さなスクリプトを書きました:

# more origins.sh
#!/bin/bash
for i in $(dpkg -l |grep ^ii |awk -F' ' '{print $2}'); do
  apt-cache showpkg "$i"|head -3|grep -v '^Versions'|cut -d'(' -f2|cut -d')' -f1|sed -e 's/^Package: //;' | paste -d '\t' - -
done

次に

bash origins.sh|grep universe
1
k-h

Dpkgコマンドの出力にカスタムフォーマットを提供できます(-fオプションを使用)。 Origin変数を使用して、次のようなことを試してください。

dpkg-query -f='${Package} ${Version}\t${Origin}\n' --get-selections

このページのフォーマット引数に関する詳細情報があります: http://www.tin.org/bin/man.cgi?section=1&topic=dpkg-query

デフォルトのフォーマット文字列は「$ {Package}\t $ {Version}\n」です。実際には、ステータスファイルにある他のすべてのフィールド(つまり、ユーザー定義フィールド)も要求できます。それらはそのまま印刷されますが、変換やエラーチェックは行われません。 dpkgメンテナの名前とインストールされているバージョンを取得するには、次のコマンドを実行します。

dpkg-query -W -f = '$ {Package} $ {Version}\t $ {Maintainer}\n'dpkg

1
John Rabotnik

これは正確な答えではありませんが、役立つ可能性があります。先日、同僚が見せてくれました。このコマンドを使用すると、パッケージの場所を確認できます。

apt-cache policy <package-name>

例えば:

 apt-cache policy xterm  
 xterm:  
 Installed: 271-1ubuntu2.1    
 Candidate: 271-1ubuntu2.1  
 Version table:    *** 271-1ubuntu2.1 0  
         500 http://mirror.internode.on.net/pub/ubuntu/ubuntu/ precise-updates/main AMD64 Packages  
         100 /var/lib/dpkg/status  
      271-1ubuntu2 0  
         500 http://mirror.internode.on.net/pub/ubuntu/ubuntu/ precise/main AMD64 Packages
0
k-h