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

是否有方法或命令可以告诉包来自哪个存储库?

需要的命令:

  • dpkg -s – 允许您查找已安装的版本。 ( 来源 )
  • apt-cache showpkg – 将显示可用软件包的版本列表。 对于每个版本,将以索引文件名的forms给出包的源。

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

例:

 $ dpkg -s liferea Package: liferea Status: install ok installed Priority: optional Section: web Installed-Size: 760 Maintainer: Ubuntu Developers  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  

对于Ubuntu 16.04及更高版本,有一种更短的方法:

 apt policy  

遗憾的是,在安装包时不会记录此信息。 如果存储库仍在源列表中且存储库仍具有包,那么您可以做出正确的猜测:

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

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

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

资源

apt于Ubuntu 16.04+

除了apt-cache参数,如policyshowpkgshow ,现在我们有一个更简单,易记的参数,命令: apt (不要与经典apt-*混淆):

 apt policy  

或者更多信息apt show 的替代方案,以“APT-Sources:”开头的行。

描述:该软件包提供命令行工具,用于搜索和管理以及查询有关软件包的信息,作为对libapt-pkg库的所有function的低级访问。 这些包括: apt-getapt-cacheapt-cdromapt-configapt-key

来自apt --help基本命令

其他易于记忆的参数:

  • list – 根据包名列出包
  • search – 搜索包描述
  • show – 显示包装细节
  • update – 更新可用包的列表
  • install – 安装包
  • remove – 删除包
  • upgrade – 通过安装/升级软件包升级系统
  • full-upgrade – 通过删除/安装/升级软件包来升级系统
  • edit-sources – 编辑源信息文件

这更准确一点:

 apt-cache show  | grep "Version:" 

除非您设置了apt-pinning或明确安装了特定版本,否则通常会安装最新版本。