LinuCレベル2 201試験の出題範囲「2.04.1 makeによるソースコードからのビルドとインストール」の技術的内容についての解説をまとめました。
重要度 3 概要 ソースコードから実行プログラムをビルドしてインストールできる。これには、ソースファイルの展開も含まれる。 詳細 gitを使ってソースコードを入手する。
・git clone, git tag -l, git checkout
一般的な圧縮およびアーカイブユーティリティを使用して、ソースコードを展開する。
・gzip, gunzip, bzip2, xz, tar, unzip
ソースコードにパッチを適用する。
・patch
configureスクリプトにパラメータを適用する。
・configure
プログラムをビルドするmakeの実行について基本を理解する。
・make, make install

Gitの概要
Git(ギット)は分散型のバージョン管理システムです。
GitはLinuxカーネルを開発しているリーナス・トーバルズ氏が開発した分散型のバージョン管理システムです。現在、多くのプロジェクトで採用され、バージョン管理やチームによる共同開発などで使用されています。

分散型とはどういうことかというと、以下のLinuCの公式サイトの説明にある通り、ユーザーごとにリポジトリを自身で保持して管理することができる仕組みのことです。
Gitでは、単一のリポジトリ(サーバー上の特定のフォルダ)を全員で共有するのではなく、ユーザーごとにリポジトリのローカルコピー(ローカルリポジトリ)を作成し、すべての編集・更新履歴を管理します。このため、ユーザーごとに、オフラインでもバージョン管理が可能です。


Gitでできること
LinuC公式サイトに記載されている内容を引用すると、以下の内容がGitではできます。
Gitを使うと、以下のようなことができます。
- ファイルの変更履歴の管理ができる
- 変更履歴を参照してバージョンを過去のバージョンに戻すことができる
- ソースコード以外のデータファイルも管理できる
- チームで変更履歴を共有し、衝突を防ぐことができる

Gitを使用する流れ
Gitは以下の流れで使用します。
| リポジトリ複製 | git clone |
| ファイル追加 | git add |
| ローカルに反映 | git commit |
| リモートに反映 | git push |
patch コマンドの概要
patchはLinuxにパッチを適用するために使用するコマンドです。パッチの概要は以下LinuC公式サイトから引用した説明になります。
パッチとは、プログラムの一部だけを更新・追加することで、バグの修正・セキュリティホールの修正・機能追加や変更を行なうため、小さいプログラムコードのことです。もちろんパッチだけではプログラムは動作しません。
本体となるプログラムにパッチを「付け加える」ことで、プログラムが更新され、動作するようになります。「パッチ(patch)」とは元々「継ぎ当ての小さい布」のことを指します。
すなわち、まさにプログラムに付け足して、穴を塞ぐ「当て布」がパッチだ、ということができるでしょう。ちなみに、パッチの適用にはpatchコマンドなどを利用する必要があります。
エディタなどでパッチを適用するということもできますが、慣れていないと危険な方法です。

patchコマンドの主なオプションは以下です。
- -p0…パッチ内のパスを修正しない
- -p1…パスの先頭のスラッシュまでを取り除く
- -pN…N番目のスラッシュまで取り除く
- -d…ディレクトリの指定
- -R…変更の取り消し
パッチコマンドの使い方は以下のようになります。
# リダイレクトを使用して実行する
pacth [オプション] < パッチファイル
#パイプ(|)を使用する
cat パッチファイル | patch [オプション]
#パッチの引数にすべて指定する
patch [オプション] 対象 パッチファイル
