どのようにしてパッケージが Ubuntu や Debian のリポジトリから来るかを見分けることができますか?

debian package-management ubuntu

Ubuntu を含む Debian ベースのシステムで、実際にダウンロードを開始せずにパッケージがどのリポジトリからダウンロードされるかを知るにはどうしたらよいでしょうか?aptitude showapt-cache info はセクション (例: メタパッケージ、ベース、グラフィックス) を表示しますが、パッケージが属するリポジトリは表示されません (例: http://ppa.launchpad.net/mactel-support/ppa/ubuntuhttp://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


タイトルとURLをコピーしました