Git dla systemu Windows - nie można uruchomić programu, ponieważ brakuje biblioteki libiconv2.dll

93

Kiedy próbuję uruchomić pewne polecenia (na przykład git push) z git Bash w systemie Windows 7 (64-bitowy), pojawia się błąd:

The program can't start because libiconv2.dll is missing from your computer

Szukałem wyczerpująco rozwiązania tego problemu.
Jedyne, co mogę znaleźć, to wątek problemów w witrynie Google Code ( numer 419 ) i kilka innych blogów tu i ówdzie. O ile wiem, żadna z sugestii zawartych w postach nie rozwiąże mojego problemu.

Próbowałem ponownie zainstalować. Próbowałem dodać $GIT/bindo PATH.
Mogę sprawdzić, czy dll znajduje się w $GIT/binkatalogu ... ale nadal nie mogę przesłać do zdalnego.

Mam działającą instalację msysgit na innym pudełku z systemem Windows 7 i zainstalowałem tak samo w obu sytuacjach ... więc nie trzeba dodawać, że jestem dość zdezorientowany.

Jakakolwiek pomoc w tym zakresie będzie mile widziana.

Dzięki,

user413945
źródło
1
Czy biblioteka DLL nie powinna znajdować się w $ GIT / lib zamiast $ GIT / bin? Przynajmniej tak to działa w systemie Linux / UNIX, biblioteki trafiają do libkatalogu. Nie wiem, czy msysgit używa tego samego schematu układu, ale szybko to sprawdzę.
David Z
To pytanie powinno zostać zgłoszone jako błąd do rozwoju Git. Ale na całe życie nie mogę znaleźć żadnych linków do zgłaszania błędów na stronie Git ...
Andriy Drozdyuk,
1
pierwsza odpowiedź działa, oznacz ją jako rozwiązaną!
erikbwork
@DavidZ - Rozwiązałeś mój problem. Twoja odpowiedź musi być tutaj zaakceptowaną odpowiedzią.
Mekey Salaria
@Groundshaker nie, przede wszystkim opublikowałem komentarz , a nie odpowiedź; i nie rozwiązało problemu oryginalnego plakatu, więc nawet jeśli byłaby to odpowiedź, nie należy jej akceptować. Zresztą wygląda na to, że kilka istniejących odpowiedzi już obejmuje tę poprawkę (powinno być libexeczamiast lib, ewidentnie), więc nie zamierzam publikować czegoś, co je powiela. (Ale cieszę się, że mój komentarz był przydatny.)
David Z

Odpowiedzi:

104

Obejdź z tego wątku: http://groups.google.com/forum/#!topic/msysgit/twrVn_EbNI4

  • cd do katalogu instalacyjnego git
  • copy mingw\bin\libiconv-2.dll libexec\git-core
    (lub copy bin\libiconv-2.dll libexec\git-corejeśli Twoja instalacja nie ma mingwfolderu)

W połączonym wątku Drew prosi o pomoc, więc jeśli myślisz, że możesz pomóc to naprawić, możesz odpowiedzieć w tym wątku Grup dyskusyjnych Google.

Błąd występuje w przypadku tych kompilacji:

  • msysgit-fullinstall-1.7.4 LUB 1.7.6 (oraz 1.7.7)
  • msysgit-netinstall-1.7.4 LUB 1.7.6 (oraz 1.7.7)
  • Git dla Windows 1.7.6 (ale nie 1.7.4)
