mysql2 gem으로 앱을 설치하려고 할 때 오류 발생


84

mysql2gem 을 사용하는 오픈 소스 레일 3.2.21 애플리케이션을 설치하려고 하지만 명령을 실행하려고 bundle하면 다음 오류가 발생합니다.

Fetching: mysql2-0.3.18.gem (100%)
Building native extensions.  This could take a while...
p
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

    /Users/my_username/.rvm/rubies/ruby-2.1.2/bin/ruby -r ./siteconf20150614-72129-orqsb7.rb extconf.rb
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
-----
Using mysql_config at /usr/local/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
-----
Don't know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load
-----
-----
Setting libpath to /usr/local/Cellar/mysql/5.6.25/lib
-----
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling client.c
compiling infile.c
compiling mysql2_ext.c
compiling result.c
linking shared-object mysql2/mysql2.bundle
ld: warning: directory not found for option '-L/Users/travis/.sm/pkg/active/lib'
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/my_username/.rvm/rubies/ruby-2.1.2/lib/ruby/gems/2.1.0/gems/mysql2-0.3.18 for inspection.
Results logged to /Users/my_username/.rvm/rubies/ruby-2.1.2/lib/ruby/gems/2.1.0/extensions/x86

mysqlhomebrew를 통해 설치 한 모든 버전을 제거 하고 다음과 같이 다시 설치해 보았습니다 .

brew uninstall --force mysql && brew install mysql

그런 다음 실행 :

sudo gem install mysql2

여기에서 여러 유사한 질문에서 제안한 것처럼 여전히 위와 동일한 오류가 발생합니다.

누군가 이것을 시작하고 실행하는 방법에 대한 지침을 제공 할 수 있습니까?


"brew doctor"를 실행하고 오류가 있는지 확인하십시오. 그렇다면 지침에 따라 다시 시도하십시오.
michniewicz

gem의 종속성을 설치 했습니까? github.com/brianmario/mysql2#general-instructions
lcguida

@ValAsensio, 진심으로 동의하지 않습니다. 가능하면 항상 프로덕션 DB를 개발에 사용해야한다고 생각합니다. 저는 개발에 sqlite를 사용하지 않으며 함께 일하는 사람도 없습니다.
닐스

@niels. 예. 나는 이것에 동의한다 "나는 당신이 항상 당신의 프로덕션 DB를 개발에 사용하려고 노력해야한다고 생각한다"라고 내 생각에이 고대 코멘트는 쓸모가 없었다. 삭제했습니다.
Elvn

답변:


54

오류 로그에 다음과 같이 표시됩니다.

ld: library not found for -lssl

따라서 다음을 설치해야합니다 libssl.

brew install openssl

주석에서 지적했듯이 경로를 라이브러리로 내 보내야 할 수도 있습니다.

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/

27
: 그건 충분히, 하나 개의 필요성은 다음과 같이 이후에 내보낼 수 없습니다export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
Gilg 그

