Git для Windows - Программа не запускается из-за отсутствия libiconv2.dll

93

Когда я пытаюсь запустить определенные команды (например, git push) из git Bash в Windows 7 (64-разрядная версия), я получаю сообщение об ошибке:

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

Я тщательно искал решение этой проблемы.
Максимум, что я могу найти, - это ветка проблем на сайте кода Google ( проблема 419 ) и несколько других блогов здесь и там. Насколько я могу судить, ни одно из предложений, предложенных в сообщениях, на самом деле не решит мою проблему.

Я пробовал переустановить. Я пробовал добавить $GIT/binв PATH.
Я могу проверить, что dll находится в $GIT/binкаталоге ... но все равно не могу нажать на удаленный.

У меня есть рабочая установка msysgit на другом компьютере с Windows 7, и я установил одинаково в обеих ситуациях ... так что излишне говорить, что я очень запутался.

Любая помощь по этому поводу будет очень признательна.

Благодарность,

user413945
источник
1
Разве DLL не должна находиться в $ GIT / lib вместо $ GIT / bin? По крайней мере, так работает в Linux / UNIX, библиотеки идут в libкаталог. Я не знаю, использует ли msysgit ту же схему компоновки, но это можно быстро проверить.
David Z
Этот вопрос следует отправить в разработку Git как ошибку. Но
хоть убей,
1
первый ответ работает, отметьте его как решенный!
erikbwork
@DavidZ - Вы решили мою проблему. Ваш ответ должен быть принятым здесь ответом.
Mekey Salaria 01
@Groundshaker нет, в первую очередь я оставил комментарий , а не ответ; и это не решило проблему исходного плаката, поэтому, даже если это был ответ, его не следует принимать. В любом случае кажется, что некоторые из существующих ответов уже охватывают это исправление (это должно быть libexecвместо lib, очевидно), поэтому я не собираюсь публиковать что-то, что их дублирует. (Но я рад, что мой комментарий был полезен.)
David Z

Ответы:

104

Обходной вариант из этой ветки: http://groups.google.com/forum/#!topic/msysgit/twrVn_EbNI4

  • cd в каталог установки git
  • copy mingw\bin\libiconv-2.dll libexec\git-core
    (или copy bin\libiconv-2.dll libexec\git-coreесли в вашей установке нет mingwпапки)

В связанной ветке Дрю просит помощи, поэтому, если вы думаете, что можете помочь исправить это, вы можете ответить в этой ветке групп Google.

Ошибка происходит с этими сборками:

  • msysgit-fullinstall-1.7.4 ИЛИ 1.7.6 (и 1.7.7)
  • msysgit-netinstall-1.7.4 ИЛИ 1.7.6 (и 1.7.7)
  • Git для Windows 1.7.6 (но не 1.7.4)
паулекойот
источник
5
Это было решение моей проблемы. Я думаю, стоит отметить, что это решение работает, в частности, с ошибками во время submodule update, но может исправить и другие случаи.
Gapple
9
С git-1.7.8 мне нужно было копировать файлы в другом направлении; libiconv2.dll существует в libexec/git-core, но его необходимо скопировать bin(или связать :) mklink /H libexec\git-core\libiconv2.dll bin\libiconv2.dll.
gapple
Этот обходной путь исправил для меня msysGit 1.7.7.1 в Windows 2003 x64. Когда я пытался бежать git submodule init, это терпело неудачу, и, к сожалению, единственным признаком, который я мог видеть изначально, была работа Дженкинса, которая зависала на неопределенное время. (Запуск git submodule initиз окна Git Bash показал мне настоящую ошибку.) Спасибо!
Пол Карлин
4
Исправление @ grapple сработало для меня с последней сборкой 1.7.10-preview20120409, за исключением того, что это было libiconv-2.dll.
Soliah
1
TL; DR: Atlassian Sourcetree: скопируйте libiconv2.dllв, libexec/git-coreкак описано. Переименовать libiconv2.dllв libiconv-2.dll. У меня была такая же ошибка при попытке использовать последнюю версию Atlassian Sourcetree. Sourcetree был настроен на использование внешнего Git (вместо встроенного). Судя по всему libiconv2.dllи libiconv-2.dllэто один и тот же файл, но SourceTree ищет файл с именем libiconv-2.dll, а не libiconv2.dll. Итак, если вы используете дерево исходных текстов, вам необходимо переименовать libiconv2 после его перемещения в git-core.
Брэндон С.
42
  • копировать / Program Files / Git / bin / libiconv-2.dll
  • в / Program Files / Git / libexec / git-core /
