Git dành cho Windows - Chương trình không thể khởi động vì thiếu libiconv2.dll


93

Khi tôi cố gắng chạy các lệnh nhất định (chẳng hạn như git push) từ git Bash trên Windows 7 (64bit), tôi gặp lỗi:

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

Tôi đã tìm kiếm toàn diện cho một giải pháp cho điều này.
Tôi có thể tìm thấy nhiều nhất là một chuỗi vấn đề tại trang web mã google ( Vấn đề 419 ) và một vài blog khác ở đây và ở đó. Theo như tôi có thể nói không có đề xuất nào được cung cấp trong các bài đăng sẽ thực sự giải quyết được vấn đề của tôi.

Tôi đã thử cài đặt lại. Tôi đã thử thêm $GIT/binvào PATH.
Tôi có thể xác minh rằng dll có trong $GIT/binthư mục ... nhưng tôi vẫn không thể đẩy sang điều khiển từ xa.

Tôi có một bản cài đặt msysgit đang hoạt động trên một hộp Windows 7 khác và tôi đã cài đặt theo cùng một cách trong cả hai trường hợp ... vì vậy không cần phải nói tôi khá bối rối.

Bất kỳ sự giúp đỡ nào về điều này sẽ được đánh giá cao nhất.

Cảm ơn,


1
DLL không phải là $ GIT / lib thay vì $ GIT / bin? Ít nhất, đó là cách nó hoạt động trên Linux / UNIX, các thư viện đi trong libthư mục. Tôi không biết liệu msysgit có sử dụng cùng một sơ đồ bố cục hay không nhưng sẽ nhanh chóng kiểm tra.
David Z

Câu hỏi này nên được gửi dưới dạng một lỗi để phát triển Git. Nhưng đối với cuộc sống của tôi, tôi không thể tìm thấy bất kỳ liên kết "submit lỗi" trên trang web Git ...
Andriy Drozdyuk

1
câu trả lời đầu tiên hoạt động, bạn nên đánh dấu nó là đã giải quyết!
erikbwork

@DavidZ - Bạn đã giải quyết được vấn đề của tôi. Câu trả lời của bạn phải là câu trả lời được chấp nhận ở đây.
Mekey Salaria

@Groundshaker không, trước hết tôi đã đăng một bình luận , không phải một câu trả lời; và nó không giải quyết được vấn đề của người đăng ban đầu, vì vậy ngay cả khi nó là một câu trả lời, nó không nên được chấp nhận. Dù sao thì có vẻ như một số câu trả lời hiện có đã đề cập đến bản sửa lỗi này ( hiển nhiên là nó nên được libexecthay vì lib), vì vậy tôi sẽ không đăng thứ gì đó trùng lặp chúng. (Nhưng tôi rất vui vì nhận xét của tôi hữu ích.)
David Z

Câu trả lời:


104

Làm việc xung quanh từ chuỗi này: http://groups.google.com/forum/#!topic/msysgit/twrVn_EbNI4

  • cd vào thư mục cài đặt git của bạn
  • copy mingw\bin\libiconv-2.dll libexec\git-core
    (hoặc copy bin\libiconv-2.dll libexec\git-corenếu cài đặt của bạn không có mingwthư mục)

Trong chuỗi liên kết, Drew yêu cầu hỗ trợ, vì vậy nếu bạn nghĩ rằng mình có thể giúp khắc phục sự cố này, bạn có thể muốn trả lời trong chuỗi Google Groups đó.

Lỗi xảy ra với các bản dựng này:

  • msysgit-fullinstall-1.7.4 HOẶC 1.7.6 (và 1.7.7)
  • msysgit-netinstall-1.7.4 HOẶC 1.7.6 (và 1.7.7)
  • Git dành cho Windows 1.7.6 (nhưng không phải 1.7.4)

5
Đây là giải pháp cho vấn đề của tôi. Tôi nghĩ rằng điều đáng chú ý là giải pháp này hoạt động đặc biệt đối với các lỗi trong quá trình submodule update, nhưng cũng có thể sửa các trường hợp khác.
gapple

9
Với git-1.7.8, tôi cần sao chép các tệp theo hướng khác; libiconv2.dll tồn tại trong libexec/git-core, nhưng cần được sao chép vào bin(hoặc được liên kết mklink /H libexec\git-core\libiconv2.dll bin\libiconv2.dll:).
gapple

