web-dev-qa-db-ja.com

どのUbuntuまたはDebianリポジトリからパッケージが来るのかを知るにはどうすればいいですか?

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

パッケージをインストールするとき、実際のリポジトリはダウンロード中に表示されます(aptやそれに類似したプログラムからの "downloads from ..."の出力にプリントアウトされます)。パッケージのバージョン)を最初にダウンロードしてインストールすることなく

さらに、どのようにして既にインストールされているパッケージのソースリポジトリを決定することができますか?

166
gotgenes

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
201
Tshepang

ああ!どうやら、正しい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はソースリポジトリを表示できないというバグレポート がありますが、現時点ではこの機能はまだウィッシュリストに載っているようです。

28
gotgenes

これは私にとってはうまくいきます(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

私はなぜ誰もaptitudeを言わなかったのだろうか。私はいつも使っています。

適性は次のとおりです。

  • デフォルトでは多くのDebianベースのディストリビューションに同梱されています。 Sudo apt install aptitudeを介して他のユーザー(Ubuntuなど)にインストールすることができます。
  • 管理権限を必要としません(少なくとも以下のコマンドに対して)
  • nice 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は削除されます(またはインストールされません)。stabletestingおよびunstableはリポジトリの定義です。末尾の数字は ピン優先順位 です。

Aptitudeの最近のバージョンに関してここで言及する価値がある1つの注意点:デフォルトでは検索する名前を含むすべてのパッケージを表示するので、厳密な名前で検索するには regex magicを少し使用します。例えばaptitude versions ^kde-workspace$です。

8

残念ながら、この情報はパッケージのインストール中に記録されません。リポジトリがまだソースリストに入っていて、リポジトリにまだパッケージがあるかどうかは、かなり推測できます。

grep -l PKG /var/lib/apt/lists/*

apt-cache showpkgはリポジトリデータベースからのデータ(インストールされているものではありません)を表示しているので、grepからの同じ情報の別の形式です。

リポジトリを無効にして更新した場合、シナプスでさえ(Originの画面で)見分けることができません。

6
kanaka

または、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%正確ではありません。

2
Tim