sqzaman
источник
1
Спасибо, это исправило для меня это на моей машине Win7 с git версии 1.7.7.1.msysgit.0
jesal
1
Просто хотел отметить - в моем сообщении об ошибке указан libiconv2.dll, И у меня были как libiconv2.dll, так и libiconv-2.dll в / bin.
Roger_S
1
Это было полезно, спасибо. Если, как и у меня, у вас нет этих папок, поищите их в% USERPROFILE% \ Local Settings \ Application Data \ GitHub (см. Мой ответ)
wytten
15

Я решил это ... здесь нужно отметить несколько моментов.

1) Проблема заключалась в опечатке в моем настроенном источнике в моем локальном файле .git / config ... Так что я идиот.

2) Git Bash не завершается корректно в этой ситуации, а затем выдает эту очень вводящую в заблуждение ошибку как предупреждение, а не сообщает, что нет настроенного источника имени, указанного в файле .git / config.

Единственный способ выяснить это - добавить каталог $ GitPath / cmd к моему пути и запустить git из командной строки. Там я смог получить подробное сообщение об ошибке, указывающее, что удаленный репозиторий еще не существует. Затем я открыл проверенный редактор vi и увидел опечатку.

Урок здесь. Если вы получаете странную ошибку .dll с msysgit, скорее всего, это может быть результатом неправильной конфигурации ... а не какой-то системной аномалии или проблемы с установкой.

Спасибо всем, кто пытался в этом помочь!

user413945
источник
1
+1. В случае ошибки всегда используйте минимальный собственный сеанс CMD. Это вообще поучительно.
VonC
Спасибо, это решило мою проблему. Я меняю msysGit \ bin на msysGit \ cmd в пути к Windows.
Renaud
copy C:\msysgit\mingw\bin\libiconv-2.dll C:\msysgit\binЯ установил с помощью "msysGit-netinstall-1.9.4-preview20140611"
Джефлопо,
14

Я видел эту ошибку с msysGit-fullinstall-1.7.3.1-preview20101002.exe на Win 7.

Added <msysgit_dir>\mingw\bin to PATH 

почини это. libiconv2.dll был найден в этом каталоге.

so_mv
источник
2
У меня это не сработало, пришлось скопировать DLL в% WINDIR% (C: \ windows)
jamiebarrow
Я добавил c:\MinGW\binпуть, и это исправило его.
JellicleCat
10

Была эта проблема в SmartGit на Mac. Исправлено, изменив настройки -> Команды -> Исполняемый файл.

Исполняемый файл Git:

из

/usr/bin/git

кому:

/usr/local/git/bin/git
Кулер
источник
2
Благодарность! В моем случае мне пришлось использовать / usr / local / bin / git.
ezequielc
3

Вариант ответа sqzaman, поскольку у меня не было папок в том же месте, где они были:

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

Обратите внимание, что я начал с копирования libiconv-2.dll, но затем он пожаловался на libcurl.dll, поэтому я пошел дальше и скопировал * .dll

Wytten
источник
1
После некоторых проб и ошибок я обнаружил, что копирование libcrypto.dll, libcurl.dll, libiconv-2.dll и libssl.dll в каталог git-core работало для одного репозитория (минимальное решение). Не удивлюсь, если я в конечном итоге скопирую и все остальные для других.
alle_meije
3

Поскольку SmartGit ссылается на эту страницу stackoverflow в результате ошибки, я думаю, что это знание может быть полезно для кого-то здесь ....

Иногда, хотя с установкой git проблем нет. Даже если вы можете использовать git bash и получить информацию о версии, набрав

git -- version 

SmartGit не добавляет репозиторий и возвращает git is obsolote или информацию о версии невозможно получить (или аналогично этому сообщению) ...

Если это так, вам лучше сначала проверить настройки утилит безопасности и приложений для удаления вирусов. В моей ситуации отключение брандмауэра comodo позволяет smartgit видеть информацию об установке и версии исправного git.

Эрдинч Чорбачи
источник
2

Самый быстрый способ исправить это - найти файл * .dll на другом компьютере и скопировать его =)

KristofMols
источник
2

