AmazonLinux2のgitはbrewで管理すると簡単

記事タイトルとURLをコピーする

サービス開発課の丸山です。 今回はちょっとした小ネタを紹介します。
私は開発用インスタンスとしてEC2(AmazonLinux 2) を利用してリモートで開発を行っています。 ローカルPC(Mac)と開発環境が別なので、気楽に重たい処理を動かすこともできますし、ローカルPCをクリーンインストールする時に影響を受けないのでとても便利です。

ただし、AmazonLinuxでの開発で面倒な点としてgitのバージョンアップがあります。
つい先日もgit の古いバージョンの脆弱性が見つかりましたね...。
https://forest.watch.impress.co.jp/docs/news/1223826.html

実はAmazonLinuxに標準でインストールできるgitはyumの amzn2-core というリポジトリで管理されているのですが、 このリポジトリのgitはバージョンが若干古く、yum update gitでは最新バージョンのgitがインストールできないのです。1

 $ sudo yum install git
 $ git --version
git version 2.17.2 # 最新は 2.24.1
 $ sudo yum update git
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
No packages marked for update

そのため、AmazonLinuxで最新バージョンのgitを利用するにはyumのリポジトリを追加するか、 ソースから直接インストールする必要がありますが、どちらも少し面倒です。

例えば、ソースからインストールするには以下の手順の操作が必要です。

$ wget https://www.kernel.org/pub/software/scm/git/git-最新のバージョン.tar.gz
$ tar zxvf git-最新のバージョン.tar.gz
$ cd git-最新のバージョン
$ sudo make prefix=/usr/local all
$ sudo make prefix=/usr/local install

ところが、linuxbrewを使えばAmazonLinuxでも簡単に最新版のgitをインストールできることを先輩に教えていただきました 🎉 linuxbrewはもともとMacOS用のパッケージマネージャーであるHomebrewをlinuxやWSLでも利用できるようにしたものです。

こちらの公式ページ通りの手順でインストールできました。 Homebrew on Linux — Homebrew Documentation

$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
$ test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv)
$ test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
$ test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile
$ echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile

このbrewを使って、新しくgitをインストールします。

その前に、もともとyumまたはソースからgitをインストールしていた場合は古いgitを消しておきます。

# yumでインストールしたgitをremoveする場合
$ sudo yum remove git -y
# ソースからインストールしたgitを削除する場合
$ which git
/usr/local/bin/git
$ sudo rm /usr/local/bin/git

その後、新しくbrewでgitをインストールし直します。

$ brew install git
$ which git
/home/linuxbrew/.linuxbrew/bin/git
$ git --version
git version 2.24.1 # 最新版!

最新版のgitをインストールできました。 簡単ですね! brewでは homebrew/core というデフォルトのリポジトリでgitが管理されているので しばらくはとりあえず brew upgrade git で最新版にできそうです。


  1. 2019年 12月 13日現在。 Amazon Linux 2 AMI (HVM), SSD Volume Type - ami-068a6cefc24c301d2 (64 ビット x86) で確認しました。