paulecoyote
źródło
5
To było rozwiązanie mojego problemu. Myślę, że warto zauważyć, że to rozwiązanie działa szczególnie w przypadku błędów podczas submodule update, ale może również naprawić inne instancje.
gapple
9
Z git-1.7.8 musiałem skopiować pliki w innym kierunku; libiconv2.dll istnieje w programie libexec/git-core, ale należy go skopiować bin(lub połączyć :) mklink /H libexec\git-core\libiconv2.dll bin\libiconv2.dll.
gapple
To obejście naprawiło dla mnie msysGit 1.7.7.1 w systemie Windows 2003 x64. Zawodziło, gdy próbowałem biecgit submodule init i, niestety, jedynym objawem, jaki początkowo widziałem, była praca Jenkinsa, która wisiała w nieskończoność. (Uruchomienie git submodule initz okna Git Bash pokazało mi prawdziwy błąd.) Dzięki!
Paul Karlin,
4
Poprawka @ grapple działała dla mnie z najnowszą wersją 1.7.10-preview20120409, z wyjątkiem tego, że tak było libiconv-2.dll .
Soliah
1
TLDR: Atlassian Sourcetree: skopiuj libiconv2.dlldo libexec/git-corezgodnie z opisem. Zmień nazwę libiconv2.dllna libiconv-2.dll. Wystąpił ten sam błąd, próbując użyć najnowszej wersji Atlassian Sourcetree. Sourcetree zostało ustawione na używanie zewnętrznego Git (zamiast osadzonego). Najwyraźniej libiconv2.dlli libiconv-2.dllto ten sam plik, ale SourceTree szuka pliku o nazwie libiconv-2.dll, a nie libiconv2.dll. Tak więc, jeśli używasz drzewa źródłowego, musisz zmienić nazwę libiconv2 po przeniesieniu go do git-core.
Brandon S.,
42
  • copy / Program Files / Git / bin / libiconv-2.dll
  • do / Program Files / Git / libexec / git-core /
sqzaman
źródło
1
Dzięki, to naprawiło to dla mnie na mojej maszynie Win7 z systemem git w wersji 1.7.7.1.msysgit.0
jesal
1
Chciałem tylko zauważyć - mój komunikat o błędzie określał libiconv2.dll ORAZ miałem zarówno libiconv2.dll, jak i libiconv-2.dll w / bin.
Roger_S,
1
To było pomocne, dzięki. Jeśli tak jak ja nie masz tych folderów, poszukaj ich w% USERPROFILE% \ Ustawienia lokalne \ Dane aplikacji \ GitHub (zobacz moją odpowiedź)
wytten
15

Rozwiązałem to ... jest kilka rzeczy, na które należy zwrócić uwagę.

1) Problem polegał na literówce w skonfigurowanym źródle w moim lokalnym pliku .git / config ... Więc jestem idiotą.

2) Git Bash nie zawodzi w tej sytuacji, a następnie zgłasza ten bardzo mylący błąd jako alert, zamiast zgłaszać, że nie ma skonfigurowanego źródła nazwy określonej w pliku .git / config.

Jedynym sposobem, w jaki mogłem to rozgryźć, było dodanie katalogu $ GitPath / cmd do mojej ścieżki i uruchomienie git z wiersza poleceń. Tam udało mi się uzyskać szczegółowy komunikat o błędzie wskazujący, że zdalne repozytorium jeszcze nie istnieje. Potem podciągnąłem zaufanego edytora vi i zobaczyłem, że faktycznie jest tam literówka.

Lekcja tutaj. Jeśli otrzymujesz dziwny błąd .dll z msysgit, może to być najprawdopodobniej wynikiem błędnej konfiguracji ... a nie jakiejś nieprawidłowości w systemie lub problemu z instalacją.

Dziękujemy wszystkim, którzy próbowali w tym pomóc!

user413945
źródło
1
+1. W przypadku błędu zawsze korzystaj z minimalnej natywnej sesji CMD. Jest to ogólnie pouczające.
VonC
Dzięki, to rozwiązało mój problem. Zmieniam msysGit \ bin na msysGit \ cmd w ścieżce systemu Windows.
Renaud
copy C:\msysgit\mingw\bin\libiconv-2.dll C:\msysgit\binZainstalowałem przy użyciu „msysGit-netinstall-1.9.4-preview20140611”
Jeflopo,
14

Widziałem ten błąd z msysGit-fullinstall-1.7.3.1-preview20101002.exe w systemie Win 7.

Added <msysgit_dir>\mingw\bin to PATH 

napraw to. W tym katalogu znaleziono libiconv2.dll.

so_mv
źródło
2
To nie zadziałało, musiałem skopiować bibliotekę DLL do% WINDIR% (C: \ windows)
jamiebarrow
Dodałem c:\MinGW\bindo ścieżki i to naprawiło.
JellicleCat
10

Miałem ten problem w SmartGit na Macu. Naprawiono to, zmieniając w Preferencje -> Polecenia -> Plik wykonywalny

Plik wykonywalny Git:

z

/usr/bin/git

do:

