安装不属于官方存储库的 .deb 包是否会导致包依赖性问题?

安装不属于官方存储库的 .deb 包是否会导致包依赖性问题?

据我了解,

  1. 如果我们仅从官方存储库安装软件包(sudo apt install package-name,从软件中心安装sudo apt install ./official-deb),则所有软件包依赖关系都将得到正确处理apt,并且不会出现依赖关系问题。
  2. 使用 PPA 安装并从源代码构建可能会在安装时或将来导致依赖问题。

如果我通过 来安装不属于官方存储库的 .deb 包(例如 Chrome .deb 包),会怎么样sudo apt install ./chrome.deb?这是否会导致安装过程中和/或将来使用 进行更新时出现依赖性问题sudo apt update && .....?如果是,是否可以对其进行配置,以便由 来处理依赖性apt

答案1

是也不是。

这取决于包内的内容,以及它是否有依赖项和需要什么。许多包对其他任何内容都没有影响,但大多数都会有影响。这取决于包。

在您的示例中google-chrome-stable,在我的系统上它报告

guiverc@d960-ubu2:/de2900/lubuntu_64$   apt-cache depends google-chrome-stable
google-chrome-stable
  PreDepends: dpkg
    dpkg:i386
  Depends: ca-certificates
  Depends: fonts-liberation
  Depends: libasound2
  Depends: libatk-bridge2.0-0
  Depends: libatk1.0-0
  Depends: libatspi2.0-0
  Depends: libc6
  Depends: libcairo2
  Depends: libcups2
  Depends: libdbus-1-3
  Depends: libdrm2
  Depends: libexpat1
  Depends: libgbm1
  Depends: <libgcc1>
    libgcc-s1
  Depends: libgdk-pixbuf2.0-0
  Depends: libglib2.0-0
  Depends: libgtk-3-0
  Depends: libnspr4
  Depends: libnss3
  Depends: libpango-1.0-0
  Depends: libpangocairo-1.0-0
  Depends: libx11-6
  Depends: libx11-xcb1
  Depends: libxcb-dri3-0
  Depends: libxcb1
  Depends: libxcomposite1
  Depends: libxdamage1
  Depends: libxext6
  Depends: libxfixes3
  Depends: libxrandr2
  Depends: wget
    wget:i386
  Depends: xdg-utils
  Recommends: libu2f-udev
  Recommends: libvulkan1

控制依赖关系是在打包步骤中完成的,即 Ubuntu开发者以及自己创建这些软件包的 Google 人员。

对于 Ubuntu 存储库包,依靠规则可以通过https://packages.ubuntu.com/以及通过命令。使用第三方软件包并不那么容易google-chrome-stable(因此我求助于我自己的盒子和命令查询中的快速示例)。

答案2

简而言之,是的。Linux 中的几乎每种安装方法(除了 appimages 和 snaps)都必然存在依赖性问题。但是,使用 apt 安装 .deb 文件的意义在于它仍然可以找到依赖项。您仍然可能遇到 .deb 文件和 apt 的依赖性问题,但它们并不像dpkg -i您的原始帖子所说的那样常见(这几乎肯定会有依赖性问题)。在我看来,最好的选择是使用 apt 安装它并希望。:) apt 通常会为您解决问题,尤其是对于像 Google Chrome 这样旨在轻松安装的流行软件包。另外,只是为了澄清一下,您确实使用 apt 从 PPA 安装,就在将它们添加到源列表之后。因此,虽然您可能会遇到 .deb(s) 的依赖性问题,但您可以轻松地使用apt install,甚至从官方存储库中执行此操作。

更新

在评论中,您表示您更担心由于库版本差异而导致的更新引起的依赖性问题。我将我的回答移到了评论中,并添加了一些内容:

这种情况可能会发生,但同样,.debs 发生这种情况的可能性并不比官方存储库大。如果列出的软件包相互冲突,则无论文件来源如何,apt 都会抛出错误。软件包还可以列出它们使用的依赖项的一系列版本。这些可以通过 apt 或在线查看http://packages.ubuntu.com。我想不出有上限的,但你可以在类似这样的包装上看到它https://packages.ubuntu.com/focal/htop,其中列出了几个依赖项以及最低版本。此外,一些库在编译时集成到代码中,因此不会在软件包之间共享。而且许多库本身都有针对这种情况的保护措施:向后和向前兼容。

相关内容