export LIBRARY_PATH = $ LIBRARY_PATH : / usr / local / opt / openssl / lib /`오랜 시도 끝에 나를 위해 작동합니다. 고마워!!
Abhi

161

여전히 문제가 발생하는 경우 :

brew를 통해 openssl을 설치하면 다음 메시지가 표시됩니다.

Apple은 자체 TLS 및 암호화 라이브러리를 위해 OpenSSL 사용을 중단했습니다.

일반적으로 이에 대한 결과는 없습니다. 자체 소프트웨어를 빌드하고이 공식이 필요한 경우 빌드 변수에 추가해야합니다.

LDFLAGS : -L / usr / local / opt / openssl / lib
CPPFLAGS : -I / usr / local / opt / openssl / include
PKG_CONFIG_PATH : / usr / local / opt / openssl / lib / pkgconfig

다음을 실행하여 이러한 빌드 플래그 (로컬 애플리케이션 용)를 설정할 수 있습니다.

bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"

이것은 나를 위해 일했습니다.

자세한 내용은 번 들러 문서 를 참조하십시오.


79
그냥 사용하려는 경우 gem install, 다음과 같은 일을 : gem install mysql2 -v '0.3.21' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
닐스

^^^ @niels 그 답이되어야합니다 ... Alessandro 's는 Sierra에서 작동하지 않습니다 ( "Warning : Refusing to link : open ssl ..."-> 더 이상 사용되지 않는 openssl 시스템과 관련이 있음)
the12

2
@ the12 niels의 솔루션은 gem install, 내 솔루션은 bundle install. 정확히 어떤 문제가 발생하고 있습니까? 오류를 게시 할 수 있습니까? 내가 게시 한 솔루션은 여전히 ​​나에게 효과적입니다.
Alessandro Berardi 2016

1
나는 bundle installmysql에 의존하는 repo를 시도하기 시작했습니다 . @AlessandroBerardi의 솔루션이 저에게 효과가 없었습니다. @niels '했다. : /
vergenzt

3
--with-cppflags는 최신 OSX에서 중단 된 것으로 보입니다. 생략 할 수 있다고 생각합니다. bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"
Xavier Shay

36

나를위한 해결책은 Xcode 명령 줄 도구를 설치하는 것이 었습니다.

최근에 Mac App Store를 통해 Xcode를 업데이트했는데 그렇게 할 때마다 명령 줄 도구를 다시 설치해야한다는 사실을 알게되었습니다.

xcode-select --install

34

이 시도:

gem install mysql2 -v '0.5.2' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include

(적절한 버전 업데이트)


1
SSL 라이브러리를 찾을 수 없다는 점을 감안할 때 이것이 올바른 접근 방식이며 저에게 잘 작동했습니다.
TehJabbit

2
먼저 설치 brew install openssl한 다음 gem install mysql2 -v '0.4.10' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include 나를 위해 일했습니다. 감사합니다!
Touseef Murtaza

1
@TouseefMurtaza 귀하의 답변이 저에게 효과적이었습니다-감사합니다!
Jared

👋 미래의 자신에게. 이제이 답변을 두 번 읽었으므로 이제. 이것은 당신의 상황을 위해 해결되었습니다! 이제 당신의 시간을 코드로, 당신의 코드를 돈으로 교환하십시오.
DaveWoodall.com

28

여기 솔루션을 기반으로

brew install openssl

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/

문제를 해결했습니다.


1
export정말 도움이됩니다. 기존 openssl을 사용해도 경로가 없습니다.
Yakob Ubaidi

10

저를 올바른 방향으로 안내 해준 @mudasobwa에게 감사드립니다. 링크되지 않은 openssl 파일로 인해 오류가 발생한 것으로 나타 났으므로 다음을 실행하십시오.

brew reinstall openssl && brew link openssl --force 

문제를 해결했습니다. 여기에서 해결책을 찾았습니다 : OpenSSL, RVM, Brew, 충돌 오류


3

명령의 조합으로 해결되었습니다. 저는 모하비에 있습니다.

brew reinstall openssl && brew link openssl --force

그리고

gem install mysql2 -v '0.4.10' -- \
  --with-ldflags=-L/usr/local/opt/openssl/lib \
  --with-cppflags=-I/usr/local/opt/openssl/include


2

Homebrew 업데이트 (openssl@1.1) 후에 libs에 대한 새 경로가 있으므로 다음을 사용할 수 있습니다.

bundle config build.mysql2 --with-opt-dir=$(brew --prefix openssl)
bundle install

그것은 고칠 것입니다 ld: library not found for -lssl error


1

mysql2gem 을 빌드하는 데 필요한 주요 파일을 놓친 것 같습니다.

sudo apt-get install libsqlite3-dev libmysqlclient-dev -y

libsqlite3-dev 필수는 아니지만 기본 rails DB이므로 설치하십시오.


-1

나는 내가 사용해야한다는 것을 알았다 --with-opt-dir=/usr/local/opt .

특히 내 ~/.bundle/config파일에 다음을 추가했습니다 .

BUNDLE_BUILD__MYSQL2: "--with-opt-dir=/usr/local/opt"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.