質問: Linuxのソースからパッチをあてる際の各コマンドが同じ様なもので具体的に何をしているのかイメージがつきません。 例えば、`tar.xz`のファイルを解凍してtarで固められたファイルを展開する、ところまではイメージがつきます。 その後、 1. `./configure` 2. `make` 3. `su` (必要に応じて) 4. `make install` とやると思いますが、これらは何をやっているかイメージを教えてください。
回答: 典型的には、Autotools というツールを使ってインストールの流れが作られた場合に見られる手順です。 * `./configure`:ビルド用の環境を作ります。 たとえば環境変数を確かめたり、ビルドに必要なバイナリやライブラリが存在しているかチェックしたり、Makefile を作ったりします。 * `make`:ソースコードをビルドしてバイナリを作ります。 ここで呼び出されているのは Make というビルドツールで、`./makefile` 等のファイルに基づいてビルドを行います。ここで作られたバイナリはまだ今のワーキングディレクトリの下にあります。 * `make install`:バイナリをシステムへインストールします。 作ったバイナリをシステム全体で使えるようにするため、システム用のバイナリが置かれているパスへバイナリをコピーします。このとき場合によっては権限が必要なので `su` や `sudo` が併用されます。たとえば `/usr/bin` へのコピーに権限が必要だったりします。 ソースコードをビルドするだけなら `make` でことたりるのですが、環境による差に対応したり、ビルド用の条件をカスタマイズしたりしやすいように `./configure` を行っています。