gitのバージョンを2.2.1にする CoreOSで
CoreOSでも好きなバージョンのgitを入れる
手元のvagrant-coreosを使うと
gitのバージョンは1.8.3.2、
さっきVultrでCoreOS(alpha)をインストールすると
gitのバージョンは2.0.4でした。
gitの最新版は2.0.5も出ています。
CoreOSはほっとけばOSが勝手にアップデートするという設定もあるので、
意識することはないのですが、gitの最新版を手で入れてみます。
CoreOSだけでgitをビルドするのはつらいので、
コンテナの中でdebianを動かしてgitをビルドし、それを外側にもってくることで
簡単にgitの最新バージョンを手に入れることができます。
そういうdocker imageを上げておいた。
追記
あ、vagrantじゃないcoreosでは動かなかった、、原因調べる done
方法
$ docker run --rm -v /opt/bin:/target hoshinotsuyoshi/git2.2.1-on-coreos
注意:/optを汚します(CoreOSはデフォルトだと/optディレクトリはないはずだが)
こうすると/opt/bin/に最新のgitが置かれるので、PATHの優先順を変えれば最新のgitが使えます。
Dockerfileはこんなかんじ。
FROM debian:jessie RUN apt-get update && \ apt-get -y install libcurl4-gnutls-dev libexpat1-dev gettext \ libz-dev libssl-dev wget build-essential zlib1g-dev && \ export DIR=/opt && \ mkdir -p $DIR/source && \ cd $DIR/source && \ wget "https://www.kernel.org/pub/software/scm/git/git-2.2.1.tar.gz" && \ tar xzvf git-2.2.1.tar.gz RUN export DIR=/opt && \ cd $DIR/source/git-2.2.1 && \ ./configure --prefix=$DIR/git-2.2.1-static CFLAGS="${CFLAGS} -static" NO_OPENSSL=1 NO_CURL=1 && \ make && \ make install RUN echo '#!/bin/sh\n\ if mountpoint -q /target; then\n\ echo "Installing git to /target"\n\ cp /opt/git-2.2.1-static/bin/git /target/git\n\ else\n\ echo "/target is not a mountpoint."\n\ echo "- re-run this with -v /opt/bin:/target"\n\ fi\n\ ' > /install.sh && \ chmod +x /install.sh CMD /install.sh
hoshinotsuyoshi/git2.2.1-on-coreos · GitHub
それでいいのか感はあるが、かんたん。
なんかimageのサイズが大きかったので、終わった後は消したほうがいいかも
$ docker rmi hoshinotsuyoshi/git2.2.1-on-coreos