「上流」「下流」という言葉は非常に抽象的で、一般の人が使うことは少ないかもしれません。あなたが Linux を使用する単なる一般ユーザーであり、ソフトウェアの作成や保守に携わっていない場合、これらの用語はあなたにとって実際的な意味を持たないかもしれません。ただし、これらの用語は、Linux 世界のさまざまなコミュニティ間で通信するときに非常に役立ちます。
「上流」と「下流」という用語は、ネットワーキング、プログラミング、カーネル、さらにはサプライ チェーンなど、コンピュータ以外の分野で広く使用されています。上流と下流について議論する場合、背景情報が重要です。
簡単に言えば、上流と下流は情報の流れの方向を表します。
皆さんはインターネットに接続しながらこの記事を読んでいるので、インターネット サービス プロバイダー (ISP) に適用されるアップストリーム/ダウンストリームの例を見てみましょう。ここで、ISP はトラフィックに焦点を当てます。アップストリーム トラフィックとは、さまざまな ISP 上のユーザーから送信されるデータを指します。たとえば、定期購読のニュースレターを提供する Web サイトがある場合、私が送信する定期購読情報はアップストリーム データです。
ダウンストリーム トラフィックとは、あるユーザーから別の ISP 上の別のユーザーに送信されるデータを指し、ダウンストリーム トラフィックとみなされます。同じ購読の例を使用して、私の購読リクエストが承認され、ある電子メールで「ようこそ」というメッセージを受け取り、別の電子メールで最新のニュースレターを受け取ったとします。この場合、データはあなたによって (おそらく、あなたに代わって動作する自動ソフトウェアとして) 別の ISP のユーザーである私に送信されるため、下流に流れます。
要約: 私が必要としているもの (あなたのコミュニケーション) は上流にあります。あなたが私に提供するもの(ウェルカムメッセージと実際のコミュニケーション)は下流にあります。
データがアップストリームかダウンストリームかは、私たちユーザーにとっては重要ではないかもしれませんが、帯域幅の使用状況を監視するサーバー管理者、ディストリビューター (ディストリビューションの制作者) やプログラマーにとっては重要です。
Linux の世界には、アップストリームとダウンストリームという 2 つの主要なコンテキストがあります。 1 つはカーネルに関するもので、もう 1 つはアプリケーションに関するものです。他にもありますが、この2つを通して私の考えを表現できればと思います。
Linux はカーネルです。 Linux ディストリビューションは、ディストリビューションの作成時に、変更されていないカーネル ソース コードから始まります。次に、必要なパッチを追加し、カーネルを構成します。カーネルの構成は、ディストリビューションが提供したい機能とオプションに基づいています。決定したら、それに応じてコアが作成されます。
元のカーネルはディストリビューションの上流から取得されます。ディストリビューションがソースコードを取得すると、それは下流に流れます。ディストリビューションがカーネル コードを取得すると、変更されるまでそのコードは発行元に残ります。リリースの準備ができるまで、ユーザーの上流に留まります。
このリリースでは、パッチを追加し、特定の機能とオプションを有効にするカーネルのバージョンが作成されます。この構成は発行者によって決定されます。たとえば、Debian の www.debian.org と Red Hat の www.redhat.com のように、いくつかの Linux フレーバーが存在するのはこのためです。パブリッシャーは、ユーザーベースにどのオプションを利用可能にするかを決定し、それに応じてカーネルをコンパイルします。
この作業が完了すると、リリースの準備が整ったリポジトリに配置され、コピーを取得できるようになります。このコピーは私たちに向かって下流に流れます。
同様に、発行者がカーネルのバグを見つけて修正し、カーネル開発者にパッチを送信して、ダウンストリームの全員にカーネルにパッチを適用できるようにします。ここでのトラフィックは元の送信元に向かって上向きに流れるため、これは上流への寄与と呼ばれます。
繰り返しますが、技術的に言えば、Linux はカーネルであり、その他はすべてアドオン ソフトウェアです。発行元は、プロジェクトに追加のソフトウェアも含めます。この場合、いくつかの上流があります。ディストリビューションには、X、KDE、Gnome などのアプリケーションをいくつでも含めることができます。
nano🔗 www.nano-editor.org エディターを使用していて、それが正しく動作していないことがわかり、ディストリビューションにバグ レポートを送信したとします。発行者のプログラマーはそれを調べ、nano にバグが挿入されていることが判明した場合は、それを修正してリポジトリに新しいバージョンをリリースします。自分がバグを作成したものではないことが判明した場合、発行者は上流の nano プログラマにバグ レポートを提出します。
バグ レポートや機能リクエストなどについては、使用しているディストリビューションのカーネルとアドオン アプリケーションを保守している発行元にアップストリームに送信するのが最善です。たとえば、私は Q4OS - q4os.org というディストリビューションを複数のマシンで使用しています。プログラムにバグを見つけたら、Q4OS の人に報告します。 Mint の linuxmint.com を使用している場合は、それを Mint プロジェクトに報告します。
たとえば、通常の Linux フォーラムに質問を投稿し、Mint を使用していると言及すると、必ずこのような返信が返されます。 「この問題は Mint フォーラムで扱うのが最適です。」前述の nano のバグの例を使用すると、Mint のプログラマーがディストリビューションでの動作を改善するために nano を変更した可能性があります。間違いを犯した場合、彼らはそれについて知りたがり、間違いを犯した後は自分がそれを修正することになります。
修正が完了すると、更新されたプログラムは使用できるリポジトリに置かれます。更新されると、次のように通知されます:
◈ 発行者が修正を行うと、新しいバージョンがリリース リポジトリで利用可能になります。
◈ アプリのプログラマーが修正を行うと、新しいコードをテストする発行者に修正が送信されます。正常に動作していることが確認されると、倉庫に入れられて下流に流されます。
ユーザーが自分でアップデートを入手する必要があった時代がありました。ユーザーは更新されたソース コードを取得し、新しい実行可能ファイルをコンパイルします。時間が経つにつれて、ユーザーがソフトウェア リポジトリから更新されたバイナリ (実行可能ファイル) を抽出できるようにする apt
のようなツールが作成されました。 apt
このプログラムは Debian のものですが、他のディストリビューションにもこの目的のために独自の同様のプログラムがあります。
apt のようなプログラムは、上流/下流の作業を処理します。アップグレード オプションを指定して
apt を実行すると、次のようになります:
リーリー
一部のディストリビューションはさらに進化します。ディストリビューションのプログラマーとメンテナーは常に製品をチェックしています。アプリケーション プログラマはプログラムを改良することがよくあります。システム ライブラリは頻繁に更新され、セキュリティ ホールは塞がれます。これらの更新は発行者に提供され、発行者は新しいバージョンをリリース リポジトリで利用できるようにします。
一部のディストリビューションでは、
apt を毎日実行するように要求するのではなく、更新が利用可能であることを通知し、それが必要かどうかを尋ねます。必要な場合は、同意するだけで、アップデートがマシンに送信され、インストールされます。
繰り返しになりますが、ユーザーとしてこれらの用語を気にする必要はありませんが、これらの概念はソフトウェアの開発とメンテナンスに役立ちます。作業を適切なグループに振り分けることで、作業の重複が避けられます。これにより、標準的なメンテナンスも保証されます。たとえば、Chrome を特定のディストリビューションで実行するには若干の変更が必要になる場合がありますが、本質的には Chrome であり、見た目や動作に大きな変更はありません。
ディストリビューション内のプログラムにバグを見つけた場合は、通常は Web サイトを通じてディストリビューションの管理者に報告してください。アップストリームに送信することになりますが、レポートをアップストリームに送信していることを覚えているかどうかは関係ありません。
以上がLinux スラングの説明: アップストリームとダウンストリームとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。