Ubuntu Repository2025年03月17日 | 阅读 9 分钟 软件源简介如果到目前为止我们一直是 macOS 和/或 Windows 用户,我们可能会在互联网上找到一个程序(通常以可执行安装程序的形式提供),并需要下载和安装它。我们可能习惯了在 DVD、CD 等上分发的软件,它们具有自动运行功能,我们可以从中安装它们。对于像 Ubuntu Linux/GNU 这样的开源和免费系统,以这种方式分发的软件很少,但那些大多是封闭和专有程序。 在许多系统(例如 Ubuntu)上,几乎所有软件都打包在好的 .deb 文件中,其中包括我们需要的库和程序。这些类型的文件可以下载或在 CD 上提供。软件源可以描述为包含一组软件包的服务器。通常,我们使用 Synaptic 等工具访问它们。
Ubuntu 软件源的组成部分Ubuntu 软件源中的软件分为四个不同的组成部分或类别:main、universe、restricted 和 multiverse。 软件根据其处理能力以及它如何很好地满足免费软件理念的目标进行统一。我们可以使用 Ubuntu 软件中心安装额外的软件。经典的 Ubuntu 安装是一组来自 restricted 和 main 组件的软件。 ![]() 主函数此组件包含免费可用的软件应用程序,可以自由分发,并得到 Ubuntu 团队的全面支持。它包含最可靠和著名的开源软件,其中许多在安装 Ubuntu 时默认添加。 在 main 中,软件包含一个由 Ubuntu 用户、社区和开发人员认为最关键的应用程序列表,并且 Ubuntu 分发和安全团队希望支持这些应用程序。当我们使用 main 组件安装软件时,我们保证该应用程序将获得安全升级,并且 Canonical 提供技术支持。 Universe它是 Linux、开源和自由世界的快照。它包含大部分开源应用程序,每个应用程序都来自各种公共来源。Canonical 不保证为此组件中的应用程序提供持续的安全更新,但会在社区提供这些更新时提供。人们应该了解使用这些软件包所带来的风险。如果维护人员愿意达到 Ubuntu 团队设定的标准,那么受到良好支持或流行的软件部分将从 universe 转移到 main。 Restricted(受限)Ubuntu 团队的承诺是只推广开源软件——或基于自由许可证的软件。但是,他们也对一小部分驱动程序和工具做出了例外,这些驱动程序和工具使得在常规硬件上安装 Ubuntu 及其免费软件成为可能。这些固定驱动程序保存在此组件中。 注意:可能无法为此应用程序提供全面支持,因为他们无法修复软件——他们只能将问题转发给实际作者。从 restricted 组件中,一些软件将存在于 Ubuntu CD 上,但已分离以确保易于删除。 他们只会在没有其他途径安装 Ubuntu 的情况下使用非开源应用程序。Ubuntu 团队与供应商合作,加速其应用程序的开源方面,以确保尽可能多的应用程序基于自由许可证。 Multiverse此组件包含非自由软件,这意味着此软件的许可要求不符合 Ubuntu main 组件的许可政策。验证我们使用此软件的权利并遵守版权所有者的许可条款是我们的责任。此软件不受支持,通常无法更新或修复。我们需要自担风险使用它。 我们为什么使用 PPA?更重要的是,Ubuntu 控制着我们系统上获得的软件版本和软件。但假设软件开发人员发布了新软件版本,Ubuntu 不会立即提供。有一个过程来检查新发布的软件是否适合系统。这确保了系统的稳定性。 但这也意味着在某些情况下,或者几周、几个月之后,它才能由 Ubuntu 提供。并不是每个人都愿意等待那么长时间才能获得他们最喜欢的软件的最新版本。 同样,想象有人开发了一个应用程序并希望 Ubuntu 将该应用程序添加到官方存储库中。同样,Ubuntu 需要几个月的时间才能决定并将其添加到官方存储库中。 其他情况可能是在 Beta 测试期间。软件开发人员可能希望一些最终用户检查他们的下一个版本,即使官方存储库中存在稳定版本的软件。他们如何让人们 Beta 测试下一个版本?我们可以使用 PPA。 PPA 的工作原理和用法PPA 代表**个人软件包存档**。请注意这里的“**个人**”一词。这表明它与开发人员绝对相关,并未得到官方分发的批准。 Ubuntu 提供了一个名为 Launchpad 的平台,让软件开发人员可以创建自己的存储库。我们可以将 PPA 存储库包含在我们的 `sources.list` 中。当我们更新系统时,系统将知道此新软件的可用性,我们可以使用标准命令(即 `sudo apt install`)安装它。 例如
如我们所见,运行 `sudo apt update` 命令很重要,否则我们的系统将不知道有新软件包存在。Ubuntu 的 18.04 及更高版本会自动执行更新以刷新软件包列表。执行此命令是一个好习惯。 现在,让我们更详细地查看命令 我们会注意到上述命令不包含 URL。这是因为该工具已创建以抽象我们关于 URL 的详细信息。如果我们包含 `ppa:dr-akulavich/lighttable`,我们将拥有 Light Table。如果我们包含 `ppa:dr-akulavich`,我们将获得“**上层存储库**”中列出的所有软件包或存储库。它是分层的。 当我们使用 `add-apt-repository` 添加 PPA 时,它基本上会执行与我们手动执行这些命令类似的操作 上面提到的两行是向我们的 sources.list 添加任何存储库的经典方法。但是,PPA 可以自动为我们完成,而无需担心相同的操作系统版本和存储库 URL。 这里要记住的重要一点是,当我们使用 PPA 时,它不会修改我们实际的 sources.list。相反,它在 `/etc/apt/sources.list.d` 目录中创建两个文件,一个备份文件和一个带有“**save**”后缀的列表文件。带有后缀“**list**”的文件包含包含存储库详细信息的命令。这是一种安全措施,以确保添加 PPA 不会干扰真正的 sources.list。此外,它有助于删除 PPA。 PPA 与 DEB 软件包您可能会问,既然 PPA 使用命令行,这可能不被所有人接受,为什么还要使用它呢?*为什么不只共享一个可以图形化安装的 DEB 软件包呢?* 答案在于更新过程。如果我们使用 DEB 软件包安装应用程序,则无法保证在执行 `sudo apt update` 和 `sudo apt upgrade` 命令时,已安装的应用程序将更新到新版本。 这是因为 apt 升级过程依赖于 sources.list。如果没有应用程序的条目,它不会通过传统的软件更新器带来更新。 *这是否意味着通过 DEB 软件包安装的应用程序永远不会带来更新?*不完全是。这取决于软件包的制作方式。 一些开发人员会自动在 sources.list 中添加一个条目,并且它会像普通应用程序一样更新。一个这样的例子是 **Google Chrome**。 一些应用程序会在我们尝试执行它时通知我们新版本的可用性。我们需要下载新的 DEB 软件包并再次执行它,以将当前应用程序更新到新版本。在这种情况下,一个例子是 **Oracle Virtual Box**。 我们需要手动搜索更新,这不方便,特别是如果我们的应用程序是为 Beta 测试人员定义的。我们需要经常添加更多更新。PPA 在此时发挥作用。 非官方 PPA 与官方 PPA此外,您可能还会听到非官方 PPA 或官方 PPA 的术语。*但这两种有什么区别呢?* 当开发人员为他们的应用程序制作 PPA 时,这被称为官方 PPA,因为它来自项目开发人员。另一方面,个人制作的项目 PPA 是由其他开发人员制作的。 *但为什么会有人这样做呢?*因为许多开发人员只提供应用程序的源代码,而我们知道在 Ubuntu 中从源代码安装任何应用程序都很复杂,并不是每个人都愿意或能够做到这一点。 因此,志愿者们自愿从这些源代码中制作 PPA,以便其他人可以轻松安装应用程序。 确保 PPA 可用于您的发行版版本 在使用 Linux 或其他发行版中的 PPA 时,我们应该记住一些事情。 并非所有 PPA 都适用于我们的特定版本。我们应该了解我们正在使用哪个版本的 Ubuntu。版本代号至关重要,因为当我们访问特定的 PPA 网页时,我们可以找到 PPA 支持的 Ubuntu 版本。 我们可以查看 `/etc/os-release` 的内容以查找特定 Ubuntu 版本的信息。我们还可以找到 PPA 的 URL。我们只需使用 PPA 名称(例如 `ppa: dr-akulavich/lighttable`)在互联网上搜索,我们应该会从 Launchpad 网站(托管 PPA 的官方环境)获得初始结果。此外,我们还可以访问 Launchpad 并直接在那里找到所需的 PPA。 如果您不验证并添加 PPA,那么当您尝试安装不适用于您的版本的应用程序时,可能会发现以下错误。 更糟糕的是,它已包含在我们的 source.list 中;每次我们执行软件更新器时,我们都会遇到“**无法下载存储库信息**”错误。 如果在命令行中执行 `sudo apt update` 命令,错误将包含更多关于哪个存储库导致问题的信息。您可以在 `sudo apt update` 命令结果的末尾看到类似的内容。 这不言自明,因为系统无法找到我们版本的存储库。请记住我们之前看到的关于存储库结构的内容。APT 将尝试在 `https://ppa.launchpad.net/ 为什么不是所有 PPA 都适用于所有 Ubuntu 版本?这是因为需要有人在特定版本上编译应用程序并从中制作 PPA。鉴于每六个月发布一个新版本的 Ubuntu,为所有 Ubuntu 版本更新 PPA 是一项繁琐的操作。并不是每个开发人员都有足够的时间来做这件事。 下一主题Ubuntu 源列表 |
我们请求您订阅我们的新闻通讯以获取最新更新。