Ubuntuを含むDebianベースのシステムで、実際にダウンロードを開始しないで、どのリポジトリからパッケージがダウンロードされるのかを知るにはどうすればいいですか? aptitude show
とapt-cache info
はセクション(メタパッケージ、ベース、グラフィックなど)を表示しますが、パッケージが属するリポジトリは表示しません(例: http://ppa.launchpad.net/mactel-support/ppa/ubuntu または http:// us。 archive.ubuntu.com/ubuntu/ )。
パッケージをインストールするとき、実際のリポジトリはダウンロード中に表示されます(aptやそれに類似したプログラムからの "downloads from ..."の出力にプリントアウトされます)。パッケージのバージョン)を最初にダウンロードしてインストールすることなく?
さらに、どのようにして既にインストールされているパッケージのソースリポジトリを決定することができますか?
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
これは、3つのwajig
パッケージがあることを意味します。
インストールされているもの(/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
ああ!どうやら、正しい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
はソースリポジトリを表示できないというバグレポート がありますが、現時点ではこの機能はまだウィッシュリストに載っているようです。
これは私にとってはうまくいきます(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
複数のバージョンが利用可能な場合は、バージョンなどをチェックするために追加のフィルタリングを適用できます。
私はなぜ誰もaptitude
を言わなかったのだろうか。私はいつも使っています。
適性は次のとおりです。
Sudo apt install aptitude
を介して他のユーザー(Ubuntuなど)にインストールすることができます。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
super Cow Powersはありません
各文字列の前の文字は、パッケージのステータスを示します。iはインストールされ、pは削除されます(またはインストールされません)。stable、testingおよびunstableはリポジトリの定義です。末尾の数字は ピン優先順位 です。
Aptitudeの最近のバージョンに関してここで言及する価値がある1つの注意点:デフォルトでは検索する名前を含むすべてのパッケージを表示するので、厳密な名前で検索するには regex magicを少し使用します。例えばaptitude versions ^kde-workspace$
です。
残念ながら、この情報はパッケージのインストール中に記録されません。リポジトリがまだソースリストに入っていて、リポジトリにまだパッケージがあるかどうかは、かなり推測できます。
grep -l PKG /var/lib/apt/lists/*
apt-cache showpkg
はリポジトリデータベースからのデータ(インストールされているものではありません)を表示しているので、grepからの同じ情報の別の形式です。
リポジトリを無効にして更新した場合、シナプスでさえ(Originの画面で)見分けることができません。
または、Sunnyに触発されてあなたは試すことができます:
# 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%正確ではありません。