Cách giải quyết này đã sửa lỗi msysGit 1.7.7.1 trên Windows 2003 x64 cho tôi. Nó đã thất bại khi tôi cố gắng chạy git submodule initvà đáng buồn thay, triệu chứng duy nhất tôi có thể thấy ban đầu là công việc Jenkins sẽ treo vô thời hạn. (Chạy git submodule inittừ cửa sổ Git Bash đã cho tôi thấy lỗi thực sự.) Cảm ơn!
Paul Karlin

4
Bản sửa lỗi của @ grapple đã phù hợp với tôi với bản dựng mới nhất 1.7.10-preview20120409 ngoại trừ nó libiconv-2.dll.
Soliah

1
TLDR: Atlassian Sourcetree: Sao chép libiconv2.dllvào libexec/git-corenhư mô tả. Đổi tên libiconv2.dllthành libiconv-2.dll. Tôi đã gặp lỗi tương tự khi cố gắng sử dụng phiên bản Atlassian Sourcetree mới nhất. Sourcetree được thiết lập để sử dụng Git bên ngoài (thay vì nhúng). Rõ ràng libiconv2.dlllibiconv-2.dlllà cùng một tệp, nhưng SourceTree tìm kiếm tệp có tên libiconv-2.dll, không phải libiconv2.dll. Vì vậy, nếu bạn đang sử dụng cây nguồn, bạn cần đổi tên libiconv2 sau khi chuyển nó sang git-core.
Brandon S.

42
  • copy / Program Files / Git / bin / libiconv-2.dll
  • to / Program Files / Git / libexec / git-core /

1
Cảm ơn, điều này đã khắc phục sự cố cho tôi trên máy Win7 của tôi đang chạy phiên bản git 1.7.7.1.msysgit.0
jesal

1
Tôi chỉ muốn lưu ý - thông báo lỗi của tôi đã chỉ định libiconv2.dll VÀ tôi đã có cả libiconv2.dll và libiconv-2.dll trong / bin.
Roger_S

1
Điều này rất hữu ích, cảm ơn. Nếu giống như tôi, bạn không có những thư mục này, hãy tìm chúng trong% USERPROFILE% \ Local Settings \ Application Data \ GitHub (xem câu trả lời của tôi)
wytten 14/08/13

15

Tôi đã giải quyết vấn đề này ... có một số điều cần lưu ý ở đây.

1) Vấn đề là lỗi đánh máy trong nguồn gốc được định cấu hình của tôi trong tệp .git / config cục bộ của tôi ... Vì vậy, tôi là một tên ngốc.

2) Git Bash không bị lỗi một cách duyên dáng trong tình huống này, và sau đó ném lỗi rất dễ gây hiểu lầm này như một cảnh báo, thay vì báo cáo rằng không có nguồn gốc được định cấu hình của tên được chỉ định trong tệp .git / config.

Cách duy nhất tôi có thể tìm ra điều này là thêm thư mục $ GitPath / cmd vào đường dẫn của tôi và chạy git từ dòng lệnh. Ở đó, tôi có thể nhận được một thông báo lỗi dài dòng cho biết rằng kho lưu trữ từ xa chưa tồn tại. Sau đó, tôi kéo lên trình soạn thảo vi đáng tin cậy và thấy trên thực tế có lỗi đánh máy.

Bài học ở đây. Nếu bạn gặp lỗi .dll kỳ lạ với msysgit, rất có thể đó là kết quả của việc định cấu hình sai ... chứ không phải là một số bất thường của hệ thống hoặc sự cố cài đặt.

Cảm ơn tất cả những người đã cố gắng giúp đỡ với điều này!


1
+1. Trong trường hợp xảy ra lỗi, hãy luôn sử dụng phiên CMD gốc tối thiểu. Nó thường mang tính hướng dẫn.
VonC

Cảm ơn, điều này đã giải quyết được vấn đề của tôi. Tôi thay đổi msysGit \ bin cho msysGit \ cmd trong đường dẫn cửa sổ.
Renaud

copy C:\msysgit\mingw\bin\libiconv-2.dll C:\msysgit\binTôi đã cài đặt sử dụng "MSysGit-Netinstall-1.9.4-preview20140611"
Jeflopo

