Linux 术语解释:什么是上游和下游?Linux 术语解释:什么是上游和下游?Linux 术语解释:什么是上游和下游?Linux 术语解释:什么是上游和下游?
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

Linux 术语解释:什么是上游和下游?

发表 admin at 2025年2月28日
类别
  • 未分类
标签

术语“上游”和“下游”是相当模糊的术语,我认为公众并没有真正使用它们。如果您是 Linux 用户并且不编写或维护软件,那么这些术语很可能对您来说毫无意义,但它们对于 Linux 世界中各组之间的沟通方式可能具有指导意义。

这些术语用于网络、编程、内核,甚至供应链等非计算机领域。当我们谈论上游和下游时,背景很重要。

最简单的形式是,上游和下游是信息流动的方向。

由于我们都是在连接到 Internet 的情况下阅读本文的,因此让我们看一个适用于 Internet 服务提供商 (ISP) 的上游/下游示例。在这里,ISP 关心的是流量。上行流量是来自不同 ISP 的用户的数据。例如,如果您有一个提供新闻通讯订阅的网站,那么我发送的用于订阅的信息就是上游数据。

下行流量是指从一个用户发送到不同ISP的另一个用户的数据,则被视为下行流量。使用相同的订阅示例,假设我的订阅请求已获得批准,并且我在一封电子邮件中收到“欢迎”说明,并在另一封电子邮件中收到最新的新闻通讯。在这种情况下,数据是下游的,因为它是由您(可能是代表您运行的自动化软件)发送给我(来自不同 ISP 的用户)的。

总结:我需要或想要的东西(你的时事通讯)是上游的。你提供给我的东西(欢迎词和实际的时事通讯)会在下游传给我。

数据是上游还是下游对于我们用户来说可能并不重要,但对于监控带宽使用情况的服务器管理员以及分销商和应用程序程序员来说很重要。

在Linux世界中,上游和下游有两个主要上下文。一个与内核有关,另一个与应用程序有关。还有其他的,但我希望我能用这两个来表达这个想法。

Linux内核上下文中的上游和下游

Linux是内核。在创建发行版(通常称为“发行版”)时,Linux 发行版最初使用未经修改的内核中的源代码。添加必要的补丁,然后配置内核。内核的配置基于发行版想要提供的功能和选项。一旦决定,内核就会相应地创建。

原始内核位于发行版的上游。当发行版获得源代码时,它会流向下游。一旦发行版拥有了代码,它就由发行版的制作者保留,同时对其进行工作。作为用户,它仍然位于我们的上游,直到它准备好发布为止。

该发行版创建的内核版本将添加补丁并启用某些功能和选项。此配置由发行版构建者确定。这就是为什么 Linux 有多种风格:例如 Debian 与 Red Hat。发行版的构建者决定向其用户群提供的选项,并相应地编译内核。

一旦这项工作完成,它就可以在存储库中发布,我们就可以获取一份副本。该副本向下游流向我们。

同样,如果分发者在内核中发现错误,请修复它,然后将补丁发送给内核开发人员,以便他们可以为下游的每个人修补内核。这称为向上游贡献,因为这里的流量向上流向原始源头。

应用背景下的上游和下游

再说一遍,从技术上讲,Linux 是内核,其他一切都是附加软件。发行版构建者还向他们的项目添加了额外的软件。在这种情况下,有几个上游。发行版可以包含任意数量的应用程序,例如 X、KDE、Gnome 等。

假设您正在使用 Nano 编辑器,发现它无法正常工作,因此您向发行商提交了错误报告。开发该发行版的程序员会查看它,如果他们发现在 Nano 中插入了错误,他们将修复它并在其存储库中提供新版本。如果他们发现他们没有制造错误,分销商将向上游提交错误报告给纳米程序员。

当涉及到错误报告、功能请求等内容时,最好将它们发送到上游的发行商,因为他们维护您正在使用的发行版的内核和其他应用程序。例如,我在几台机器上使用名为 Q4OS 的发行版。如果我发现程序中存在错误,我会将其报告给 Q4OS 人员。如果您碰巧正在使用 Mint,您可以将其报告给 Mint 项目。

例如,如果您要在通用 Linux 板上发布问题,并且您提到您正在使用 Mint,您肯定会得到类似以下内容的回复:“这在 Mint 论坛中处理得更好。使用之前的“nano bug”示例,Mint 程序员可能对 nano 进行了更改,以使其在他们的发行版中更好地工作。如果他们确实犯了错误,他们会想知道,并且在犯了错误后,他们将是纠正错误的人。

修复后,更新的程序将被放入您可用的存储库中。当您收到更新时,它会向您下游传送,如下所示:

  • 如果发行商进行了修复,新版本将在发行版存储库中提供

  • 如果应用程序的程序员进行了修复,则会将其发送给下游测试新代码的发行商。一旦发现它工作正常,它就会被放置在存储库中,然后流向下游给您

自动流向下游

曾经有一段时间,用户必须获得自己的更新。用户将获得更新的源代码并编译新的可执行文件。随着时间的推移,创建了像 apt 这样的实用程序,以允许用户从存储库中提取更新的二进制文件(可执行文件)。 apt 程序是 Debian,但其他发行版也有自己的类似程序。

像 apt 这样的程序负责上游/下游工作。如果您使用升级选项运行 apt,如下所示:

sudo apt 升级

它会(上游)查看发行版存储库,找到任何需要的更新包并将它们(下游)拉到您的计算机上并安装它们。

一些发行版更进一步。发行版程序员和维护人员总是检查他们的产品。很多时候,应用程序员会改进他们的程序。系统库频繁更新、安全漏洞被堵塞等等。这些更新可供发行商使用,然后发行商在发行版的存储库中提供新版本。

有些发行版不会让您每天运行 apt,而是会提醒您可用的更新,并询问您是否需要它们。如果您愿意,只需接受,更新将发送到下游到您的计算机并安装。

结论

我刚刚想起了一些我的历史,提到了红帽。早在 1994 年或 1995 年,他们就发布了一则招聘广告,其中列出的一项很酷的工作福利是:“你可以吃所有免费的花生巧克力豆,你可以喝所有免费的胡椒博士。 “我毫不怀疑我能胜任这份工作,我只是为了这两项福利而申请的。但我没有接到电话。

那好吧。回到正题……

上游和下游实际上只是数据流向。数据向上游或下游流动的距离取决于最终需要处理该数据的人。基本上,程序员是上游,用户是下游。

同样,作为用户,我们确实不需要担心这些术语,但这些概念确实有助于软件的开发和维护。通过能够将工作分配给适当的小组,可以避免重复工作。它还确保维持标准。例如,Chrome 浏览器可能需要对其进行一些细微的更改才能在某个发行版上运行,但它将是 Chrome 的核心——它的外观和行为都将像 Chrome 一样。

如果您确实发现发行版中的任何程序存在错误,只需将其报告给发行版的维护人员即可,这通常是通过他们的网站完成的。您会将其向上游发送给他们,但您是否记得您正在向上游发送报告并不重要。

©2015-2025 Norria support@norria.com