Я просто попытался установить SmartGIT в Windows и столкнулся с той же проблемой. Я просто понял, что он работает, не указывая на git.exe, вместо этого я указал его на C: \ msysgit \ cmd \ git.cmd. Пока все работает нормально. Я могу получить доступ к репозиторию git в msysgit.

К вашему сведению, я использую сетевой установщик для Windows.

Надеюсь, что это правильный подход.


источник
1
Я использую GIT для окон, и у меня он работал, указывая на git.exe.
Мандип Джанджуа,
2

Мой ответ разрешает ту же ошибку для msysgit, но может помочь с чистым git.

В Windows 7, я добавил <msysgit_dir>\mingw\binв PATH качестве so_mv рекомендовал выше (через графический интерфейс системных переменных), но я должен был выход из системы и входа в ОС после этого , в противном случае PATHзначение не будет обновляться.

сомпиласар
источник
2

Чтобы решить эту проблему, мне действительно пришлось скопировать все библиотеки DLL из mingw/bin/в bin/(не перезаписывая существующие один раз). Я использую удаленные репозитории HTTP, и он продолжал жаловаться.

Kingen
источник
1

У меня была такая же ошибка в Windows 7 при запуске \ msysgit \ bin \ git.exe. Я исправил это, скопировав \ msysgit \ mingw \ bin \ libiconv-2.dll в корень установочного каталога Win 7.

Борис Йочков
источник
1

Я установил Git для Windows, затем Git, чтобы скопировать .dll

У меня это не сработало. Чтобы решить проблему, мне пришлось добавить путь:

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

в PATHпеременную среды.

Это устранило проблему, и теперь я могу получить доступ к git из командной строки.

Себастьян В.
источник
Я использую плагин Git, Sublime Text 2где я столкнулся с этой проблемой, и решил ее, добавив аналогичный путь в настройки плагина, но со всеми C:\\Users\\*username*\\AppData\\Local\\GitHub\\PortableGit_054f2e797ebafd44a30203088cd3d58663c627ef\\bin\\git.exe
обратными косыми чертами,
1

Лично я решил это, прочитав ошибку, которую я получил от getopt.exe, которая сообщала мне, что отсутствует libiconv2.dll. У меня была libiconv-2.dll (обратите внимание на тире "-") в C: \ Program Files ( x86) \ Git \ bin. Создание копии и присвоение ей имени libiconv2.dll помогло мне ...

Я использовал несколько шоколадных пакетов ... возможно, фактический файл был переименован во время его разработки ... а зависимости в пакетах не ...

Надеюсь, это поможет кому-то :)

Морис С.Г.Петерс
источник
1

Если при запуске SourceTree в Windows возникает ошибка «отсутствует libiconv-2.dll», у меня сработало следующее (Win 8.1):

перейти к

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

копировать

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

к

C:\Users\$USERNAME$\AppData\Local\Atlassian\SourceTree\git_local\libexec\git-core
Феликс
источник
1

Одно из возможных решений для SourceTree:

   1.Open the "Option" window.
   2.Select "Git".
   3.Than "Use System Git".
   4.And press OK button.
Флайн
источник
Работал у меня. По какой-то причине SourceTree переключился на встроенный git после обновления, что вызвало проблему.
starteleport
0

У меня есть msysgit на Windows7 без каких-либо проблем с какой-либо DLL.

У меня есть libiconv2.dll в каталоге bin: C:\Path\To\Git\1.7.1\bin

Вопрос 419 был о том, кто установил «среду разработки для компиляции Git для Windows», а не только Git.
См. Этот SO-ответ, чтобы узнать разницу между двумя .