14

Tôi thấy lỗi này với msysGit-fullinstall-1.7.3.1-preview20101002.exe trên Win 7.

Added <msysgit_dir>\mingw\bin to PATH 

sửa nó. libiconv2.dll đã được tìm thấy trong thư mục đó.


2
Điều này không hiệu quả với tôi, tôi phải sao chép DLL sang% WINDIR% (C: \ windows)
jamiebarrow

Tôi đã thêm c:\MinGW\binvào đường dẫn và điều đó đã sửa nó.
JellicleCat

10

Đã gặp sự cố này trong SmartGit trên mac. Sửa nó bằng cách thay đổi trong Preferences -> Commands -> Executable

Git có thể thực thi:

từ

/usr/bin/git

đến:

/usr/local/git/bin/git

2
Cảm ơn! Trong trường hợp của tôi, tôi phải sử dụng / usr / local / bin / git.
ezequielc

3

Các biến thể của câu trả lời sqzaman, vì tôi không có các thư mục ở cùng một nơi mà họ đã làm:

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

Lưu ý rằng tôi đã bắt đầu bằng cách sao chép libiconv-2.dll, nhưng sau đó nó phàn nàn về libcurl.dll nên tôi đã tiếp tục và sao chép * .dll


1
Sau một số thử nghiệm và lỗi, tôi nhận thấy rằng việc sao chép libcrypto.dll, libcurl.dll, libiconv-2.dll và libssl.dll vào thư mục git-core và điều đó hoạt động cho một kho lưu trữ (giải pháp tối thiểu). Sẽ không ngạc nhiên nếu cuối cùng tôi cũng sao chép tất cả những thứ khác cho người khác.
alle_meije

3

Vì SmartGit tham chiếu trang này của stackoverflow dẫn đến lỗi, tôi nghĩ kiến ​​thức này có thể hữu ích cho ai đó ở đây ....

Đôi khi mặc dù không có vấn đề gì với cài đặt git. Ngay cả khi bạn có thể sử dụng git bash và nhận thông tin phiên bản bằng cách nhập

git -- version 

SmartGit không thêm kho lưu trữ và trả về git là cố định hoặc không thể tìm nạp thông tin phiên bản (hoặc tương tự với thông báo này) ...

Nếu vậy, trước tiên bạn nên kiểm tra các tiện ích bảo mật và cài đặt ứng dụng diệt vi-rút của mình. Trong tình huống của tôi, việc vô hiệu hóa tường lửa comodo sẽ làm cho smartgit có thể xem thông tin cài đặt và phiên bản của healty git.


2

Cách nhanh nhất để sửa lỗi này là định vị tệp * .dll trên máy tính khác và sao chép nó =)


2

Tôi vừa thử cài đặt SmartGIT trên Windows và gặp phải vấn đề tương tự. Tôi chỉ phát hiện ra rằng nó không hoạt động bằng cách trỏ nó tới git.exe, thay vào đó tôi chỉ nó vào C: \ msysgit \ cmd \ git.cmd. Cho đến nay nó hoạt động tốt. Tôi có thể truy cập kho lưu trữ git dưới msysgit.

FYI, tôi đang sử dụng trình cài đặt Net cho Windows.

Hy vọng rằng đây là cách tiếp cận đúng đắn.


1
Tôi đang sử dụng GIT cho windows và đối với tôi nó hoạt động bằng cách trỏ tới git.exe.
Mandeep Janjua

2

Câu trả lời của tôi giải quyết được lỗi tương tự cho msysgit, nhưng có thể hữu ích với git thuần túy.

Trên Windows 7, tôi đã thêm <msysgit_dir>\mingw\binvào PATH như so_mv đã đề xuất ở trên (thông qua GUI biến hệ thống), nhưng tôi phải đăng xuất và đăng nhập vào hệ điều hành sau đó , nếu không PATHgiá trị sẽ không được cập nhật.


2

Để giải quyết vấn đề này, tôi thực sự phải sao chép tất cả các tệp DLL từ mingw/bin/sang bin/(không ghi đè lên bất kỳ tệp nào hiện có một lần). Tôi sử dụng kho lưu trữ HTTPs từ xa và nó tiếp tục phàn nàn.


1

