ホームページ > 記事 > システムチュートリアル > Linux でのバイナリ パッケージとソース コード パッケージ: どちらを選択する必要がありますか?
Linux システムでは、インストール プログラムは通常、従来の Windows インストール ソフトウェア方法とは異なります。事前に構築されたパッケージからインストールすることも、プログラムを自分でコンパイルすることもできます。ますます人気が高まっているディストリビューションでは、事前に構築されたパッケージが主要なソリューションとなることがよくあります。ただし、場合によっては、ソース コードからコンパイルする必要がある場合もあります。これも Linux オペレーティング システムの特徴の 1 つです。ソース コードからプログラムをコンパイルすると、プログラムがシステム上で適切に実行されることが保証され、より高い柔軟性とカスタマイズが可能になります。どの方法を選択する場合でも、ニーズに基づいて最適な方法を選択する必要があります。
Linux へのプログラムのインストールは、通常、Windows にソフトウェアをインストールする従来の方法とは異なります。ベンダーの Web サイトからインストーラーをダウンロードするのではなく、ファイルはプログラム リポジトリから取得され、通常は Linux ディストリビューションに合わせてカスタマイズされます。 Linux パッケージ マネージャーまたはアプリ ストアを使用して、このリポジトリにアクセスできます。
これらのリポジトリ内のプログラムは複数のファイルで構成され、簡単にアクセスして配布できるようにアーカイブ形式でパッケージ化されています。たとえば、Debian は DEB 形式を使用してプログラムを保存および配布します。これらのパッケージ化されたファイルはバイナリ パッケージと呼ばれます。
これらのファイルを抽出してコンピュータ (通常はパッケージ マネージャーまたはアプリ ストア) にインストールするには、特別なプログラムが必要です。これらのツールには、インストールされたファイルの追跡やソフトウェア更新の管理など、他の便利な機能もあります。
Flatpak や Snap などの新しいパッケージ形式は、さまざまなバージョンの Linux で動作しますが、依然としてプリコンパイルされたバイナリで構成されています。どちらも、インストールにはグラフィカル アプリ ストアまたはコマンド ライン ベースのパッケージ マネージャーが必要です。
すべてのソフトウェアは、C や C++ などの特定のプログラミング言語で書かれた、ソース コードと呼ばれるテキスト行で構成されています。通常、このソース コードをアーカイブ ファイルにパッケージ化し、それをパッケージと呼ぶことはできません。これらの行は、コンピュータが理解して実行できる言語に翻訳する必要があります。
このプロセスはコンパイルと呼ばれ、最終的にはコンピューターで実行できるバイナリ ファイルが作成されます。ソフトウェア パッケージとソフトウェアの違いは、ソフトウェアのバイナリ ファイルが構成ファイルなどの他のファイルとともにパッケージに保存されることです。
プログラムをソースからインストールするということは、パッケージ マネージャーを使用せずにインストールすることを意味します。ソース コードをコンパイルし、バイナリをコンピュータにコピーする必要があります。
ほとんどの場合、プロジェクトのソース コードは、GitHub、GitLab、Bitbucket などのホスティング サービスからダウンロードできます。大規模なプログラムでは、個人の Web サイトでソース コードをホストする場合もあります。このコードは通常、アーカイブ形式 (ソース コード パッケージとも呼ばれます) で圧縮されます。
特別なツール セットは、ビルド プロセスの自動化に役立ちます。 Linux デスクトップでは、通常、make と呼ばれるコマンド ライン プログラムの形式で存在します。さまざまな言語で書かれたソース コードをバイナリに変換するには、特定のコンパイラとコマンドが必要です。 make プログラムはこのプロセスを自動化します。
この自動化を機能させるために、プログラムは Makefile と呼ばれるファイルを提供します。このファイルは、make に実行すべき内容とコンパイル方法を指示します。現在、Makefile は通常、CMake などの特別なソフトウェアによって自動的に生成されます。ここで介入する必要があります。ここから、ソフトウェアにコンパイルする特定の機能を指定できます。
たとえば、次のコマンドは CMake を使用して Calligra オフィス スイートの構成ファイルを生成します。作成されたファイルは、Make プログラムに Calligra の Writer コンポーネントのみをコンパイルするように指示します。
リーリーこの手順を完了すると、ユーザーは make ツールを実行して結果をコンパイルし、コンピューターにコピーするだけです。手順は次のとおりです。
リーリーこれはプログラムをコンパイルするための一般的なモードですが、ソース コード パッケージをインストールする方法は他にもたくさんあります。たとえば、Gentoo Linux にはソース コード パッケージを処理する方法が組み込まれており、プロセスがより速く簡単になります。ただし、バイナリ パッケージをビルドするには、上記のコマンドよりも多くの手順が必要です。
Linux を使用している場合は、インストールしたソフトウェアが誰かによってプリコンパイルされている可能性が高くなります。これは、ソース コード パッケージを使用するよりも一般的です。しかし、なぜこのようなことが起こっているのでしょうか?
1. バイナリ バージョンのほうが管理が簡単です
バイナリ パッケージには、コンパイルされたインストール ファイルが含まれるだけでなく、その他の情報も格納されるため、パッケージ マネージャーがすべてのプログラムを簡単に追跡できるようになります。たとえば、DEB ファイル (Debian とその派生製品のパッケージ形式) には、プログラムの実行に必要な他のソフトウェアやその現在のバージョンなどの重要な情報も含まれています。
これにより、プログラムを正常に実行するために必要な他のファイルについて心配する必要がなくなるため、パッケージのインストールが非常に簡単になります。パッケージ マネージャーは、パッケージ自体からこの情報を読み取り、必要な依存関係をすべて自動的にダウンロードできます。
また、ソース コードからプログラムをインストールする場合、コードがスタンドアロン バイナリ パッケージにコンパイルされない限り、ソフトウェアを管理するのはユーザーの責任となります。それを機能させるために必要な他のプログラムを覚えて、自分でインストールする必要があります。
2. バイナリ バージョンの方が安定性が優れています
パッケージ マネージャー リポジトリの保守を担当する人は、バイナリをテストし、発生した問題を修正しようとすることがよくあります。これにより、パッケージの管理者がソース コードをインストールする人が見落としていた可能性のある問題を発見できるため、安定性が向上する可能性があります。
さらに、パッケージは通常、システム上で確実に実行されるように一連の厳格なルールに従う必要があります。たとえば、Debian と Ubuntu には両方ともポリシー マニュアルがあり、他の多くの Linux ディストリビューションにも同様のマニュアルがあります。
一部のプログラムは、実行するために同じソフトウェアの依存関係の異なるバージョンに依存します。パッケージ リポジトリは、問題が発生しないように、これらの競合を解決するために最善を尽くします。
プログラムをソースからインストールすることは、誰もが行う必要があるわけではありません。通常、バイナリ パッケージを使用したほうがコンピュータのメンテナンスが容易です。それでも、この少し複雑なプログラムのインストール方法を使用することにはいくつかの利点があります。
1. ソースコードは最新のソフトウェアを提供します
プログラムの信頼性を高めることの欠点の 1 つは、改善と修正に時間がかかることです。バイナリが利用可能な場合もありますが、ソース コードは後で提供されます。最新かつ最高のソフトウェアを入手したい人は、新しいソフトウェアに交換する際に、多少の安定性を犠牲にしても構わないかもしれません。
プログラムをコンパイルせずにこのニーズを満たすことができる Linux オペレーティング システムもいくつかありますが、いくつかの欠点もあります。たとえば、修正パッケージ バージョンを頻繁にリリースしないソフトウェアは、リポジトリ内で最新の状態を維持することが困難になります。対照的に、ソースからのインストールにはこれらの制限はありません。
これは、バイナリ パッケージは通常、正式にリリースされたプログラム バージョンに基づいて作成されるためです。したがって、通常、これらのバージョン間の変更は考慮されません。ソース コードから独自のソフトウェアをコンパイルすると、これらの変更の恩恵をすぐに受けられます。
Linux オペレーティング システムでは、必要なソフトウェアが事前に用意されていない可能性もあります。これまでは、ソースからインストールすることが唯一の選択肢となっていました。一般的なパッケージ形式ではこれが変更されました。また、Flatpak および Snap パッケージは、通常、システム リポジトリよりも速くアップデートを受け取ります。しかし、必要なソフトウェアを入手するにはコンパイルが唯一の方法である場合がまだあります。
2. 機能は自分で選択できます
FFmpeg の機能 ソース コード パッケージを使用するもう 1 つの利点は、インストールするプログラムをより詳細に制御できることです。バイナリ リポジトリからインストールする場合、パッケージをカスタマイズできる機能は制限されます。
FFmpeg を例に挙げると、これはコマンド ライン ベースのオーディオおよびビデオ変換ツールです。デフォルトでは、大量の機能が付属していますが、中にはまったく使用しないものもあります。たとえば、FFmpeg は JACK オーディオをサポートしていますが、このソフトウェアは通常実稼働環境でのみ使用されます。
FFmpeg をコンパイルすると、不要な機能を削除し、より軽量でニーズに合わせたものにすることができます。同じ原則が他の巨大なプログラムにも当てはまります。
リソースが限られている場合、機能を削除すると負荷を効果的に軽減できます。 Gentoo Linux ベースの ChromeOS が多くのローエンド コンピュータで使用されていることも不思議ではありません。 Gentoo はソース コードに基づいており、多くのソフトウェアをコンパイルするため、これらのシステムの実行が軽量になる可能性があります。
毎日パッケージをコンパイルする必要はないかもしれませんが、これは便利なアプローチです。それでも、Snap Store や Flathub などのサイトから新しいユニバーサル パッケージ形式を入手できるため、最新のソフトウェアを入手するためにソースからビルドする必要が少なくなります。
以上がLinux でのバイナリ パッケージとソース コード パッケージ: どちらを選択する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。