如何判断软件包来自哪个 Ubuntu 或 Debian 存储库?

got*_*nes 181 debian package-management ubuntu

在基于 Debian 的系统(包括 Ubuntu)上,如何在不实际开始下载的情况下知道将从哪个存储库下载软件包?aptitude show并且apt-cache info将显示部分(例如,元数据包,碱,图形),而不是存储库,其包属于(例如,http://ppa.launchpad.net/mactel-support/ppa/ubuntuHTTP://我们.archive.ubuntu.com/ubuntu/)。

安装软件包时,实际存储库会在下载过程中出现(它在 apt 和类似程序的“从...下载”输出中打印出来),但是如何获取有关包含该软件包的存储库(或特定包的版本)而不先下载并安装它?

此外,如何确定已安装软件包的源存储库?

tsh*_*ang 217

我跑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
Run Code Online (Sandbox Code Playgroud)

这意味着有三个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
Run Code Online (Sandbox Code Playgroud)

  • @Adobe 就我而言,任何存储库中都没有“2.1”版本。它是本地建造的。 (2认同)
  • 安装包的标志是什么?`***` 或 `/var/lib/dpkg/status` ? (2认同)

got*_*nes 29

啊哈!显然,正确的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: 
Run Code Online (Sandbox Code Playgroud)

File:行在 之后提供存储库信息/var/lib/apt/lists/

一个错误报告aptitude无法显示源存储库,但目前该功能似乎仍在愿望清单中。


Neu*_*ter 9

我想知道为什么没有人提到aptitude。我用它所有的时间。

资质是:

  • 默认情况下随许多基于 Debian 的发行版一起提供。可以通过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
    
    Run Code Online (Sandbox Code Playgroud)
  • 没有超级牛的力量。

每个串前的字母表示封装的状态,已安装并p吹扫(或从未安装),稳定测试不稳定是存储库的定义,在端的数量是一个销优先权

关于最近版本的 aptitude 值得一提的一个警告:默认情况下,它显示所有包,其中包括您搜索的名称,因此请稍微使用正则表达式魔术来按严格名称进行搜索,例如aptitude versions ^kde-workspace$.


Sun*_*nny 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
Run Code Online (Sandbox Code Playgroud)

如果有多个版本可用,您可以应用额外的过滤来检查版本等。


小智 6

遗憾的是,在软件包安装过程中没有记录此信息。如果存储库仍在源列表中并且存储库仍然具有包,您可以做出合理的猜测:

grep -l PKG /var/lib/apt/lists/*
Run Code Online (Sandbox Code Playgroud)

apt-cache showpkg 正在显示来自存储库数据库的数据(不是安装的数据),因此它是来自 grep 的相同信息的另一种形式。

甚至突触也无法判断(在 Origin 屏幕中)您是否禁用了存储库并进行更新。