Git para Windows - O programa não pode ser iniciado porque está faltando libiconv2.dll

93

Quando tento executar certos comandos (como git push, por exemplo) de um git Bash no Windows 7 (64 bits), recebo o erro:

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

Procurei exaustivamente uma solução para isso.
O máximo que consigo encontrar é um tópico de discussão no site de código do Google ( Edição 419 ) e em alguns outros blogs aqui e ali. Pelo que eu posso dizer, nenhuma das sugestões oferecidas nos posts vai realmente resolver meu problema.

Tentei reinstalar. Eu tentei adicionar $GIT/binao PATH.
Posso verificar se a dll está no $GIT/bindiretório ... mas ainda não consigo enviar para o remoto.

Eu tenho uma instalação de trabalho do msysgit em outra caixa do Windows 7, e instalei da mesma forma em ambas as situações ... então nem é preciso dizer que estou bastante confuso.

Qualquer ajuda sobre isso seria muito apreciada.

Obrigado,

user413945
fonte
1
A DLL não deveria estar em $ GIT / lib em vez de $ GIT / bin? Pelo menos, é assim que funciona no Linux / UNIX, as bibliotecas vão no libdiretório. Não sei se o msysgit usa o mesmo esquema de layout, mas seria rápido verificar.
David Z
Esta questão deve ser enviada como um bug para o desenvolvimento Git. Mas não consigo encontrar nenhum link "enviar bug" no site do Git ...
Andriy Drozdyuk
1
a primeira resposta funciona, você deve marcá-la como resolvida!
erikbwork
@DavidZ - Você resolveu meu problema. Sua resposta deve ser a resposta aceita aqui.
Mekey Salaria
@Groundshaker não, antes de mais nada postei um comentário , não uma resposta; e não resolveu o problema do autor da postagem original, portanto, mesmo que fosse uma resposta, não deveria ser aceita. De qualquer forma, parece que várias das respostas existentes já cobrem essa correção (deveria ser ao libexecinvés de lib, evidentemente), então não vou postar algo que as duplique. (Mas estou feliz que meu comentário foi útil.)
David Z

Respostas:

104

Trabalhe com esta discussão: http://groups.google.com/forum/#!topic/msysgit/twrVn_EbNI4

  • cd em seu diretório de instalação git
  • copy mingw\bin\libiconv-2.dll libexec\git-core
    (ou copy bin\libiconv-2.dll libexec\git-corese sua instalação não tiver mingwpasta)

No tópico vinculado, Drew pede ajuda, então se você acha que pode ajudar a consertá-lo, responda naquele tópico dos Grupos do Google.

Erro acontece com estas compilações:

  • msysgit-fullinstall-1.7.4 OU 1.7.6 (e 1.7.7)
  • msysgit-netinstall-1.7.4 OU 1.7.6 (e 1.7.7)
  • Git para Windows 1.7.6 (mas não 1.7.4)
Paulecoyote
fonte
5
Essa foi a solução para meu problema. Acho que é importante notar que esta solução funciona especialmente para erros durante submodule update, mas pode corrigir outras instâncias também.
gapple de
9
Com o git-1.7.8, precisei copiar os arquivos na outra direção; libiconv2.dll existe em libexec/git-core, mas precisava ser copiado para bin(ou vinculado a:) mklink /H libexec\git-core\libiconv2.dll bin\libiconv2.dll.
gapple
Esta solução alternativa corrigiu o msysGit 1.7.7.1 no Windows 2003 x64 para mim. Ele estava falhando quando tentei executar git submodule inite, infelizmente, o único sintoma que pude ver inicialmente foi um trabalho do Jenkins que travava indefinidamente. (A execução git submodule initde uma janela do Git Bash me mostrou o verdadeiro erro.) Obrigado!
Paul Karlin
4
A correção do @grapple funcionou para mim com a última compilação 1.7.10-preview20120409, exceto que foi libiconv-2.dll.
Soliah
1
TLDR: Atlassian Sourcetree: Copie libiconv2.dllpara libexec/git-coreconforme descrito. Renomear libiconv2.dllpara libiconv-2.dll. Eu tive o mesmo erro ao tentar usar a versão mais recente do Atlassian Sourcetree. Sourcetree foi configurado para usar Git externo (em vez de incorporado). Aparentemente libiconv2.dlle libiconv-2.dllsão o mesmo arquivo, mas SourceTree procura o arquivo nomeado libiconv-2.dll, nãolibiconv2.dll . Portanto, se você estiver usando a árvore de código-fonte, precisará renomear libiconv2 após movê-lo para git-core.
Brandon S.
42
  • copiar / Arquivos de programas / Git / bin / libiconv-2.dll
  • para / Arquivos de programas / Git / libexec / git-core /
