サービス開発課の丸山です。
今回はちょっとした小ネタを紹介します。
私は開発用インスタンスとして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
で最新版にできそうです。
- 2019年 12月 13日現在。 Amazon Linux 2 AMI (HVM), SSD Volume Type - ami-068a6cefc24c301d2 (64 ビット x86) で確認しました。 ↩