Tôi đã gặp lỗi tương tự trên Windows 7 khi chạy \ msysgit \ bin \ git.exe. Tôi đã sửa nó bằng cách sao chép \ msysgit \ mingw \ bin \ libiconv-2.dll vào thư mục gốc của thư mục cài đặt Win 7.


1

Tôi đã cài đặt Git cho Windows, rồi Git để sao chép .dll

Điều này đã không làm việc cho tôi. Để giải quyết vấn đề, tôi đã phải thêm đường dẫn:

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

vào PATHbiến môi trường.

Điều này đã giải quyết vấn đề và bây giờ tôi có thể truy cập git từ dấu nhắc lệnh.


Tôi đang sử dụng plugin Git cho Sublime Text 2nơi tôi đi qua vấn đề này và giải quyết nó bằng cách thêm một con đường tương tự vào các cài đặt plugin nhưng với tất cả các dấu xồ nguợc thoát như sau:C:\\Users\\*username*\\AppData\\Local\\GitHub\\PortableGit_054f2e797ebafd44a30203088cd3d58663c627ef\\bin\\git.exe
Jasdeep Khalsa

1

Cá nhân tôi đã giải quyết nó bằng cách đọc lỗi tôi nhận được từ getopt.exe, cho tôi biết nó bị thiếu "libiconv2.dll" .. Tôi đã có libiconv-2.dll (lưu ý dấu gạch ngang "-") trong C: \ Program Files ( x86) \ Git \ bin. Tạo một bản sao và đặt tên là libiconv2.dll đã thực hiện một thủ thuật cho tôi ...

Tôi đã sử dụng một số gói sô cô la ... có thể tệp thực tế đã được đổi tên trong thời gian phát triển của nó ... và các phụ thuộc trong các gói thì không ....

Cũng hy vọng nó sẽ giúp ai đó ngoài kia :)


1

Nếu lỗi "thiếu libiconv-2.dll" xảy ra khi khởi động SourceTree trên Windows, hãy làm theo cách sau (Win 8.1):

đi đến

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

sao chép

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

đến

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

1

Một giải pháp khả thi cho SourceTree:

   1.Open the "Option" window.
   2.Select "Git".
   3.Than "Use System Git".
   4.And press OK button.

Đã làm cho tôi. Vì một số lý do, SourceTree chuyển sang git nhúng sau khi cập nhật, điều này gây ra sự cố.
starteleport

0

Tôi có msysgit trên Windows7 mà không gặp bất kỳ vấn đề nào với bất kỳ DLL nào.

Tôi có libiconv2.dll trong thư mục bin: C:\Path\To\Git\1.7.1\bin

Các vấn đề 419 là về một người nào đó đã cài đặt "môi trường phát triển để biên dịch Git cho Windows", không chỉ Git.
Xem câu trả lời SO này để biết sự khác biệt giữa hai .

Vậy bạn đã cài đặt cái nào?

  • Git-1.x.x.x...? (như ' Git-1.7.0.2-preview20100309.exe'),
  • hoặc msysGit-netinstall-1.x.x...? (như ' msysGit-netinstall-1.7.1-preview20100612.exe').

Tôi đã cài đặt .. Git-1.7.0.2-preview20100309.exe Tôi chắc chắn nhận ra Vấn đề 419 là bản cài đặt của nhà phát triển, nhưng đó là một trong những kết quả tìm kiếm duy nhất tôi có thể tìm thấy về chủ đề này, vì vậy tôi hy vọng nó có thể cung cấp một số thông tin chi tiết. Libconv2.dll của tôi nằm trong C: \ Path \ To \ Git \ bin, đây chỉ là vị trí cài đặt mặc định.
user413945,

@thankyoud: Tôi hiểu (và câu hỏi của bạn có vẻ được ghi chép lại). Tôi chỉ nghĩ để làm rõ thêm điều đó trong câu trả lời của tôi, để người khác thấy sự khác biệt. Vấn đề duy nhất khác mà tôi thấy Git gặp sự cố khi chạy liên quan đến ACL (như một số loại vấn đề đăng ký dll hoặc %TEMP%vấn đề viết). Có manh mối nào về mặt trận đó không?
VonC

