- 概要
- OS
- 現在の git のバージョン
- git を git でクローン
- 今回インストールのバージョンのタグをチェックアウト
- READMEとINSTALL を読む
- 依存ライブラリの用意
- make
- make install
- 確認
- 参考情報
概要
Chromebook の Linux コンテナ を使っていますが、ディストリがDebianなので少し枯れたバージョンのソフトが入ります。
で、git だと
$ git version git version 2.20.1
という感じです。2.20 だと、まだ git switch
と git restore
が無いんですよね。
現在(2020-09-01時点)の最新バージョンは v2.28.0 となっているので、アップデートすることにしてみました。
が、 apt で入るのは v2.20 ですので、ソースビルドする必要があります。
git は github 上でホスティングされているので、git のソースを取得するのにgit が使えます。
OS
$ cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 10 (buster)" NAME="Debian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/"
現在の git のバージョン
$ git version git version 2.20.1
git を git でクローン
$ git clone https://github.com/git/git $ du -sh git/ 197M git/
移動しておきます。
$ cd git/
今回インストールのバージョンのタグをチェックアウト
上記で、インストールしたいバージョンのタグを見て、チェックアウト
$ git checkout -b v2.28.0 refs/tags/v2.28.0 Checking out files: 100% (467/467), done. Switched to a new branch 'v2.28.0'
READMEとINSTALL を読む
大抵のメジャーなソフトウェアにはしっかりとドキュメントがついています。
まずは、READMEとINSTALL に目を通しておきましょう。
$ ls -1 | grep -i -E 'readme|install' INSTALL README.md $ lv README.md $ lv INSTALL
依存ライブラリの用意
INSTALL を見ると git が依存しているライブラリが記載されています。
以下のページとかを参照して必要なものをインストール
make
INSTALL を読むと、make 実行時に prefix に所定のディレクトリを指定すると、そこにインストールできるよとのこと。
私は $HOME/.local
の下に置きたいので、以下のように指定しました。後、CUIで利用するのでGUIインターフェースはいらないので除去するようにしました。
$ make prefix=$HOME/.local/git NO_TCLTK=1 GIT_VERSION = 2.28.0 * new build flags CC fuzz-commit-graph.o CC fuzz-pack-headers.o CC fuzz-pack-idx.o CC bugreport.o * new link flags CC common-main.o ・ ・ ・
少し時間がかかります。気長に待ちましょう。
make install
最後にインストールします。今回は自分のホームディレクトリ配下にインストールするので make install するのにルート権限は必要ありません。
$ make prefix=$HOME/.local/git NO_TCLTK=1 install SUBDIR templates install -d -m 755 '/home/devlights/.local/git/bin' install -d -m 755 '/home/devlights/.local/git/libexec/git-core' install git-bugreport git-credential-store git-daemon git-fast-import git-http-backend git-imap-send git-remote-testsvn git-sh-i18n--envsubst git-shell git-http-fetch git-http-push git-credential-cache git-credential-cache--daemon git-remote-http git-remote-https git-remote-ftp git-remote-ftps git-bisect git-difftool--helper git-filter-branch git-merge-octopus git-merge-one-file git-merge-resolve git-mergetool git-quiltimport git-request-pull git-submodule git-web--browse git-add--interactive git-archimport git-cvsexportcommit git-cvsimport git-cvsserver git-send-email git-svn git-p4 git-instaweb '/home/devlights/.local/git/libexec/git-core' install -m 644 git-mergetool--lib git-parse-remote git-rebase--preserve-merges git-sh-i18n git-sh-setup '/home/devlights/.local/git/libexec/git-core' install git git-receive-pack git-shell git-upload-archive git-upload-pack git-cvsserver '/home/devlights/.local/git/bin' make -C templates DESTDIR='' install ・ ・ ・
確認
インストールが終わったら確認してみます。
$ cd $HOME/.local/git/bin $ ls -1 git git-cvsserver git-receive-pack git-shell git-upload-archive git-upload-pack $ ./git version git version 2.28.0
オッケイですね。
私の場合は、$HOME/.local/bin にパス通しているので、最後にシンボリックリンクを貼って終わりです。
$ cd $HOME/.local/bin $ ln -s $HOME/.local/git/bin/git git $ ls -l | grep -- "->" | grep git lrwxrwxrwx 1 devlights devlights 34 9月 1 11:14 git -> /home/devlights/.local/git/bin/git
参考情報
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場