programing

라이브러리가 로드되지 않음: mysql2 gem을 사용하여 OS X 10.6에서 'rails server'를 실행하려고 하면 libmysqlclient.16.dylib 오류가 발생함

copyandpastes 2022. 10. 19. 21:37
반응형

라이브러리가 로드되지 않음: mysql2 gem을 사용하여 OS X 10.6에서 'rails server'를 실행하려고 하면 libmysqlclient.16.dylib 오류가 발생함

한동안 이것과 씨름하고 있어요.

스노우 레퍼드 기계에 레일즈 3, 보석, mysql을 설치했습니다.첫 번째 프로젝트를 만들고 실행하려고 할 때까지 모든 것이 잘 되어가고 있었습니다.

rails server

이 기능을 실행하면 다음과 같이 됩니다.

jontybrook$ rails server
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.16.dylib (LoadError)
  Referenced from: /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
  Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
    from /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2.rb:7
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler.rb:112:in `require'
    from /Users/jontybrook/Dropbox/CODING/simple_cms/config/application.rb:7
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28:in `require'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27:in `tap'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27
    from script/rails:6:in `require'
    from script/rails:6
jontybrook$ 

제가 알기로는 mysql2 gem에 문제가 있습니다.MySQL은 정상적으로 동작하고 있는 것 같고, Gemfile은 mysql2, database.yml 파일도 정상인 것 같습니다.

에러에 기재되어 있습니다.

Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

그럼에도 불구하고

jontybrook$ cd /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2
jontybrook$ ls
client.rb   em.rb       error.rb      mysql2.bundle result.rb

MySQL2.bundle이 있어요!?

오래된 mysql gem을 사용하면 WEBrick은 정상적으로 부팅됩니다.하지만 그건 이상적이지 않아, 그렇지 않나요?

구글이 줄 수 있는 건 다 해봤어!아무쪼록 잘 부탁드립니다.

나는 이 대답들 중 어느 것도 나에게 도움이 되지 않았지만, 이것은 내가 그것을 작동시키기 위해 사용했던 명령어입니다.이렇게 하면 mysql을 업데이트할 때마다 install_name_tool을 사용할 필요가 없습니다.

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

난 결국 이 문제를 해결했어!

RVM 아래에 Ruby와 Rails를 다시 설치했습니다.Ruby 버전 1.9.2-p136을 사용하고 있습니다.

rvm에서 다시 설치한 후에도 이 오류가 계속 발생했습니다.

결국 이 문제를 해결한 마법의 명령은 다음과 같습니다.

sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib ~/.rvm/gems/ruby-1.9.2-p136/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

이게 다른 사람에게 도움이 되길 바라!

이 수정은 저에게 매우 효과적이었습니다.

~/.profile에 다음 추가

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

http://www.rickwargo.com/2010/12/16/installing-mysql-5-5-on-os-x-10-6-snow-leopard-and-rails-3/

이것은 단지 mysql을 업그레이드했지만 mysql2 gem을 업데이트하지 않았기 때문입니다.- gem을 재설치하면 수정이 됩니다.

gem pristine mysql2

저도 같은 문제가 있어요.libmysqlclient 라이브러리를 찾을 수 없는 것 같습니다.나에게 효과가 있었던 임시 수정은 다음과 같습니다.

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/

설정이 로드 패스를 어디에 지정하는지, 또는 로드 패스가 무엇으로 설정되어 있는지 알 수 없지만 mysql 설치가 로드 패스에 포함되어 있지 않은 것 같습니다.좀 더 영구적인 해결책을 찾게 되면 다시 글을 올리겠습니다.

편집: 실제로 이 수정은 문제를 보다 정확하게 해결하는 것으로 보입니다.

다음 항목을 에 추가합니다.~/.bash_profile:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

이건 내게 효과가 있었다.

OSX El Capitan 업데이트에서 다음을 수행합니다.

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

에러를 던집니다.

ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted

이를 피하기 위해 할 수 있는 일은 우선 이 파일을libmysqlclient.18.dylib명령어 사용

User$ locate libmysqlclient.18.dylib

내 경우엔 다시 돌아왔다./usr/local/mysql-5.5.24-osx10.5-x86_64/lib/libmysqlclient.18.dylib

그래서 대신usr/lib/심볼링크를 만듭니다.usr/local/lib/다음과 같습니다.

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

자세한 내용은 https://forums.developer.apple.com/thread/7935 를 참조해 주세요.

다음 대사가 좋습니다.mac 10.7.2를 사용하고 있습니다.

sudo ln - s /usr / local / local / dipl / libmysqlclient . 18 . dylib / usr / lib / libmysqlclient . 18 . dylib

방금 이 문제에 부딪혔어요.mysql2 gem을 제거하고 다시 설치하면 됩니다.다른 사람에게도 효과가 있기를 바랍니다.

저는 이렇게 작동했습니다.

다음 명령을 실행했습니다.
sudo install_name_filename - change libmysqlclient.18.dylib ~/.rvm/filename/filename/filename-2.18.dylib~/filename-1.9.2-p180/filename/filename.2/filename/filename.2.18.filename-2.18.filename2.18.filename2.18.filename2.18.filename2.filename2.filename

내 환경:
$ 레일 - v 레일 3.0.6

$mysql --버전
mysql Ver 14.14 Readline 5.1을 사용한osx10.6(i386)의 경우 Distributed 5.5.11

$ 루비 - v
루비 1.9.2p180 (2011-02-18 리비전 30909) [x86_64-40010.7.0]

이게 도움이 됐으면 좋겠네요.

고마워, 오가포!이 에일리어스를 내보낸 후 링크를 따라가 보니 mysql2.bundle이 /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2.bundle로 되어 있어 해당 번들을 수정하지 않고 install_name_tool을 조정했습니다.

자, 이제:

   $ otool -L /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle 
    /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle:
        /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.7)
        /usr/local/mysql/lib/libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)

안녕하세요 프레디 안데르센의 추천 링크에서 작동했습니다.

sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql /lib/libmysqlclient.16.dylib /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

내 버전의 mysql로 변경해야 했어 명령어로, 고마워

현재 프로젝트의 젬셋을 삭제하고 다시 생성하여 번들 설치를 다시 실행함으로써 이 문제를 해결했습니다.새로운 버전의 mysql을 설치해서 그런 것 같아요.

장고랑 작업할 때 이런 문제가 있었는데brew많은 오픈 소스 프로그램을 설치하기 위해 저는 다음 작업을 해야 했습니다.brew설치하다mysql:

sudo ln -s /usr/local/Cellar/mysql/5.5.20/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

사용하시는 버전의 라이브러리로 대체해 주세요.

bundle install mysql --force날 도와줬어그 결과 제품이 없어진 의존관계를 다시 설치했습니다.brew uninstall mysql.

존티, 나도 힘들어

여기 단서가 있는 것 같아

otool -L /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle:
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.7)
    libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)

다이립으로 가는 길이 좀 짧아요?

dylib 경로에서 벗어나는 보석 설치 지침을 찾고 있지만, 직접 보석을 만든 적이 없기 때문에 작업이 더디게 진행되고 있습니다.

더 찾으면 더 올릴게요!

며칠 전에도 똑같은 문제가 있었어요.나는 결국 그것을 해결했다.어떻게 된 건지 모르겠지만 어쨌든 내가 한 일을 말해줄게.아마 도움이 될 거야

RVM을 다운로드하는 것부터 시작했습니다.아직 사용하지 않으신다면 적극 추천합니다.기본적으로 Ruby, RoR 및 RubyGems의 새로운 개별 설치를 위한 샌드박스를 만듭니다.실제로 여러 설치를 동시에 수행할 수 있으며 서로 즉시 전환할 수 있습니다.그것은 마법처럼 작용한다.

이게 왜 도움이 되죠?OS X의 디폴트 Ruby 인스톨을 조작하면 안 되기 때문입니다.시스템은 그것에 달려있다.기본 Ruby 및 RoR 설치는 그대로 두고 RVM을 사용하여 자체 개발에 사용할 수 있는 새로운 Ruby 및 RoR 설치를 만드는 것이 좋습니다.

RoR, RubyGems, mysql을 따로 설치하자 바로 작동했습니다.내가 취한 정확한 절차에 대해서는 내 질문을 참조하십시오.Rails, MySQL 등의 설치가 모두 잘못됨

다시 말씀드리지만, 이것이 당신의 문제를 확실히 해결할 수 있을지는 모르겠습니다.하지만 확실히 효과가 있었습니다.어쨌든 RVM을 사용하는 것이 좋습니다.

위의 솔루션에서도 TextMate용 Rails 플러그인에서는 (예를 들어) 작동하지 않는 것을 알 수 있었습니다.(데이터베이스 스키마를 검색할 때) 유사한 오류가 발생했습니다.

그래서 터미널을 열었습니다.

cd /usr/local/lib
sudo ln -s ../mysql-5.5.8-osx10.6-x86_64/lib/libmysqlclient.16.dylib .

mysql-5.5.8-osx10.6-x86_64 를 자신의 패스(또는 mysql)로 바꿉니다.

이를 통해 lib에 대한 심볼링크가 생성되며, 현재는 Ruby-on-rails-tmbundle과 같은 TextMate 플러그인과 마찬가지로 명령줄에서 레일이 실행됩니다.

명확히 하자면, 레일 서버를 시작할 때 발생하는 오류도 수정됩니다.

이것은 보통 mysql을 업그레이드할 때 발생합니다.오래된 mysql libs 위에 구축되어 있는 mysql2 gem은 새로운 libs에서는 동작할 수 없습니다.재설치만 하면 됩니다.

mysql2 제거 방법gem uninstall mysql2. 그 후 를 사용하여 설치합니다.gem install mysql2

다음을 포함하는 프로젝트 폴더에 .rvmrc 파일을 생성하여 해결했습니다.

rvm use <yourrubie>

프로젝트 경로 입력

cd ~/myprojectpath

그러면 나는 달린다

bundle install

내 버전의 luvlss 명령:

Mac OSX 10.10.5

MySQL 5.6.27

승객 5.0.21

sudo ln -s /usr/local/mysql-5.6.27-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

저와 같이 여러 링크를 시도하고 있다면 다음을 사용하여 정리하십시오.

sudo unlink /usr/lib/libmysqlclient.18.dylib

터미널을 열고 다음을 실행합니다.

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

그건 작동할 거야.

OSX를 사용하고 brew를 사용하여 mysql을 설치하는 경우 다음을 수행할 수 있습니다.

brew link mysql

버전에 문제가 있는 경우(mysql 5.7이 실행 중이고 내 gem은 5.6.25가 필요함), 다음을 수행할 수 있습니다.

brew unlink mysql
brew switch mysql 5.6.25

저는 mysql을 수동으로 제거해야 했습니다.

brew uninstall mysql
rm -rf /usr/local/var/mysql
brew install mysql

언급URL : https://stackoverflow.com/questions/4546698/library-not-loaded-libmysqlclient-16-dylib-error-when-trying-to-run-rails-serv

반응형