1. TOPTOP
  2. インフラ
  3. GitHub

GitのバージョンUPについて。さくらのクラウド(CentOS6.5)にデフォルトで入っていたGit version 1.7.1をGit version 1.9.0に

github

git_vulnerability

今回はGitのバージョンUPについて。今回のチャレンジは、先日のGitの脆弱性(新しいタブで開く)に関連して行ったものです。

結論から先に言うと、バージョンUPそのものは上手く行きました。ですが、そもそもダウンロードするべきGitのバージョンを間違ってしまいました。

途中で、バージョンUPさせるGitをwgetで取得するところがありますが、以下のように読み替えてください。

  • × → $ sudo wget https://git-core.googlecode.com/files/git-1.9.0.tar.gz
  • 〇 → $ sudo wget https://www.kernel.org/pub/software/scm/git/git-2.2.1.tar.gz

GitのバージョンUPの手順

手順そのものは参考になると思いますので、以下で説明していきましょう。

1.CentOSとgitのバージョン確認

$ cat /etc/redhat-release
CentOS release 6.5 (Final)

$ git --version
git version 1.7.1

CentOS 6.5はさくらのクラウドで使用しています。

gitと依存関係にあるパッケージの確認

$ sudo yum list gettext-devel
$ sudo yum list openssl-devel
$ sudo yum list perl-ExtUtils-MakeMaker
$ sudo yum list zlib-devel
$ sudo yum list expat-devel
$ sudo yum list curl-devel
$ sudo yum install curl-devel

デフォルトでは、curl-develが入っていなかったのでインストール

git version 1.7.1のアンインストール

$ sudo yum remove git

最新版のgitのインストール

× → $ sudo wget https://git-core.googlecode.com/files/git-1.9.0.tar.gz
〇 → $ sudo wget https://www.kernel.org/pub/software/scm/git/git-2.2.1.tar.gz

冒頭で説明した通り、〇の方を実行。以下の作業でgit-1.9.0が頻繁に登場します。適宜、git-2.2.1に読み替えてください。

解凍・移動

$ sudo tar zxvf git-1.9.0.tar.gz
$ cd git-1.9.0

環境設定

$ sudo make clean
$ sudo make configure
$ sudo ./configure --prefix=/usr/local

エラー処理(zlib.hを入れる)

$ sudo make all
* new build flags
    CC credential-store.o
credential-store.c:1 から include されたファイル中:
cache.h:19:18: 警告: zlib.h: そのようなファイルやディレクトリはありません
In file included from credential-store.c:1:
cache.h:21: error: expected specifier-qualifier-list before ‘z_stream’
make: *** [credential-store.o] エラー 1

「zlib.hがない」と言われてエラー。2.で確認したときにzlib-develは入っているはずだったんですが…

$ cd
$ sudo yum install zlib-devel.x86_64

言われた通りに、zlib-develをインストールします。

エラー処理(perl-ExtUtils-MakeMakerを入れる)

$ cd git-1.9.0
$ sudo make all
/usr/bin/perl Makefile.PL PREFIX='/usr/local' INSTALL_BASE='' --localedir='/usr/local/share/locale'
Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 3.
BEGIN failed--compilation aborted at Makefile.PL line 3.
make[1]: ***  エラー 2
make: ***  エラー 2

今度は、Makefile.PLでエラー。

$ cd
$ sudo yum install perl-ExtUtils-MakeMaker
$ cd git-1.9.0
$ sudo make all

ここも素直にperl-ExtUtils-MakeMakerをインストール。これでmake allが通ります。

シンボリックリンクをつくりインストール完了

$ sudo make install
$ cd
$ git --version
$ -bash: /usr/bin/git: そのようなファイルやディレクトリはありません

make installでインストールが完了と思いきや、「そのようなファイルやディレクトリはありません」(泣)

$ which git
$ cd /usr/local/bin/git
$ sudo ln -s /usr/local/bin/git /usr/bin/git
$ git --version
$ git version 1.9.0

なので最後にシンボリックリンクを先につくって、バージョンUP完了!Git version 1.7.1をGit version 1.9.0に(泣)

GitHubの注意喚起をよく読もう!

今回は修正の例としてgit-2.2.1を用いています。まずはGitHubの注意喚起(新しいタブで開く)の文章をよく読んでください。

その上で紹介されているページ(新しいタブで開く)から、自分に都合のよいバージョンをダウンロードしてましょう。

〔参考サイト〕