2013-03-27 12 views
5

Używam git przez pewien czas bez żadnych problemów, a potem nagle zaczęło rzucać ten błąd przy użyciu git push:błąd git: gnutls_handshake() nie powiodła się naciśnięciem

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

To działa dobrze, a potem nagle go zatrzymany.

Na czym polega problem?

Dzięki

+1

Spójrz tutaj: http://askubuntu.com/questions/186847/error -gnutls-handshake-falied – niculare

+0

@niculare - otrzymuję ten błąd 'dpkg-source: błąd: nie można otworzyć git_1.7.9.5-1.dsc: Brak takiego pliku lub katalogu' w tym wierszu 'sudo dpkg-source -x git_1.7.9.5-1.dsc' – Wahtever

+0

sprawdź, czy plik 'git_1.7.9.5-1.dsc' znajduje się w bieżącym katalogu. Jeśli nie, może niektóre wcześniejsze polecenia zawiodły. – niculare

Odpowiedz

3

Wydaje się, że jest problem z pakietem gnutls. W celu obejścia tego problemu można spróbować skompilować git z openssl. Więcej informacji o tym, jak to osiągnąć, można znaleźć here.

1

Połączona dyskusja na temat askubuntu odwołuje się do numeru wersji gita, który może nie pasować do twojego. Zamiast tych dwóch linii:

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

musisz uwzględnić wersję git, której używasz. W moim przypadku był to 1.8.xxxxx.

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

Łatwym sposobem obejścia tego jest skopiowanie pierwszej części polecenia, a następnie wciśnięcie Tab w celu automatycznego uzupełnienia. To może nie działać idealnie, jeśli wcześniej skompilowano.

0

W moim przypadku ten sam błąd został spowodowany przez zupełnie inną rzecz.

Debian został uaktualniony z Wheezy do Jessie, a tym samym apache został uaktualniony od 2.2.22 do 2.4.10. git próbował pchnąć do https://www.example.com i przestał działać z error: gnutls_handshake() failed: A TLS packet with unexpected length was received

Okazuje się, www.example.com został rozwiązywania obu adresów IPv4 i IPv6, a apache config był o <Virtualhost x.y.w.z:443> adres IPv4 tylko. Zmiana tego na <Virtualhost _default_:443> rozwiązała problem.

(tak więc jeśli to pomoże ktoś inny z tego samego problemu ... tylko okazało się, że po żmudnych rekompilacji git z OpenSSL było w ogóle nic nie zmieni)

0

This answer może pomóc. Byłem zaskoczony, że problemów nie można ze sobą powiązać, chociaż pytanie jest stare.

Wystarczy, aby mieć pewność, że użyteczne informacje nie zgubisz, kopiować krótki rozwiązanie z pytaniem:

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" 
Powiązane problemy