2013-03-27 31 views
5

Tôi đã được sử dụng git trong một thời gian không có vấn đề, sau đó đột nhiên nó bắt đầu ném lỗi này khi sử dụng git push:lỗi git: gnutls_handshake() không thành công trên push

error: gnutls_handshake() failed: A TLS packet with unexpected length was received. while accessing ... fatal: HTTP request failed

Nó đã làm việc tốt, sau đó đột nhiên nó dừng lại.

Sự cố là gì?

Cảm ơn

+1

Hãy xem ở đây: http://askubuntu.com/questions/186847/error -gnutls-handshake-falied – niculare

+0

@niculare - tôi nhận được lỗi này 'dpkg-source: error: không thể mở git_1.7.9.5-1.dsc: Không có tệp hoặc thư mục' trên dòng này' sudo dpkg-source -x git_1.7.9.5-1.dsc' – Wahtever

+0

kiểm tra xem tệp 'git_1.7.9.5-1.dsc' có nằm trong thư mục hiện tại không. Nếu không, thì có thể một số lệnh trước đã thất bại. – niculare

Trả lời

3

Có vẻ như đã xảy ra sự cố với gói gnutls. Để giải quyết sự cố này, bạn có thể thử biên dịch git với openssl. Thông tin thêm về cách thực hiện điều này bạn có thể tìm thấy here.

1

Cuộc thảo luận được liên kết trên askubuntu tham chiếu số phiên bản cho git có thể không khớp với số của riêng bạn. Thay vì hai dòng này:

sudo dpkg-source -x git_1.7.9.5-1.dsc 
cd git_1.7.9.5 8. 

bạn cần tính đến phiên bản git bạn đang sử dụng. Trong trường hợp của tôi, nó là 1.8.xxxxx.

sudo dpkg-source -x git_<git-version-number>.dsc 
cd git_<git-version-number> 

Cách dễ dàng để giải quyết vấn đề này là chỉ sao chép phần đầu tiên của lệnh và sau đó nhấn Tab để tự động hoàn tất. Điều này có thể không hoạt động hoàn hảo nếu bạn đã biên dịch trước đó.

0

Trong trường hợp của tôi, lỗi tương tự đã gây ra bởi điều hoàn toàn khác.

Debian được nâng cấp từ Wheezy lên Jessie, và do đó apache đã được nâng cấp từ 2.2.22 lên 2.4.10. git đã cố gắng để đẩy để https://www.example.com và nó ngừng làm việc với error: gnutls_handshake() failed: A TLS packet with unexpected length was received

Hóa ra, www.example.com được giải quyết đến cả địa chỉ IPv4 và IPv6, và apache cấu hình đã có <Virtualhost x.y.w.z:443> IPv4 giải quyết duy nhất. Thay đổi điều đó thành <Virtualhost _default_:443> đã khắc phục được sự cố.

(chỉ cần như vậy nếu nó giúp người khác với cùng một vấn đề ... chỉ tìm thấy nó sau khi biên dịch lại tẻ nhạt của git với openssl không thay đổi bất cứ điều gì ở tất cả)

0

This answer có thể giúp đỡ. Tôi đã rất ngạc nhiên rằng những vấn đề không có liên quan với nhau mặc dù câu hỏi là cũ.

Chỉ cần chắc chắn các thông tin hữu ích sẽ không bị lạc, tôi sao chép một giải pháp ngắn gọn từ câu hỏi:

hostname=XXX 
port=443 
trust_cert_file_location=`curl-config --ca` 

sudo bash -c "echo -n | openssl s_client -showcerts -connect $hostname:$port 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> $trust_cert_file_location"