sqzaman
fonte
1
Obrigado, isso corrigiu para mim na minha máquina Win7 executando git versão 1.7.7.1.msysgit.0
jesal
1
Só queria observar - minha mensagem de erro especificou libiconv2.dll E eu tinha libiconv2.dll e libiconv-2.dll em / bin.
Roger_S
1
Isso foi útil, obrigado. Se, como eu, você não tem essas pastas, procure-as em% USERPROFILE% \ Local Settings \ Application Data \ GitHub (veja minha resposta)
wytten
15

Resolvi isso ... há algumas coisas a serem observadas aqui.

1) O problema foi um erro de digitação na minha origem configurada no meu arquivo .git / config local ... Então, eu sou um idiota.

2) Git Bash não falha normalmente nesta situação e, em seguida, lança este erro muito enganador como um alerta, em vez de relatar que não há origem configurada do nome especificado no arquivo .git / config.

A única maneira de descobrir isso foi adicionando o diretório $ GitPath / cmd ao meu caminho e executando git a partir da linha de comando. Lá, consegui obter uma mensagem de erro detalhada indicando que o repositório remoto ainda não existe. Então eu abri o confiável editor vi e vi que havia de fato um erro de digitação.

A lição aqui. Se você estiver recebendo um erro estranho .dll com msysgit, pode muito provavelmente ser o resultado de uma configuração incorreta ... em vez de alguma anomalia do sistema ou problema de instalação.

Obrigado a todos que tentaram ajudar com isso!

user413945
fonte
1
+1. Em caso de erro, sempre recorra a uma sessão CMD nativa mínima. Geralmente é instrutivo.
VonC de
Obrigado, isso resolveu meu problema, eu mudo msysGit \ bin para msysGit \ cmd no caminho do windows.
Renaud
copy C:\msysgit\mingw\bin\libiconv-2.dll C:\msysgit\binEu instalei usando "msysGit-netinstall-1.9.4-preview20140611"
Jeflopo
14

Eu vi este erro com msysGit-fullinstall-1.7.3.1-preview20101002.exe no Win 7.

Added <msysgit_dir>\mingw\bin to PATH 

consertá-lo. libiconv2.dll foi encontrado nesse diretório.

so_mv
fonte
2
Isso não funcionou para mim, tive que copiar a DLL para% WINDIR% (C: \ windows)
jamiebarrow
Eu adicionei c:\MinGW\binao caminho e isso consertou.
JellicleCat
10

Tive esse problema no SmartGit no mac. Corrigido alterando em Preferências -> Comandos -> Executável

Executável Git:

de

/usr/bin/git

para:

/usr/local/git/bin/git
Resfriador
fonte
2
Obrigado! No meu caso, tive que usar / usr / local / bin / git.
ezequielc
3

Variação da resposta de sqzaman, pois eu não tinha as pastas no mesmo lugar que elas:

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

Observe que comecei copiando libiconv-2.dll, mas depois ele reclamou sobre libcurl.dll, então fui em frente e copiei * .dll

wytten
fonte
1
Após algumas tentativas e erros, descobri que copiar libcrypto.dll, libcurl.dll, libiconv-2.dll e libssl.dll para o diretório git-core e funcionava para um repositório (solução mínima). Não ficaria surpreso se eu acabar copiando todos os outros também para os outros.
alle_meije de
3

Como o SmartGit faz referência a esta página de stackoverflow em erro, acho que esse conhecimento pode ser útil para alguém aqui ....

Às vezes, embora não haja nenhum problema com a instalação do git. Mesmo se você puder usar git bash e obter informações de versão digitando

git -- version 

SmartGit não adiciona repositório e retorna git é obsoleto ou as informações de versão não podem ser obtidas (ou semelhante a esta mensagem) ...

Nesse caso, é melhor verificar primeiro os utilitários de segurança e as configurações dos aplicativos de remoção de vírus. Na minha situação, desabilitar o firewall comodo torna o smartgit capaz de ver as informações de instalação e versão do healty git.

