当前位置: 首页>>技术问答>>正文


如何找出软件包来自哪个存储库?

, , ,

问题描述

有没有一种方法或命令可以告诉软件包来自哪个存储库?

最佳解决方案

需要的命令:

  • dpkg -s <package> – 允许您查找已安装的版本。 (source)

  • apt-cache showpkg <package> – 将显示可用包的版本列表。对于每个版本,将以索引文件名的形式给出包的来源。

如果您想查找当前安装的软件包源,则需要输出dpkg -s <package>。否则,您只需查看apt-cache showpkg <package>的最新版本输出即可。

例:

$ dpkg -s liferea
Package: liferea
Status: install ok installed
Priority: optional
Section: web
Installed-Size: 760
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: i386
Version: 1.6.2-1ubuntu6
...

$ apt-cache showpkg liferea
Package: liferea
Versions: 
1.6.2-1ubuntu6.1 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages)
 Description Language: 
                 File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages
                  MD5: 557b0b803b7ed864e6d14df4b02e3d26

1.6.2-1ubuntu6 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages) (/var/lib/dpkg/status)
 Description Language: 
                 File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages
                  MD5: 557b0b803b7ed864e6d14df4b02e3d26
...

从第一个命令中,我可以看到安装了Liferea 1.6.2-1ubuntu6版本。从第二个命令中,我可以看到该版本在/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages中列出。

没有太多的努力,我可以推断源代码行包含archive.ubuntu.comubuntulucidmain

而且,当然,我的/etc/apt/sources.list包含以下行。

deb http://archive.ubuntu.com/ubuntu lucid main universe restricted multiverse

次佳解决方案

使用以下命令。它有更好的输出:

apt-cache policy <Package Name>

第三种解决方案

sudo grep *packagename* /var/lib/apt/lists/* | grep "Filename:"

source

第四种方案

可悲的是,这些信息在软件包安装过程中没有记录。如果存储库仍在源列表中,并且存储库中仍有该软件包,则可以做出合理的猜测:

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

即使突触也无法判断您是否禁用了存储库并进行了更新。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/610.html,未经允许,请勿转载。