Ubuntu を含む Debian ベースのシステムで、実際にダウンロードを開始せずにパッケージがどのリポジトリからダウンロードされるかを知るにはどうしたらよいでしょうか?aptitude show
や apt-cache info
はセクション (例: メタパッケージ、ベース、グラフィックス) を表示しますが、パッケージが属するリポジトリは表示されません (例: http://ppa.launchpad.net/mactel-support/ppa/ubuntu や http://us.archive.ubuntu.com/ubuntu/)
パッケージをインストールすると、ダウンロード中に実際のリポジトリが表示されます(aptなどのプログラムの「…からのダウンロード」の出力に出力されます)が、最初にダウンロードしてインストールしないで、パッケージを含むリポジトリ(または特定のバージョンのパッケージ)の情報を取得するにはどうすればいいのでしょうか?
さらに、すでにインストールされているパッケージのソースリポジトリをどのように判断すればよいのでしょうか?
173 None 2010-02-09
私はapt-cache policy <package name>
を実行します
$ apt-cache policy wajig
wajig:
Installed: 2.1
Candidate: 2.1
Version table:
*** 2.1 0
100 /var/lib/dpkg/status
2.0.47 0
500 file:/home/wena/.repo_bin/ squeeze/main i386 Packages
500 ftp://ftp.is.co.za/debian/ squeeze/main i386 Packages
つまり、wajig
のパッケージが3つあるということです
設置されているもの(
/var/lib/dpkg/status
)ローカルリポジトリ(
file:/home/wena/.repo_bin/
)から利用できるものリモートリポジトリ(
ftp://ftp.is.co.za/debian
)から利用可能なもので、ローカルリポジトリのものと同じバージョン(2.0.47)を持っているもの
さらに、apt-cache madison <package name>
は同様の情報を表形式で表示します
wajig | 2.2 | mirror://mirrors.ubuntu.com/mirrors.txt/ precise/universe amd64 Packages
wajig | 2.2 | mirror://mirrors.ubuntu.com/mirrors.txt/ precise/universe Sources
209 tshepang 2011-01-22
嗚呼!どうやら正しいapt
コマンドはapt-cache info
ではなくapt-cache showpkg
のようです
$ apt-cache showpkg linux-generic
Package: linux-generic
Versions:
2.6.31.19.32 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic-updates_main_binary-amd64_Packages) (/var/lib/apt/lists/security.ubuntu.com_ubuntu_dists_karmic-security_main_binary-amd64_Packages) (/var/lib/dpkg/status)
Description Language:
File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic-updates_main_binary-amd64_Packages
MD5: 5d722da329763b9342d322f5a140005c
2.6.31.14.27 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_main_binary-amd64_Packages)
Description Language:
File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_main_binary-amd64_Packages
MD5: 5d722da329763b9342d322f5a140005c
Reverse Depends:
Dependencies:
2.6.31.19.32 - linux-image-generic (5 2.6.31.19.32)
2.6.31.14.27 - linux-image-generic (5 2.6.31.14.27)
Provides:
2.6.31.19.32 -
2.6.31.14.27 -
Reverse Provides:
File:
行は、/var/lib/apt/lists/
の後にリポジトリ情報を提供します
aptitude
ソースリポジトリを表示できないというバグ報告がありますが、今のところこの機能はウィッシュリストに残っているようです
29 gotgenes 2010-02-10
なぜ誰もaptitude
に言及しなかったのか不思議です。いつも使っているのに
Aptitude is:
多くの Debian ベースのディストリビューションにデフォルトで同梱されています。他の (Ubuntu などの) ディストリビューションには
sudo apt install aptitude
でインストールできます管理者権限を必要としない(少なくとも以下のコマンドについては)
良い
ncurses
のGUIを持っています(しかし、ほとんどの場合はそれなしで使われています)本当にきれいな出力を提供します。パッケージのバージョンを表示するには
aptitude versions
コマンドを使いますme@wheezy:~$ aptitude versions kde-standard Package kde-standard: i A 5:77+deb7u1 stable 500 p A 5:84 testing,unstable 130
スーパーカウパワーは持っていません
各文字列の前にある文字はパッケージの状態を表し、i はインストール済み、p はパージ済み(またはインストールされていない)、stable、testing、unstable はリポジトリの定義、最後の数字は ピンの優先度 です
aptitudeの最近のバージョンに関する注意点として、ここで言及する価値があります:デフォルトでは、検索した名前を含むすべてのパッケージが表示されますので、regexマジックを使用して、厳密な名前で検索するために少し、例えばaptitude versions ^kde-workspace$
のようにします
9 Neurotransmitter 2015-01-12
これは私のために動作します(2vcardパッケージがどこにあるかを示しています)
$ grep 2vcard /var/lib/apt/lists/* | grep "Filename:"
/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_universe_binary-i386_Packages:Filename: pool/universe/2/2vcard/2vcard_0.5-3_all.deb
複数のバージョンがある場合は、バージョンの確認などに追加のフィルタリングを適用することができます
8 Sunny 2010-02-09
悲しいことに、この情報はパッケージのインストール中には記録されません。リポジトリがソースリストに残っていて、そのリポジトリがまだパッケージを持っているかどうか、まともな推測をすることができます
grep -l PKG /var/lib/apt/lists/*
apt-cache showpkg
はリポジトリデータベース(インストールされているものではない)からのデータを表示しているので、grepからの同じ情報を別の形で表示しています
リポジトリを無効にしてアップデートすると、Synapticでも(Originの画面では)わからなくなります
6 kanaka 2010-10-20
または、サニーに触発されて、あなたは試してみることができます
# list installed restricted packages
for i in `dpkg --get-selections | awk '{ print $1 }'`; do egrep -lRI "^Filename: .*/${i}_[^/]+.deb" /var/lib/apt/lists/ | grep -q 'restricted' && echo $i; done
# list installed multiverse packages
for i in `dpkg --get-selections | awk '{ print $1 }'`; do egrep -lRI "^Filename: .*/${i}_[^/]+.deb" /var/lib/apt/lists/ | grep -q 'multiverse' && echo $i; done
ps. 100%の精度ではありません
2 Tim 2011-01-22