f

2014-07-20

Install Git from source with cURL, SSL

Gitを使ってNeoBundleInstallしたり,cloneするときに以下のエラーが出ることがある。
^@fatal: Unable to find remote helper for 'https'


これはGithttpsにアクセスできるようにビルドされていないために起こる。具体的にはSSLを有効にしたcURLありでGitをビルドすれば解決する。
一時的に問題を回避したければ,.git/configURLが書いてあれば,それのhttpgitに変更すればとりあえず解決する。しかし,長期的に見るとやはりcURLをありにしてビルドしてhtppsにも対応したほうがよいだろう。以下のサイトを参考にしてhttpsに対応したGitをソースコードからインストールした。
参考:fatal: Unable to find remote helper for 'https'の対処 - rcmdnk's blog http://rcmdnk.github.io/blog/2013/07/27/computer-cygwin-git/




==インストールの流れ==
SSLを有効にしたcURLでないとhttpsが使えない。そのため以下の順番でインストールを行う。
  1. OpenSSL
  2. cURL
  3. Git

8.4.1 Install OpenSSL

配布元:OpenSSL: The Open Source toolkit for SSL/TLS http://www.openssl.org/
cd ~/local/src
./config --prefix=${HOME}/local/stow/openssl-1.0.1h enable-shared
make
make install
cd ~/local/stow
xstow openssl-1.0.1h


ポイント:
configのときにenable-sharedにしておく。これが大事。
参考:[SOLVED] cURL with SSL dependency problems with libssl.so and libcrypto.so | Linux.org http://www.linux.org/threads/solved-curl-with-ssl-dependency-problems-with-libssl-so-and-libcrypto-so.4413/


configしたときにno-sharedがついていたらだめ。
senooken% ./config |head -n 15 [~/local/src/openssl-1.0.1h]
Operating system: x86_64-whatever-linux2
Configuring for linux-x86_64
Configuring for linux-x86_64
no-ec_nistp_64_gcc_128 [default] OPENSSL_NO_EC_NISTP_64_GCC_128 (skip dir)
no-gmp [default] OPENSSL_NO_GMP (skip dir)
no-jpake [experimental] OPENSSL_NO_JPAKE (skip dir)
no-krb5 [krb5-flavor not specified] OPENSSL_NO_KRB5
no-md2 [default] OPENSSL_NO_MD2 (skip dir)
no-rc5 [default] OPENSSL_NO_RC5 (skip dir)
no-rfc3779 [default] OPENSSL_NO_RFC3779 (skip dir)
no-sctp [default] OPENSSL_NO_SCTP (skip dir)
no-shared [default]
no-store [experimental] OPENSSL_NO_STORE (skip dir)
no-zlib [default]


8.4.2 Install cURL

配布元:curl and libcurl http://curl.haxx.se/
cd ~/local/src
#./configure --prefix=${HOME}/local/stow/curl-7.37.1 --with-ssl=${HOME}/local
LDFLAGS=-L$HOME/local/lib ./configure --prefix=${HOME}/local/stow/curl-7.37.1
make
make install
cd ~/local/stow
xstow curl-7.37.1


configure時に以下のようにSSLenabledになっていればよい。
SSL support: enabled (OpenSSL)


configure時にLDFLAGSでライブラリの場所を指定するか,--with-ssl=SSLのルートディレクトリを指定すればよい。


8.4.3 Install Git

配布元:Git - Downloads http://git-scm.com/downloads
cd ~/local/src
tar Jxf git-2.0.2.tar.xz
cd git-2.0.2
# ./configure --prefix=$HOME/local/stow/git-2.0.2 --with-curl=$HOME/local
LDFLAGS=-L$HOME/local/lib ./configure --prefix=$HOME/local/stow/git-2.0.2
make
make install


curlのライブラリを指定するために,--with-curl=curlのルートディレクトリを指定するか,LDFLAGSでライブラリの場所を指定する。
configureのときに以下のように表示されるか,
checking for curl_global_init in -lcurl... yes
config.logで同じ記述があればOK
senooken% grep curl config.log
ac_cv_lib_curl_curl_global_init=yes



これでSSLをありにしたgitをインストールできた。NeoBundleInstallするときやclonepushpullなどもhttpsに対応できるようになった。

0 件のコメント:

コメントを投稿