リポジトリにプリコンパイルされたパッケージがあるのはなぜですか?

リポジトリにプリコンパイルされたパッケージがあるのはなぜですか?

私はLinux&Co.を介して、ユーザーがさまざまなリポジトリから多くのパッケージをインストールできることが好きです。 AFAIK、ソースパッケージも付属しているので、直接コンパイルできます。

しかし、自分でコンパイルできますが、なぜプリコンパイルされたパッケージを「メンテナンス/提供」するのですか?保有/提供する意図は何ですか?

ソースパッケージのみをダウンロードし、オペレーティングシステムが残りのタスクを実行するようにLinuxを設定できますか? (事前にコンパイルされたパッケージのインストールと似ていますか?)

回答ありがとうございます。

答え1

長所と短所があります。事前にビルドされたパッケージを提供するディストリビューションは、パッケージを一度ビルドするのに時間を費やし(サポートするすべての構成で)、ユーザーはビルドに時間を費やすことなくパッケージをインストールできます。ユーザーはディストリビューションのバイナリをそのまま受け入れます。大規模なディストリビューションのパッケージのインストール数を考慮すると、どこでも再コンパイルする必要がなく、時間がかかります。

ソースコードとそれを構築するために必要なインフラストラクチャを提供し、ユーザーがすべてをローカルで構築するように依存するいくつかのディストリビューションがあります。ルート図。これにより、ユーザーはパッケージの構築方法を正確に制御できます。

このパスをたどると、パッケージの構築を簡素化して時間を節約しても、パッケージの構築に多くの時間を費やす準備ができているはずです。私はDebianで最も複雑なパッケージを管理していませんが、私のパッケージの1つは64ビットx86ビルダーでビルドするのに2時間以上かかる遅いアーキテクチャで12時間以上

答え2

  1. はい、意味みんな人々はパッケージをコンパイルするのに十分なCPU / RAM /ストレージスペース/時間/知識を持っています。いいえ、そうではありません。その逆は本当です。ほとんどの人は、何かがコンパイルされるまで数時間待つのが好きではありません。 Raspberry PiでFirefoxをコンパイルするには数週間かかることがあります。これは大丈夫ですか?いいえ。

  2. 2番目の理由は、Linuxディストリビューションが正常な動作のために制御され、マルウェアフリーの環境でソフトウェアパッケージを構築しますが、エンドユーザーが正しく実行されるという保証がないためです。

  3. ディストリビューションのすべてのユーザーは最終的にまったく同じコードを実行します。これはバグの報告とデバッグに役立ちますが、ソフトウェアを直接コンパイルすることを決めたユーザーにはそうではありません。

  4. 多くの最新のLinuxディストリビューションはセキュアブートをサポートしています。セキュアブートでは、エンドユーザーに配布できないキーでパッケージに署名する必要があります。これは信頼チェーンが完全に壊れていることを意味します。

Gentoo、LFS、またはAURリポジトリを使用して、Arch Linuxですべてを構築できます。実際、ほとんどのディストリビューションはパッケージをコンパイルできますが、上記の3つのディストリビューションはコンパイルを念頭に置いて作成されました。

答え3

しかし、自分でコンパイルできますが、なぜプリコンパイルされたパッケージを「メンテナンス/提供」するのですか?保有/提供する意図は何ですか?

単純な経済学。大規模なクラスタでさえ、ディストリビューションパッケージ全体をコンパイルするのに数週間かかり、多くのエネルギーを消費し、多くの熱が発生します。

すべてのユーザーに繰り返し実行するよりも、これを一度だけ実行する方が合理的です。

また、基本インストールの一部として、すべてのパッケージで使用されるすべてのプログラミング言語のすべてのコンパイラを含める必要があるため、基本インストールのサイズと複雑さが大幅に増加します(したがって攻撃面が増加します!!!)。

非常に非常に数年前は本当に好きだった。最初からLinux私は基本的なLFSシステムの完全なインストールを自動化するスクリプトを書いています。 2日ほど進みましたが、基本的なLFSシステムは次のとおりです。非常に基本的なシステム。これにはカーネル、libc、シェル、ブートローダ、およびいくつかの基本的なツールが含まれています。それがすべてです。グラフィック環境なし、Webブラウザなし、電子メールプログラムなし、オフィススイートなし、マルチメディアプレーヤーなし、Java環境なし、Python/Ruby/PHP/Node.js/好きなプログラミング言語が何であれ、ゲームなし、フォトエディタなし、科学ツールもなく、コンピュータを「有用」にするすべてが実際にあるわけでもありません。

そのうちのいくつかは非常に大きく、コンパイルするのに長い時間がかかります。個々のパッケージを簡単にピックアップできます。実行しているコンピューターに応じてコンパイルされます。 (ルーターやスマートウォッチを考えてみてください。)

答え4

私は閉鎖された環境で働く。当社のシステムの一部は重要とみなされ、ロックされています。コンパイラとデバッガはシステムでは許可されていません。
これらのパッケージは、ベンダーから提供されたとおりにインストールされます。
ソースからコンパイル/インストールすると、次のことが行われます。

  1. 他の人が知らないようにソースコードを変更することで、パッケージ機能を変更できます。
  2. ベースラインの構築、昇格、設置に必要な時間を増やします。 RTOS環境では中断を最小限に抑える必要があります。
  3. これらのパッケージは常に同じ(標準)方法でコンパイルされます。コンパイラ、設定ファイルなどの変更について心配する必要はありません。

    つまり、すべてのコンピュータが正確にベンダーがインストールを希望する方法で同じパッケージがインストールされます。

関連情報