Erdinç Çorbacı
fonte
2

A maneira mais rápida de corrigir isso é localizar o arquivo * .dll no outro PC e copiá-lo =)

KristofMols
fonte
2

Acabei de tentar instalar o SmartGIT no Windows e enfrentando o mesmo problema. Acabei de descobrir que não funciona apontando-o para git.exe, mas sim para C: \ msysgit \ cmd \ git.cmd. Até agora está funcionando bem. Posso acessar o repositório git em msysgit.

Para sua informação, estou usando o instalador da rede para Windows.

Esperando que essa seja a abordagem certa.


fonte
1
Estou usando o GIT para windows e, para mim, funcionou apontando para git.exe.
Mandeep Janjua
2

Minha resposta resolve o mesmo erro para msysgit, mas pode ajudar com git puro.

No Windows 7, eu adicionei <msysgit_dir>\mingw\bina PATH como so_mv recomendou acima (via Variáveis GUI System), mas eu tive que sair e se autenticar para OS depois disso , caso contrário, o PATHvalor não será atualizada.

sompylasar
fonte
2

Para resolver esse problema, na verdade, tive que copiar todas as DLLs de mingw/bin/para bin/(sem substituir as existentes uma vez). Eu uso repositórios HTTPs remotos e ele não parava de reclamar.

Kingen
fonte
1

Eu tive o mesmo erro no Windows 7 ao executar \ msysgit \ bin \ git.exe. Eu corrigi-lo copiando o \ msysgit \ mingw \ bin \ libiconv-2.dll para a raiz do diretório de instalação do Win 7.

Boris Jockov
fonte
1

Instalei o Git para Windows, depois o Git para copiar o .dll

Isto não funcionou para mim. Para resolver o problema, tive que adicionar o caminho:

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

à PATHvariável de ambiente.

Isso resolveu o problema e agora posso acessar o git no prompt de comando.

Sebastien V.
fonte
Estou usando o plug-in Git para Sublime Text 2onde me deparei com esse problema e o resolvi adicionando um caminho semelhante nas configurações do plug-in, mas com todas as barras invertidas escapadas da seguinte forma:C:\\Users\\*username*\\AppData\\Local\\GitHub\\PortableGit_054f2e797ebafd44a30203088cd3d58663c627ef\\bin\\git.exe
Jasdeep Khalsa
1

Pessoalmente, resolvi lendo o erro que recebi de getopt.exe, que me dizia que estava faltando "libiconv2.dll" .. Eu tinha libiconv-2.dll (observe o traço "-") em C: \ Arquivos de programas ( x86) \ Git \ bin. Fazer uma cópia com o nome de libiconv2.dll funcionou para mim ...

Eu usei alguns pacotes de chocolate ... talvez o arquivo real tenha sido renomeado durante seu tempo de desenvolvimento ... e as dependências nos pacotes não ....

Bem, espero que ajude alguém por aí :)

Maurice CGP Peters
fonte
1

Se o erro "missing libiconv-2.dll" ocorrer ao iniciar o SourceTree no Windows, o seguinte funcionou para mim (Win 8.1):

vamos para

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

cópia de

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

para

C:\Users\$USERNAME$\AppData\Local\Atlassian\SourceTree\git_local\libexec\git-core
felix
fonte
1

Uma solução possível para SourceTree:

   1.Open the "Option" window.
   2.Select "Git".
   3.Than "Use System Git".
   4.And press OK button.
Flayn
fonte
Funcionou para mim. Por algum motivo, SourceTree mudou para git incorporado após a atualização, o que causou o problema.
starteleport
0

Tenho msysgit no Windows7 sem qualquer problema com qualquer DLL.

Tenho libiconv2.dll no diretório bin: C:\Path\To\Git\1.7.1\bin

O problema 419 era sobre alguém que instalou o "ambiente de desenvolvimento para compilar o Git para Windows", não apenas o Git.
Veja esta resposta do SO para a diferença entre os dois .

Então, qual você instalou?

  • Git-1.x.x.x...? (como ' Git-1.7.0.2-preview20100309.exe'),
  • ou msysGit-netinstall-1.x.x...? (gostar 'msysGit-netinstall-1.7.1-preview20100612.exe ').
