如果 `apt` 只是 `apt-get` 的一个更“用户友好”的变体,它“自动满足依赖字符串”,那么为什么 `apt Satisfaction` 可以工作呢?

如果 `apt` 只是 `apt-get` 的一个更“用户友好”的变体,它“自动满足依赖字符串”,那么为什么 `apt Satisfaction` 可以工作呢?

不幸的是,Google Bard 没有列出引用,所以我只引用结果:

当然。 APT 和 apt-get 都是用于管理基于 Debian 的 Linux 发行版上的软件包的命令行工具。它们都基于APT库,但是它们有不同的优点和缺点。 APT 是一种更加用户友好的工具,专为最终用户设计。它提供了许多使安装、升级和删除包变得更容易的功能,例如自动解决包依赖关系的能力以及使用图形包管理器的能力。 apt-get 是一个更强大的工具,专为系统管理员设计。它提供了比 APT 更广泛的选项,例如从远程存储库安装软件包的能力以及管理软件包组的能力。一般来说,对于想要一个简单易用的软件包管理工具的最终用户来说,APT 是一个不错的选择。对于需要更强大的工具和更多选项的系统管理员来说,apt-get 是一个不错的选择。下表总结了 APT 和 apt-get 之间的主要区别: 功能 APT apt-get 用户友好性 更加用户友好 不太用户友好 权力 不太强大 更强大 选项 选项更少 更多选项 目标受众 最终用户 系统管理员 最终,最适合您的工具取决于您的个人需求和偏好。如果您是最终用户,想要一个简单易用的工具,那么 APT 是一个不错的选择。如果您是系统管理员,需要更强大的工具和更多选项,那么 apt-get 是一个不错的选择。

如果我正确理解了这一描述,人们会认为apt无需显式用户干预即可自动满足依赖项字符串。但是,如果是这样,为什么会apt satisfy导致安装额外的软件包?

编辑:根据收到的评论,以下是一些其他详细信息:

  • 我安装adb使用apt install android-sdk-platform-tools
  • 我跑了apt satisfy android-sdk-platform-tools
  • 这是后者的输出:
root@penguin:~# apt satisfy android-sdk-platform-tools
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  android-libetc1 android-libext4-utils android-libsparse android-libunwind android-libziparchive android-sdk-platform-tools dmtracedump etc1tool f2fs-tools fastboot fonts-liberation graphviz hprof-conv libann0
  libcdt5 libcgraph6 libgts-0.7-5 libgts-bin libgvc6 libgvpr2 liblab-gamut1 libpathplan4 p7zip p7zip-full sqlite3
0 upgraded, 25 newly installed, 0 to remove and 0 not upgraded.
Need to get 5,906 kB of archives.
After this operation, 21.5 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
  • 不幸的是,在我创建这篇文章之前,我已经关闭了初始安装的终端会话,但我不记得看到任何错误或任何不正常的东西。

答案1

您从巴德那里得到的答案具有严重的误导性。您问题中给出的引用中有很多不准确和错误,因此没有太多意义去纠正它。

aptapt-get提供几乎相同的功能;特别是,它们以相同的方式解决依赖关系,它们都处理远程存储库,并且它们支持相同的选项。

apt satisfy是相同的apt-get satisfy。它解决了依赖关系约束,因为它们将被写入源包的构建依赖关系描述中,因此对于包开发人员来说最有用。通常,它在开发新包或向现有包添加构建依赖项信息时很有用;在这种情况下,apt build-dep不能使用更简单的命令来解决包的构建依赖项(因为元数据在存储库中不可用),而是apt satisfy可以使用。

您得到的输出apt satisfy android-sdk-platform-tools表明该包不是安装。adb是在单独的adb包装中运输的,而不是android-sdk-platform-tools;我怀疑您安装了adb,而不是安装了android-sdk-platform-tools,这就是为什么apt satisfy要安装更多软件包。这两个包取决于android-sdk-platform-tools-common哪个可能导致了混乱。

相关内容