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

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

在基于 Debian 的系统(包括 Ubuntu)上,如何在不实际开始下载的情况下判断软件包将从哪个存储库下载?aptitude showapt-cache info显示部分(例如,元包、基础包、图形包),但不包括存储库包所属的类别(例如,http://ppa.launchpad.net/mactel-support/ppa/ubuntu或者http://us.archive.ubuntu.com/ubuntu/)。

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

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

答案1

我跑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包:

  • 已安装的一个(/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

啊哈!显然,正确的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无法显示源存储库的错误报告,但目前看来该功能仍在愿望清单中。

答案3

我很奇怪为什么没人提到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
    
  • 不具备超级牛力量。

每串前面的字母表示包裹的状态,已安装,被清除(或从未安装),稳定的测试不稳定是存储库定义,最后的数字是引脚优先级

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

答案4

遗憾的是,这些信息在软件包安装过程中不会被记录。你可以猜测一下存储库是否仍在源列表中,以及存储库是否仍有软件包:

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

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

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

相关内容