VonC
fonte
Eu instalei .. Git-1.7.0.2-preview20100309.exe Eu definitivamente percebi que o problema 419 era uma instalação do desenvolvedor, mas é um dos únicos resultados de pesquisa que consegui encontrar sobre esse assunto, então esperava que pudesse fornecer alguns insights. Meu libconv2.dll está em C: \ Path \ To \ Git \ bin, que é apenas o local de instalação padrão.
user413945
@ obrigado: eu entendo (e sua pergunta parece bem documentada). Só pensei em deixar isso mais claro na minha resposta, para que outros vejam a diferença. O único outro problema que vi com o Git tendo problemas para executar está relacionado à ACL (como algum tipo de problema de registro de dll ou de %TEMP%gravação). Alguma pista nessa frente?
VonC de
Não sei, o diretório% temp% parece ter acesso total à minha conta atual. O git é executado em uma conta diferente de administrador quando você faz bash? Além disso, como mencionei antes, isso nunca aconteceu em qualquer outra instalação do Windows 7 que eu fiz ... é por isso que estou tão perplexo. Ou seja, nunca precisei mexer com as permissões de arquivo no passado.
user413945
@thankyoud: Estranho. E a instalação "portátil"? (apenas descompacte-o e adicione o cmddiretório ao seu caminho): ele exibirá o mesmo comportamento defeituoso?
VonC
@thankyoud: existe algum conflito PATHneste Windows7 em particular? Você vê o mesmo erro com um 'mínimo PATH'? "C:\Path\To\Got\cmd;C:\Windows\system32;C:\Windows;C:\Windows\Syste m32\Wbem"
Ou
0

Originalmente, tentei resolver esse problema copiando a dll conforme mencionado aqui, mas logo encontrei outros problemas. Para mim, a solução real era definir o caminho em meu arquivo .bashrc para msys para priorizar os binários msys.

Abra o shell msys e a seguinte linha em ~ / .bashrc:

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

Judah Menter
fonte
0

Tenho sido atormentado com esse problema, para corrigir esse problema, desinstalei o tortoisegit e o msysgit e reinstalei o "Git-1.8.1.2-preview20130201".

ao fazer isso, corrigiu meu problema e não consigo usar o poshgit.

AdamWhite
fonte
0

No meu caso, usei chocolatey (chocolatey.org) para instalar o git.

Eu tive que copiar libconv-2.dllpara C:\ProgramData\chocolatey\binfazê-lo funcionar. Não tenho certeza se copiar o arquivo C:\Program Files (x86)\Git\libexec\git-coretambém é necessariamente, como fiz primeiro.

Luke Chavers
fonte
0

Eu estava usando o GitHub Desktop Version e tendo o mesmo problema, mudei o shell padrão em Setting -> Options ---> Default shell e verifiquei Git bash. Iniciei o "Open Git shell" e executei o comando "git pull", que corrigiu o problema. Funcionou no meu caso.

Mundroid
fonte
0

Copie todos os .dlls de:

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

para:

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

Chris Halcrow
fonte
0

Tive o mesmo problema, estou usando Windows 10 e é super fácil resolver esse problema.

Baixe o arquivo dll em:

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

extraia-o ou cole-o na pasta mingw diretamente, geralmente está no drive C se você o instalou usando as opções padrão. Espero que ajude.

Samriddhi Verma
fonte
0

Tente o seguinte comando:

sudo rm -rf /Library/Developer/CommandLineTools 

e instalar ferramentas de desenvolvedor

Samolazov Roman
fonte
-1

Tive que lidar com essa mesma mensagem de erro ao tentar configurar o meanio, do qual git é um pré-requisito (meu erro específico foi: pré-requisito não encontrado: git).
A correção que descobri envolvia copiar libiconv2.dll de

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

para

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

Então eu tive que fazer alguns ajustes nas Variáveis ​​de Ambiente do sistema Windows (clique com o botão direito no computador, vá para propriedades, clique em "Configurações Avançadas do Sistema" na barra vertical esquerda, selecione variáveis ​​de ambiente) Uma vez em Variáveis ​​de Ambiente, olhe na caixa Variáveis ​​de Sistema. Encontre o

PATH

Variável e adicionar três novas referências:

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

Dessa forma, todos os arquivos git necessários podem ser acessados ​​no caminho do sistema.

Espero que isto ajude!

deusofnull
fonte