今回は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]: *** [perl language=".mak"][/perl] エラー 2 make: *** [perl language="/perl.mak"][/perl] エラー 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の注意喚起の文章をよく読んでください。
その上で紹介されているページから、自分に都合のよいバージョンをダウンロードしてましょう。
〔参考サイト〕