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


168

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

パッケージをインストールすると、ダウンロード中に実際のリポジトリが表示されます(aptおよび同様のプログラムからの "downloading from ..."出力に出力されます)が、パッケージを含むリポジトリ(または特定のパッケージのバージョン)最初にダウンロードしてインストールせずに

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


1
私はこれがAptの欠陥の1つだと思っています。パッケージインストーラツール内で特定のパッケージを提供するリポジトリを特定するのは簡単ではありません。
いんちきのキホーテ

回答:


203

私は実行します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

しかし、インストールされたパッケージがどこから来たのかは表示されませんか?
アドビ

2
@Adobe私の場合、この2.1バージョンはどのリポジトリからも入手できません。ローカルに構築されています。
-tshepang

2
インストールされたパッケージの兆候とは何ですか?***または/var/lib/dpkg/status
SuB

多分両方?わからない。
シェパン

パッケージがインストールされていない場合、apt-cache policy次のように言いますInstalled: (none)
ジョンマク

28

あぁ!どうやら、適切な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がありますが現時点では機能がウィッシュリストに残っているようです。


その適性機能は8年後もまだウィスリストに載っていますが、なぜこの答え(apt-cache showpkg)が正しいものとしてマークされていないのかわかりません。
チャバトス

8

これは私のために機能します(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

複数のバージョンが利用可能な場合、バージョンなどをチェックするために追加のフィルタリングを適用できます。


実用的。dpkgしかし、この情報は、フロントエンドのいずれからもアクセスできないことに驚いています。
gotgenes


8

なぜ誰も言及しなかったのだろうかaptitude。いつも使っています。

適性は:

  • 多くのDebianベースのディストリビューションでデフォルトで出荷されます。他の(Ubuntuなど)にインストールできますsudo apt install aptitude
  • 管理特権を必要としません(少なくとも以下のコマンドの場合)
  • 素晴らしいncursesGUIがあります(ただし、ほとんどの場合、それなしで使用されます)
  • 本当にきれいな出力を提供します。パッケージのバージョンを表示するには、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がパージされる(またはインストールされない)、stabletestingunstableがリポジトリ定義であり、最後の数字がピンの優先順位です。

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


1
素晴らしいコマンドですが、要求されたとおりにリポジトリをリストしません。
-bjhend

実際にそうです。
TranslucentCloud

分かりません。追加のPPAをインストールできます。パッケージがそのようなPPAからのものであるかどうかを知ることが重要です。実際のところ、それが今私が理解しようとしていることです-もしそうなら、PPAを削除して問題のリスクを減らすことができます。
reinierpost

はい、あなたは正しいですversions。関連するリポジトリではなく、指定されたパッケージの適切な固定値を確認するだけです。ただし、すべてのリポジトリとそれらがどのようにピン留めされているかを知っていれば、それはまだ便利です。
TranslucentCloud

6

悲しいことに、この情報はパッケージのインストール中に記録されません。リポジトリがまだソースリストにあり、リポジトリにまだパッケージがある場合、適切な推測を行うことができます。

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

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

シナプスでも、リポジトリを無効にして更新するかどうかを(Origin画面で)知ることができません。


2

または、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

追伸 100%正確ではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.