7. ソースコードのコンパイル

パッケージがソースコードとしてのみ提供されている場合があります。それを使用するには、システム上でコンパイルしてインストールする必要があります。このレッスンでは、ソースコードからコンパイルする方法の一般的なプロセスを順を追って説明します。

システムの準備

何かをコンパイルする前に、必要なツールが必要です。Ubuntu のような Debian ベースのシステムでは、単一のコマンドでそれらをインストールできます。

sudo apt install build-essential

build-essentialパッケージは、GCC コンパイラやコンパイルに不可欠なmakeユーティリティなど、一連のソフトウェア開発ツールをインストールします。

ツールをインストールした後、通常は.tar.gzファイルであるソースコードパッケージの内容を展開します。

tar -xzvf package.tar.gz

続行する前に、展開されたディレクトリ内のREADMEまたはINSTALLファイルを必ず確認してください。これらのファイルには、その特定のパッケージに必要な固有の手順や依存関係が含まれていることがよくあります。

標準的なビルドプロセス

開発者によってcmakeのようなさまざまなビルドシステムが使用されることがありますが、最も伝統的な方法は 3 ステップのプロセスを経ることです。ソースコードのビルド方法を学ぶ上で、これを理解することは基本となります。

まず、configureスクリプトを実行します。このスクリプトは、ソフトウェアが正しくビルドおよび実行されるために必要なすべての依存関係とライブラリについてシステムをチェックします。

./configure

./プレフィックスは、シェルに現在のディレクトリからスクリプトを実行するように指示します。スクリプトが不足している依存関係を報告した場合は、続行する前にそれらをインストールする必要があります。

次に、makeコマンドを実行します。このコマンドは、ディレクトリ内のMakefileというファイルを読み取ります。このファイルには、ソースコードをどのように実行可能なプログラムにコンパイルするかについてのルールのセットが含まれています。

make

最後に、ソフトウェアをシステムにインストールするには、通常次のように実行します。

sudo make install

このコマンドは、コンパイルされたファイルを適切なシステムディレクトリにコピーし、ソフトウェアが使用可能になります。

より良いインストール方法

sudo make installは機能しますが、重大な欠点があります。それは、ソフトウェアをシステムのパッケージマネージャに登録しないことです。これにより、後でパッケージを追跡、更新、またはきれいにアンインストールすることが困難になります。

はるかに良いアプローチはcheckinstallを使用することです。このツールはインストールプロセスを実行しますが、ファイルを直接コピーする代わりに、ネイティブのシステムパッケージ(Debian/Ubuntu では.debファイルなど)を作成してインストールします。

sudo checkinstall

checkinstallを使用すると、コンパイルされたソフトウェアがパッケージ管理システムに統合されます。これにより、後でaptdpkgを使用して、公式リポジトリからインストールした他のパッケージとまったく同じように簡単に削除できます。このため、make installよりも常にcheckinstallを優先すべきです。

make installでインストールされたパッケージをアンインストールするには、ソースディレクトリに戻ってsudo make uninstallを実行しますが、これは必ずしも信頼できるわけではありません。

ログインして学習進捗を保存

サインイン

演習

練習あるのみです!ソースコードからソフトウェアをビルドする理解を深めるための実践的なラボを以下に示します。

  1. Linux でソースコードからソフトウェアをビルドする - configuremakemake installの使用を含め、ソースコードからソフトウェアをビルドおよびインストールする基本的なプロセスを練習します。

このラボは、概念を実際のシナリオに適用し、ソフトウェアのコンパイルに対する自信を高めるのに役立ちます。

クイズ

ALWAYS `make install`の代わりに何を使用すべきですか? (ケースに注意して、英語で回答してください)