问题描述
有没有一种方法或命令可以告诉软件包来自哪个存储库?
最佳解决方案
需要的命令:
-
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.com
,ubuntu
,lucid
和main
。
而且,当然,我的/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:"
第四种方案
可悲的是,这些信息在软件包安装过程中没有记录。如果存储库仍在源列表中,并且存储库中仍有该软件包,则可以做出合理的猜测:
grep -l PKG /var/lib/apt/lists/*
即使突触也无法判断您是否禁用了存储库并进行了更新。