Ubuntu 10.04 LTSサーバーで、インストールされているパッケージを一覧表示し、それらがどのリポジトリからのものかを確認したいと思います。
インストールされているパッケージを一覧表示するのは簡単ですが、リポジトリの名前(「メイン」や「ユニバース」など)は含まれていません。また、この情報は/var/lib/dpkg/status
にないため、dpkg-query
にも表示されません。
「サポートされていない」ソフトウェア、つまり「メイン」リポジトリからのものではなく、Ubuntuがセキュリティアップデートを保証していないソフトウェアのリストを取得したいと思います。
注:これはサーバーです。 X、GNOME、KDEはインストールされていません。
さて、私はこれを行う方法を理解しました:
aptitude search "~i" -F "%s# %p"
もちろん、「ユニバース」リポジトリからアイテムを見つけるために簡単にgrepすることができます。
aptitude search "~i" -F "%s# %p" | grep universe
適性検索をしてみました〜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
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
これは正確な答えではありませんが、役立つ可能性があります。先日、同僚が見せてくれました。このコマンドを使用すると、パッケージの場所を確認できます。
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