makeによるソースコードからビルドとインストール
Gitの概要と、操作に必要な各種コマンドについて解説します。(LinuCレベル2 主題:2.04.1)
目次
Gitの概要
GitはLinuxカーネルを開発しているリーナス・トーバルズ氏が開発した分散型のバージョン管理システムです。現在、多くのプロジェクトで採用され、バージョン管理やチームによる共同開発などで使用されています。
Gitでは、単一のリポジトリ(サーバー上の特定のフォルダ)を全員で共有するのではなく、ユーザーごとにリポジトリのローカルコピー(ローカルリポジトリ)を作成し、すべての編集・更新履歴を管理します。このため、ユーザーごとに、オフラインでもバージョン管理が可能です。
Git以外のバージョン管理システムとしてはCVS(Concurrent Versions System)やSVN(Subversion)などがあります。これらは単一のリポジトリを使用するところがGit と異なります。
Gitでできること
Gitを使うと、以下のようなことができます。
- ファイルの変更履歴の管理ができる
- 変更履歴を参照してバージョンを過去のバージョンに戻すことができる
- ソースコード以外のデータファイルも管理できる
- チームで変更履歴を共有し、衝突を防ぐことができる
そのためソフトウェア開発だけではなく、ドキュメントやWebデザインなどの分野でも使用されています。
全体的な操作の流れは以下のようなイメージになります。
主要なGitコマンド
ローカルリポジトリの作成 (git init)
Gitを使用するにはリポジトリの作成が必要です。以下のgit initコマンドを実行すると、ローカルホスト上に「.git」ディレクトリが追加されて、履歴などを管理するためのファイル群が作成されます。
$ cd <リポジトリを新規に追加するディレクトリ>
$ git init
リモートリポジトリのクローニング(git clone)
既存のリポジトリにあるプロジェクトをコピーして開発に参加したり、成果物を使用したりするには、まずプロジェクトのリポジトリをコピー(クローニング)します。
$ cd <リポジトリを新規に追加するディレクトリ>
$ git clone リポジトリのURL
とすると指定したURLに存在するリポジトリ内のファイル群が、フォルダごとローカルマシン上のカレントディレクトリにコピーされます。
コピーしたローカルリポジトリ(フォルダ)内のファイルを更新したり、追加したりします。
変更履歴の保存・コメントの追加(git add, git commit, git tag)
編集を終えたら、
$ git add ファイル名
$ git commit -m “コメント"
としてローカルリポジトリに変更履歴を反映します。
また、
$ git tag <タグ名>
とすると直前のコミットに対してわかりやすい別名をつけることができます。
例えば、ソフトウェアの場合だと、アルファ版、ベータ版、リリース候補(Release Candidate)、公開版(General Availability)、Stable(安定版)、あるいはバージョン番号などのタグをつけておくと、他のチームメンバーがバージョン情報やステータスをチェックしやすくなるでしょう。
公開リポジトリに変更を送信する(git push)
commitした変更をリモートリポジトリに反映するにはpushコマンドを使用します。
$ git push 反映先(リモートリポジトリ) ブランチ
リポジトリには、バージョン管理のためにブランチとリビジョンという仕組みがあります。ブランチはメインのリポジトリから分岐(フォーク)したもので重複しない名前をつけます。
ブランチ内ではさらにリビジョンをつけて、ブランチ内でのバージョン管理を行います。
ブランチ名を指定することで、リモートリポジトリ上のブランチを切り替えてクローニング(複製)することが可能です。
ブランチを切り替える(git checkout)
$ git checkout <ブランチ名>
タグで絞り込んで表示する(例えばタグにv1.9.5を含むものだけを表示)
$ git tag -l “v1.9.5*”
オプションをつけないと、すべてのタグが表示されます。
リモートリポジトリからのクローニングとソースコードのビルド
それでは、実際にリポジトリをクローニング(複製)して、ソフトウェアをビルドしてみましょう。ここでは、コンピュータービジョンのソフトウェアで有名なdarknetのビルドにトライします。
$ git clone https://github.com/pjreddie/darknet.git
$ cd darknet
リポジトリのブランチを指定しないと、デフォルトではmasterブランチ(最新安定版)が選択されます。もしも、リリースブランチを指定してダウンロードしたい場合には、checkoutコマンドを使います。
$ git checkout <ブランチ名> # r1.10など
リポジトリをクローニングしたら、ローカルリポジトリのディレクトリに移動してmakeコマンドを実行します。
$ cd darknet
$ make
無事にコンパイルが完了したら
$ ./darknet
としてコマンドを実行してみましょう。
usage: ./darknet <function>
とコマンドの使用方法(usage)が表示されたら、ビルドに成功しています。
執筆者紹介
・太田 俊哉
・井上 博樹
このドキュメントは、LinuCレベル2の学習用の教材から抜粋して作成されたものです。教材全体は以下のPDFファイルをご覧ください。
LinuCレベル2学習教材