使用 apt-get 安装的程序来自哪里?

使用 apt-get 安装的程序来自哪里?

我没能通过搜索找到答案。如果我使用:

sudo apt-get install package_name

这个包到底来自哪里?我如何知道它是否来自可信来源?

这个问题表示软件包是从“受信任池”安装的。这是正确的吗?如果正确,那么它是如何工作的?

我知道 Linux 上很少出现病毒,但我还是想知道我是否从不太可靠的来源下载了某些内容。

答案1

在通过“软件和更新”GUI 配置要使用的镜像时,列表中的镜像是 Ubuntu 维护人员信任的官方镜像。他们从该列表中选择的选项是已知与 Ubuntu 主存储库完全相同的镜像。

基本上,在确定这些镜像的可信度时,Canonical 已经为您完成了工作,因此您通常可以信任它们。

理论上,如果您的 DNS 服务器的完整性受到破坏,导致您选择的镜像名称指向恶意来源,您仍然有可能通过 apt-get 下载“受感染的软件”。不过一般来说,您可以相信您的 ISP 会为这些镜像提供正确的 IP 地址,这意味着您可以信任它们。

不过,如果你想自己掌握 DNS 解析,你可以选择公共 DNS 服务,例如开放DNS或者Google 的公共 DNS

答案2

你至少有两种方法可以知道包裹来自哪里:

使用该--print-uris选项来显示apt-get从哪里下载文件,但不执行任何其他操作。

# apt-get install iftop --print-uris
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  iftop
0 upgraded, 1 newly installed, 0 to remove and 4 not upgraded.
Need to get 35.9 kB of archives.
After this operation, 105 kB of additional disk space will be used.
'http://in.archive.ubuntu.com/ubuntu/pool/universe/i/iftop/iftop_1.0~pre2-1_amd64.deb' iftop_1.0~pre2-1_amd64.deb 35910 MD5Sum:a21d03c798bd7a553712e117b44806f5

用于apt-cache查看需要安装的候选文件有哪些以及它们将从哪里下载:

# apt-cache policy iftop
iftop:
  Installed: (none)
  Candidate: 1.0~pre2-1
  Version table:
     1.0~pre2-1 0
        500 http://in.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages

一般而言,如果 URI 域以.ubuntu.com或结尾.canonical.com,则可视为可信 - 这些是官方的第一方存储库或镜像。只有高度可信的开发人员才有权上传这些存储库。

如果 URI 属于不同的域,请查看镜像列表。如果该域名在列表中,则它们也是值得信赖的。

其他的都不确定。


最后,为了apt考虑可信来源,它必须对其软件包进行签名,并且应将来源的公钥添加到apt。当您通过 添加 PPA 时add-apt-repository,它将尝试导入 PPA 的密钥。对于其他存储库,您可以执行以下操作:

wget -O - http://some.site/site.pub | apt-key add -

然后您再次将该源的密钥添加到apt,将其标记为受信任。

答案3

使用终端中的 apt-get 命令获取/下载的软件是存储在已知/已验证的存储库或来自 ubuntu 的软件渠道中的软件。APT 命令有多种变体,可让您从其他来源添加软件。存储库是软件渠道。

您可以通过检查存储库列表来检查系统可用的“软件源”以查看您设置使用的存储库......

打开 Synaptic 包管理器,进入设置,点击存储库

在这里您可以查看和配置所有软件源 - 或者仅使用受信任的软件源等等...

如果你检查“其他软件”选项卡,你会看到你的电脑设置为接收服务器的更完整列表...更新此列表等的一些方法在你提供的链接中

相关内容