/usr/local/git/bin/git
Chłodnica
źródło
2
Dzięki! W moim przypadku musiałem użyć / usr / local / bin / git.
ezequielc
3

Odmiana odpowiedzi sqzamana, ponieważ nie miałem folderów w tym samym miejscu co:

Copy
%USERPROFILE%\Local Settings\Application Data\GitHub\PortableGit_*\bin\*.dll
to
%USERPROFILE%\Local Settings\Application Data\GitHub\PortableGit_*\libexec\git-core

Zauważ, że zacząłem od skopiowania libiconv-2.dll, ale potem narzekał na libcurl.dll, więc skopiowałem * .dll

wytten
źródło
1
Po kilku próbach i błędach stwierdziłem, że skopiowanie libcrypto.dll, libcurl.dll, libiconv-2.dll i libssl.dll do katalogu git-core zadziałało dla jednego repozytorium (minimalne rozwiązanie). Nie zdziwiłbym się, gdybym w końcu skopiował wszystkie inne dla innych.
alle_meije
3

Ponieważ SmartGit odnosi się do tej strony przepełnienia stosu w wyniku błędu, myślę, że ta wiedza może być przydatna dla kogoś tutaj ....

Czasami chociaż nie ma problemu z instalacją gita. Nawet jeśli możesz użyć git bash i uzyskać informacje o wersji, wpisując

git -- version 

SmartGit nie dodaje repozytorium i zwraca git jest przestarzały lub nie można pobrać informacji o wersji (lub podobnie jak w tej wiadomości) ...

Jeśli tak, lepiej najpierw sprawdź ustawienia narzędzi bezpieczeństwa i aplikacji do usuwania wirusów. W mojej sytuacji wyłączenie zapory Comodo sprawi, że smartgit będzie mógł zobaczyć zdrową instalację gita i informacje o wersji.

Erdinç Çorbacı
źródło
2

Najszybszym sposobem rozwiązania tego problemu jest zlokalizowanie pliku * .dll na innym komputerze i skopiowanie go =)

KristofMols
źródło
2

Właśnie próbowałem zainstalować SmartGIT w systemie Windows i miałem ten sam problem. Po prostu stwierdzam, że to nie działa, wskazując go na git.exe, zamiast tego wskazałem go na C: \ msysgit \ cmd \ git.cmd. Jak dotąd działa dobrze. Mam dostęp do repozytorium git w msysgit.

FYI, używam instalatora sieciowego dla systemu Windows.

Mając nadzieję, że jest to właściwe podejście.


źródło
1
Używam GIT dla systemu Windows i dla mnie zadziałało, wskazując na git.exe.
Mandeep Janjua
2

Moja odpowiedź rozwiązuje ten sam błąd dla msysgit, ale może pomóc w przypadku czystego gita.

W systemie Windows 7 dodałem <msysgit_dir>\mingw\bindo PATH zgodnie z zaleceniami so_mv powyżej (za pośrednictwem interfejsu GUI zmiennych systemowych), ale musiałem wylogować się i zalogować do systemu operacyjnego , w przeciwnym razie PATHwartość nie zostanie zaktualizowana.

sompylasar
źródło
2

Aby rozwiązać ten problem, w rzeczywistości musiałem skopiować wszystkie biblioteki DLL z mingw/bin/do bin/(nie nadpisując żadnego istniejącego raz). Używam zdalnych repozytoriów HTTPs i po prostu narzekałem.

Kingen
źródło
1

Miałem ten sam błąd w systemie Windows 7 podczas uruchamiania \ msysgit \ bin \ git.exe. Naprawiłem to, kopiując \ msysgit \ mingw \ bin \ libiconv-2.dll do katalogu głównego katalogu instalacyjnego Win 7.

Boris Jockov
źródło
1

Zainstalowałem Git dla Windows, a następnie Git, aby skopiować plik .dll

To nie zadziałało dla mnie. Aby rozwiązać problem, musiałem dodać ścieżkę:

C:\Users\*username*\AppData\Local\GitHub\PortableGit_015aa71ef18c047ce8509ffb2f9e4bb0e3e73f13\cmd

do PATH zmiennej środowiskowej.

To rozwiązało problem i mogę teraz uzyskać dostęp do git z wiersza polecenia.

