git で "error: gnutls_handshake() failed:..." が出る場合
古いgitを使っていると、httpsでの通信時にエラーが出ることが。 例えば Debian5.0.4 / git-v1.7.12-315 source compiled の環境で以下のようなエラーが発生。
server01:~$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv Cloning into '/home/doracat/.rbenv'... error: gnutls_handshake() failed: An unexpected TLS packet was received. while accessing https://github.com/sstephenson/rbenv.git/info/refs fatal: HTTP request failed server01:~$
新しいバージョンのgitをパッケージ導入できればそれが早いですが、ソースコンパイルして入れなおすとすればこんな感じ。 ちなみに libcurl4-openssl-dev 等の依存ライブラリは事前に導入しておく。
# gitのソースは /usr/local/src 以下に展開済み server01:# cd /usr/local/src/git-v1.7.12-315 server01:# make clean server01:# make configure server01:# ./configure --prefix=/usr/local --with-openssl --with-curl server01:# make server01:# make install
無事に git clone 成功。
server01:~> git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build Cloning into '/home/doracat/.rbenv/plugins/ruby-build'... remote: Reusing existing pack: 2793, done. remote: Counting objects: 25, done. remote: Compressing objects: 100% (21/21), done. remote: Total 2818 (delta 12), reused 15 (delta 2) Receiving objects: 100% (2818/2818), 478.64 KiB | 217 KiB/s, done. Resolving deltas: 100% (1222/1222), done. server01:~>