Так какой из них вы установили?

  • Git-1.x.x.x...? (как Git-1.7.0.2-preview20100309.exe"),
  • или msysGit-netinstall-1.x.x...? (нравится ' msysGit-netinstall-1.7.1-preview20100612.exe').
VonC
источник
Я установил ... Git-1.7.0.2-preview20100309.exe Я определенно понимаю, что ошибка 419 была установлена ​​разработчиком, но это один из немногих результатов поиска, которые я смог найти по этому вопросу, поэтому я надеялся, что он может дать некоторое представление. Моя libconv2.dll находится в C: \ Path \ To \ Git \ bin, это просто место установки по умолчанию.
user413945 07
@thankyoud: Я понимаю (и ваш вопрос кажется хорошо задокументированным). Просто подумал прояснить это в своем ответе, чтобы другие увидели разницу. Единственная другая проблема, с которой я столкнулся с проблемами при запуске Git, связана с ACL (например, проблема с регистрацией DLL или %TEMP%проблема записи). Есть какие-нибудь подсказки по этому поводу?
VonC
Я не знаю, каталог% temp%, похоже, имеет полный доступ для моей текущей учетной записи. Запускается ли git под учетной записью, отличной от администратора, при использовании bash? Кроме того, как я упоминал ранее, этого никогда не происходило ни с одной другой установкой Windows 7, которую я делал ... поэтому я так озадачен. То есть раньше мне никогда не приходилось возиться с разрешениями на файлы.
user413945 07
@thankyoud: Странно. А как насчет "портативной" установки? (просто разархивируйте его и добавьте cmdкаталог к ​​своему пути): будет ли он проявлять такое же неправильное поведение?
VonC
@thankyoud: есть ли конфликт в PATHэтой конкретной Windows7? Вы видите ту же ошибку с «минимальной PATH»? Т.е."C:\Path\To\Got\cmd;C:\Windows\system32;C:\Windows;C:\Windows\Syste m32\Wbem"
VonC
0

Первоначально я пытался решить эту проблему, скопировав DLL, как упоминалось здесь, но вскоре столкнулся с другими проблемами. Для меня реальным решением было установить путь в моем файле .bashrc, чтобы msys установил приоритет двоичных файлов msys.

Откройте оболочку msys и следующую строку в ~ / .bashrc:

экспорт ПУТЬ = / usr / local / bin: / mingw / bin: / bin: $ PATH

Иуда Ментер
источник
0

Меня мучила эта проблема, чтобы исправить эту проблему, я удалил tortoisegit и msysgit, а затем переустановил «Git-1.8.1.2-preview20130201».

Таким образом, моя проблема была исправлена, и я не могу использовать poshgit.

AdamWhite
источник
0

В моем случае я использовал шоколадный (chocolatey.org) для установки git.

Мне пришлось скопировать, libconv-2.dllчтобы C:\ProgramData\chocolatey\binон заработал. Я не уверен, что копирование файла C:\Program Files (x86)\Git\libexec\git-coreтакже обязательно, поскольку я сделал это вначале.

Люк Чаверс
источник
0

Я использовал версию GitHub Desktop и имел ту же проблему, я изменил оболочку по умолчанию, выбрав Настройка -> Параметры ---> Оболочка по умолчанию и проверил Git bash. Я запустил «Открыть оболочку Git» и запустил команду «git pull», это устранило проблему. В моем случае это сработало.

Mundroid
источник
0

Скопируйте все .dll из:

C: \ Users \ ИМЯ ВАШЕГО ПОЛЬЗОВАТЕЛЯ \ AppData \ Local \ GitHub \ PortableGit_25d850739bc178b2eb13c3e2a9faafea2f9143c0 \ mingw32 \ bin

кому:

C: \ Users \ ИМЯ ВАШЕГО ПОЛЬЗОВАТЕЛЯ \ AppData \ Local \ GitHub \ PortableGit_25d850739bc178b2eb13c3e2a9faafea2f9143c0 \ mingw32 \ libexec \ git-core

Крис Хэлкроу
источник
0

У меня была такая же проблема, я использую Windows 10, и решить эту проблему очень просто.

Загрузите файл dll с сайта:

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

извлеките его или вставьте напрямую в папку mingw, обычно он находится на диске C, если вы установили его с использованием параметров по умолчанию. Надеюсь, это поможет.

Самриддхи Верма
источник
0

Попробуйте следующую команду:

sudo rm -rf /Library/Developer/CommandLineTools 

и установить инструменты разработчика

Самолазов Роман
источник
-1

Мне пришлось столкнуться с этим же сообщением об ошибке при попытке настроить meanio, из которых git является предварительным условием (моя конкретная ошибка была: предварительное условие не найдено: git).
Исправление, которое я выяснил, повлекло за собой копирование libiconv2.dll из

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

к

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

Затем мне пришлось внести некоторые изменения в системные переменные среды Windows (щелкните правой кнопкой мыши компьютер, перейдите в свойства, нажмите «Дополнительные параметры системы» на левой вертикальной панели, выберите переменные среды). В переменных среды посмотрите в поле «Системные переменные». Найди

PATH

Variable и добавьте три новых ссылки:

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

Таким образом, все необходимые файлы git будут доступны через системный путь.

Надеюсь это поможет!

deusofnull
источник