Sebastien V.
źródło
Używam wtyczki Git do Sublime Text 2miejsca, w którym natknąłem się na ten problem i rozwiązałem go, dodając podobną ścieżkę do ustawień wtyczki, ale wszystkie ukośniki odwrotne zostały C:\\Users\\*username*\\AppData\\Local\\GitHub\\PortableGit_054f2e797ebafd44a30203088cd3d58663c627ef\\bin\\git.exe
usunięte
1

Osobiście rozwiązałem to, czytając błąd, który otrzymałem z getopt.exe, który powiedział mi, że brakuje "libiconv2.dll" .. Miałem libiconv-2.dll (zauważ myślnik "-") w C: \ Program Files ( x86) \ Git \ bin. Wykonanie kopii i nadanie jej nazwy libiconv2.dll załatwiło sprawę ...

Użyłem kilku czekoladowych pakietów ... może nazwa rzeczywistego pliku została zmieniona w czasie jego rozwoju ... a zależności w pakietach nie ....

Mam nadzieję, że to komuś pomoże :)

Maurice CGP Peters
źródło
1

Jeśli podczas uruchamiania SourceTree w systemie Windows wystąpi błąd „Brakujący libiconv-2.dll”, zadziałało dla mnie następujące rozwiązanie (Win 8.1):

iść do

C:\Users\$USERNAME$\AppData\Local\Atlassian\SourceTree\git_local\bin

Kopiuj

libcrypto.dll
libcurl.dll
libiconv-2.dll
libssl.dll

do

C:\Users\$USERNAME$\AppData\Local\Atlassian\SourceTree\git_local\libexec\git-core
felix
źródło
1

Jedno możliwe rozwiązanie dla SourceTree:

   1.Open the "Option" window.
   2.Select "Git".
   3.Than "Use System Git".
   4.And press OK button.
Flayn
źródło
Pracował dla mnie. Z jakiegoś powodu SourceTree przełączyło się na osadzony git po aktualizacji, co spowodowało problem.
starteleport
0

Mam msysgit na Windows7 bez żadnego problemu z żadną biblioteką DLL.

Mam libiconv2.dll w katalogu bin: C:\Path\To\Git\1.7.1\bin

Emisja 419 było o kimś, kto zainstalował „środowisko programistyczne do kompilacji Git for Windows”, a nie tylko Git.
Zobacz tę odpowiedź TAK dla różnicy między nimi .

Więc który zainstalowałeś?

  • Git-1.x.x.x...? (jak „ Git-1.7.0.2-preview20100309.exe”),
  • czy msysGit-netinstall-1.x.x...? (jak „ msysGit-netinstall-1.7.1-preview20100612.exe”).
VonC
źródło
Zainstalowałem ... Git-1.7.0.2-preview20100309.exe Zdecydowanie zdaję sobie sprawę, że wydanie 419 było instalacją programistyczną, ale jest to jeden z niewielu wyników wyszukiwania, jakie udało mi się znaleźć na ten temat, więc miałem nadzieję, że może dostarczyć pewnych informacji. Moja biblioteka libconv2.dll znajduje się w C: \ Path \ To \ Git \ bin, co jest po prostu domyślną lokalizacją instalacji.
user413945
@thankyoud: Rozumiem (i Twoje pytanie wydaje się dobrze udokumentowane). Pomyślałem, że chcę to wyjaśnić w mojej odpowiedzi, aby inni mogli zobaczyć różnicę. Jedyny inny problem, jaki widziałem, gdy Git miał problemy z uruchomieniem, jest związany z listą ACL (jak jakiś problem z rejestracją dll lub %TEMP%problem z pisaniem). Jakieś wskazówki na ten temat?
VonC,
Nie wiem, katalog% temp% wydaje się mieć pełny dostęp do mojego bieżącego konta. Czy git działa na koncie innym niż administrator, gdy bashujesz? Ponadto, jak wspomniałem wcześniej, nigdy nie wydarzyło się to w żadnej innej instalacji systemu Windows 7, którą wykonałem ... dlatego jestem tak zakłopotany. To znaczy, że w przeszłości nigdy nie musiałem majstrować przy uprawnieniach do plików.
user413945
@thankyoud: Strange. A co z instalacją „przenośną”? (po prostu rozpakuj go i dodaj cmdkatalog do swojej ścieżki): czy będzie wykazywał to samo błędne zachowanie?
VonC,
@thankyoud: czy jest jakiś konflikt w PATHtym konkretnym Windows7? Czy widzisz ten sam błąd z wartością „minimalną PATH”? Tj."C:\Path\To\Got\cmd;C:\Windows\system32;C:\Windows;C:\Windows\Syste m32\Wbem"
VonC
0

