当我在终端中安装某些东西(例如 Chromium)时,我会输入
sudo apt-get install chromium-browser
终端如何知道要chromium-browser
安装的有效软件包?是否有所有可安装软件包的列表?它如何找到这些软件包?
答案1
每当您调用get 读取apt-get update
中包含的存储库时sources.list
,这会告诉 apt-get 从哪里获取软件包列表。此列表将被下载并存储在 中/var/lib/apt/lists
以供以后使用。这些是您选择的存储库中所有可用软件包的列表。即使您删除了 sources.list,此列表仍可用于 APT。这就是为什么您应该update
在添加/删除/修改存储库时始终这样做,以保持这些列表更新。
终端如何知道 chromium-browser 是一个有效的可安装包?
“终端”什么都不知道。APT 读取所有列表/var/lib/apt/lists
并确定包是否可用。如果在任何列表中都找不到包,您将得到:
E: Unable to locate package <package>
是否有所有可安装软件包的列表?
这因存储库而异。您的活动存储库的本地副本/列表位于 中/var/lib/apt/lists
。
它是如何找到这些包的?
$ sudo apt-get check
Reading package lists... Done
Building dependency tree
Reading state information... Done
感兴趣的线是
Reading package lists... Done
它告诉您 APT 从 读取列表/var/lib/apt/lists
。
答案2
apt-get
/etc/apt/sources.list
在文件和目录中给出的存储库中搜索指定的包/etc/apt/sources.list.d
。
答案3
要显示apt-get install
特定包(例如 chromium-browser)的来源,请打开终端并输入:
apt-cache policy chromium-browser | grep $(lsb_release -sc)
结果将是一行或两行,显示确切的更新服务器镜像以及 Ubuntu 中的 apt 和 apt-get 从中下载 chromium-browser 包的确切存储库。无需到处搜索,因为所有内容都在一行或两行输出中。如果有两个备用存储库,则结果将打印在两行上,否则,如果只有一个包含 的存储库,则结果将打印在一行上。apt-cache policy <package> | grep $(lsb_release -sc)
<package>
解释:
$(lsb_release -sc)
是你的 Ubuntu 版本的代号apt-cache policy <package>
- 打印出每个来源的优先级<package>