Tôi không biết, thư mục% temp% dường như có toàn quyền truy cập vào tài khoản hiện tại của tôi. Git có chạy dưới tài khoản không phải là quản trị viên khi bạn bash không? Ngoài ra, như tôi đã đề cập trước đây, điều này chưa bao giờ xảy ra trên bất kỳ bản cài đặt Windows 7 nào khác mà tôi đã thực hiện ... vì vậy đó là lý do tại sao tôi rất bối rối. Điều đó có nghĩa là, trước đây tôi chưa bao giờ cần tìm kiếm quyền truy cập tệp.
user413945

@thankyoud: Lạ thật. Còn về cài đặt "di động"? (chỉ cần giải nén nó và thêm cmdthư mục vào đường dẫn của bạn): nó sẽ hiển thị cùng một hành vi bị lỗi?
VonC

@thankyoud: có xung đột nào trong PATHWindows7 cụ thể này không? Bạn có thấy lỗi tương tự với 'tối thiểu PATH' không? Tức là"C:\Path\To\Got\cmd;C:\Windows\system32;C:\Windows;C:\Windows\Syste m32\Wbem"
VonC

0

Ban đầu tôi đã cố gắng giải quyết vấn đề này bằng cách sao chép dll như đã đề cập ở đây nhưng sớm gặp phải các vấn đề khác. Đối với tôi, giải pháp thực sự là đặt đường dẫn trong tệp .bashrc của tôi cho msys để ưu tiên các tệp nhị phân của msys.

Mở msys shell và dòng sau trong ~ / .bashrc:

xuất PATH = / usr / local / bin: / mingw / bin: / bin: $ PATH


0

Tôi đã gặp khó khăn với vấn đề này, để khắc phục sự cố này, tôi đã gỡ cài đặt rùa và msysgit, sau đó tôi cài đặt lại "Git-1.8.1.2-preview20130201".

bằng cách làm này, điều này đã khắc phục sự cố của tôi và tôi không thể sử dụng poshgit.


0

Trong trường hợp của tôi, tôi đã sử dụng chocolatey (chocolatey.org) để cài đặt git.

Tôi đã phải sao chép libconv-2.dllđể C:\ProgramData\chocolatey\binlàm cho nó hoạt động. Tôi không chắc liệu C:\Program Files (x86)\Git\libexec\git-corecó nhất thiết phải sao chép tệp vào hay không, vì tôi đã làm điều đó trước.


0

Tôi đang sử dụng GitHub Desktop Version và gặp sự cố tương tự, tôi đã thay đổi Default shell bằng Setting -> Options ---> Default shell và chọn Git bash. Tôi đã bắt đầu "Open Git shell" và chạy lệnh "git pull", nó đã khắc phục được sự cố. Nó đã hoạt động trong trường hợp của tôi.


0

Sao chép tất cả .dlls từ:

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

đến:

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


0

Tôi đã gặp vấn đề tương tự, tôi đang sử dụng Windows 10 và rất dễ dàng để giải quyết vấn đề này.

Tải xuống tệp dll từ:

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

giải nén nó hoặc dán trực tiếp vào thư mục mingw, nó thường nằm trong ổ C nếu bạn đã cài đặt nó bằng các tùy chọn mặc định. Hy vọng nó giúp.


0

Hãy thử lệnh sau:

sudo rm -rf /Library/Developer/CommandLineTools 

và cài đặt các công cụ dành cho nhà phát triển


-1

Tôi đã phải đối phó với thông báo lỗi tương tự này trong khi cố gắng định cấu hình marenio, trong đó git là điều kiện tiên quyết (lỗi cụ thể của tôi là: không tìm thấy điều kiện tiên quyết: git).
Cách khắc phục mà tôi đã tìm ra là do sao chép libiconv2.dll từ

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

đến

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

Sau đó, tôi phải thực hiện một số điều chỉnh đối với Biến môi trường của hệ thống windows (Nhấp chuột phải vào máy tính, chuyển đến thuộc tính, nhấp vào "Cài đặt hệ thống nâng cao" trên thanh dọc bên trái, chọn biến môi trường) Khi ở trong Biến môi trường, hãy tìm trong hộp Biến hệ thống. Tìm

PATH

Biến và thêm ba tham chiếu mới:

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

Bằng cách này, tất cả các tệp git được yêu cầu đều có thể truy cập được trên đường dẫn hệ thống.

Hi vọng điêu nay co ich!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.