Początkowo próbowałem rozwiązać ten problem, kopiując bibliotekę dll, jak wspomniano tutaj, ale wkrótce napotkałem inne problemy. Dla mnie prawdziwym rozwiązaniem było ustawienie ścieżki w moim pliku .bashrc dla msys, aby nadać priorytet plikom binarnym msys.

Otwórz powłokę msys i następujący wiersz w ~ / .bashrc:

export PATH = / usr / local / bin: / mingw / bin: / bin: $ PATH

Judah Menter
źródło
0

Nękał mnie ten problem, aby rozwiązać ten problem, odinstalowałem tortoisegit i msysgit, a następnie ponownie zainstalowałem „Git-1.8.1.2-preview20130201”.

w ten sposób rozwiązało to mój problem i nie mogę używać poshgit.

AdamWhite
źródło
0

W moim przypadku użyłem chocolatey (chocolatey.org) do zainstalowania git.

Musiałem skopiować libconv-2.dlldo, C:\ProgramData\chocolatey\binaby działał. Nie jestem pewien, czy skopiowanie pliku do programu C:\Program Files (x86)\Git\libexec\git-corejest również konieczne, ponieważ zrobiłem to najpierw.

Luke Chavers
źródło
0

Używałem wersji GitHub Desktop i mam ten sam problem, zmieniłem domyślną powłokę przez Ustawienia -> Opcje ---> Domyślna powłoka i sprawdziłem Git bash. Uruchomiłem "Otwórz powłokę Git" i uruchomiłem polecenie "git pull", rozwiązało to problem. W moim przypadku zadziałało.

Mundroid
źródło
0

Skopiuj wszystkie pliki .dll z:

C: \ Users \ YOURUSERNAME \ AppData \ Local \ GitHub \ PortableGit_25d850739bc178b2eb13c3e2a9faafea2f9143c0 \ mingw32 \ bin

do:

C: \ Users \ YOURUSERNAME \ AppData \ Local \ GitHub \ PortableGit_25d850739bc178b2eb13c3e2a9faafea2f9143c0 \ mingw32 \ libexec \ git-core

Chris Halcrow
źródło
0

Miałem ten sam problem, używam Windows 10 i bardzo łatwo jest rozwiązać ten problem.

Pobierz plik dll z:

https://www.dll-files.com/libiconv-2.dll.html

wyodrębnij go lub wklej bezpośrednio do folderu mingw, zwykle znajduje się na dysku C, jeśli zainstalowałeś go z domyślnymi opcjami. Mam nadzieję, że to pomoże.

Samriddhi Verma
źródło
0

Wypróbuj następujące polecenie:

sudo rm -rf /Library/Developer/CommandLineTools 

i zainstaluj narzędzia programistyczne

Samolazov Roman
źródło
-1

Musiałem poradzić sobie z tym samym komunikatem o błędzie podczas próby skonfigurowania meanio, którego git jest warunkiem wstępnym (mój konkretny błąd to: nie znaleziono wymagań wstępnych: git).
Poprawka, którą odkryłem, polegała na skopiowaniu libiconv2.dll z

C:\Program Files (x86)\Git\bin

do

C:\Program Files (x86)\Git\libexec\git-core

Następnie musiałem wprowadzić pewne poprawki do zmiennych środowiskowych systemu Windows (kliknij prawym przyciskiem myszy komputer, przejdź do właściwości, kliknij „Zaawansowane ustawienia systemu” na lewym pionowym pasku, wybierz zmienne środowiskowe). W Zmiennych środowiskowych spójrz na pole Zmienne systemowe. Znaleźć

PATH

Zmienna i dodaj trzy nowe odniesienia:

C:\Program Files (x86)\Git\bin;
C:\Program Files (x86)\Git\cmd;
C:\Program Files (x86)\Git\libexec\git-core

W ten sposób wszystkie wymagane pliki git są dostępne w ścieżce systemowej.

Mam nadzieję że to pomoże!

deusofnull
źródło