错误日志
git clone https://git.chipcode.qti.qualcomm.com/msm8974-la-1-0_amss_oem.git
Cloning into 'msm8974-la-1-0_amss_oem'...
error: gnutls_handshake() failed: A TLS fatal alert has been received
while accessing https://git.chipcode.qti.qualcomm.com/msm8974-la-1-0_amss_oem.git/info/refs?service=git-upload-pack
fatal: HTTP request failed
问题分析
Git 在 Ubuntu 上默认使用 gnuTLS。如果您使用的 Ubuntu 版本低于 14.10,则必须将 Linux Git 客户端版本升级到 1.8.1.2 或更高版本,并将 Git 配置为使用 openSSL 而不是 gnuTLS,或者将 Ubuntu 升级到 14.10 或更高版本,该版本使用与 Qualcomm 服务器兼容的 gnuTLS 版本。
$ gnutls-cli -v -V
gnutls-cli 3.3.8
ubuntu 15.04 : 3.3.8 - Supported
ubuntu 14.10 : 3.2.15 - Supported
ubuntu 14.04 : 2.12.23 - Unsupported
ubuntu 12.04: 2.12.14 - Unsupported
解决方案
方法一:升级git
Git 在 Ubuntu 上默认使用 gnuTLS。如果您使用的 Ubuntu 版本低于 14.10,则必须将 Linux Git 客户端版本升级到 1.8.1.2 或更高版本,并将 Git 配置为使用 openSSL 而不是 gnuTLS,或者将 Unubtu 升级到 14.10 或更高版本,该版本使用与 Qualcomm 服务器兼容的 gnuTLS 版本。
以下是配置 Git 以使用 openSSL 的步骤:
sudo apt-get install libcurl4-openssl-dev build-essential autoconf
git clone https://github.com/git/git
cd git
git checkout v2.1.2
make configure
./configure with-openssl
make prefix=/usr/local all
sudo make prefix=/usr/local install
升级遇到问题
tclsh failed; using unoptimized loading
MSGFMT po/de.msg make[1]: *** [po/de.msg] Error 127
make: *** [all] Error 2
到问题解决方案
sudo apt-get install gettext
方法二:升级git
sudo apt-get install libcurl4-openssl-dev build-essential
wget http://git-core.googlecode.com/files/git-1.8.2.tar.gz
tar xvfz git-1.8.2.tar.gz
cd git-1.8.2
./configure with-openssl
make prefix=/usr/bin all
sudo make prefix=/usr/bin install
Git 安装程序是相当自给自足的,但确实需要一些基本库。以下是一些已知缺失的。如果您收到任何编译错误,您可以使用以下命令来验证您是否了解所需的组件:
sudo apt-get install libexpat1-dev
sudo apt-get install libc6-dev
sudo apt-get install libcurl4-openssl-dev