programing

mysql2 gem이 홈브루가 있는 OS X에서 MySQL 5.6.12로 컴파일하지 못함

closeapi 2023. 10. 3. 09:21
반응형

mysql2 gem이 홈브루가 있는 OS X에서 MySQL 5.6.12로 컴파일하지 못함

홈브루로 설치한 모든 패키지를 업데이트 했습니다.MySQL이 5.6.12로 업그레이드됨(5.5.27 정도에서):

$ mysql --version
mysql  Ver 14.14 Distrib 5.6.12, for osx10.8 (x86_64) using  EditLine wrapper

이제 mysql2 gem은 더 이상 컴파일되지 않습니다.

$ gem install mysql2
Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

        /Users/pupeno/.rvm/rubies/ruby-1.9.3-p429-perf/bin/ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for mysql.h... no
checking for mysql/mysql.h... no
-----
mysql.h is missing.  please check your installation of mysql and try again.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/pupeno/.rvm/rubies/ruby-1.9.3-p429-perf/bin/ruby
    --with-mysql-config
    --without-mysql-config

파일을mysql.h에 존재합니다./usr/local/Cellar/mysql/5.6.12/include/mysql.h. 무슨 일인지 아시겠어요?

파일을mysql.h불출현/usr/localsymlink가 필요 이상으로 깊이 들어가는 것 같기 때문입니다.

$ ls -la /usr/local/include/mysql
lrwxr-xr-x  1 pupeno  admin  36 21 Jun 15:18 /usr/local/include/mysql@ -> ../Cellar/mysql/5.6.12/include/mysql

대신에

/usr/local/Cellar/mysql/5.6.12/include

그럼에도 불구하고 수동으로 symlink를 수정했는데 여전히 컴파일이 실패했습니다.그래서 막혔어요.

저도 같은 문제가 있어서 해결할 수 있었습니다.저는 많은 것을 했고, 무엇이었는지 확실히는 모르지만 MySQL 5.6.10으로 이동한 것은 효과가 있었던 것 같습니다.

MySQL 5.6.12 제거:

brew unlink mysql
brew uninstall mysql

홈브루 디렉토리로 이동합니다.

cd /usr/local

버전 5.6.10으로 이동(을(를) 실행하면 버전 목록을 찾을 수 있습니다.brew versions mysql:

git checkout 48f7e86 Library/Formula/mysql.rb

그런 다음 mysql을 다시 설치합니다.

brew install mysql

그리고 지금은gem install mysql2저한테는 통합니다.

소스에서 mysql도 설치했습니다 (brew install mysql --build-from-source), 하지만 그것이 해결되지는 않았지만 해결책의 일부일 수도 있습니다.

그냥 ;)

gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.6.10/bin/mysql_config

이것 또한 저에게 효과가 있는 것 같았습니다.그것은 보석이 5.6.10에 대항하여 컴파일하도록 강요합니다.

bundle config build.mysql2 --with-mysql-config=/usr/local/Cellar/mysql/5.6.10/bin/mysql_config

관련 답변 : https://stackoverflow.com/a/9360181

여기서 가장 중요한 답은 한물 간...양조자는 고정된 mysql을 가지고 있습니다.

brew update
brew upgrade mysql
gem install mysql2

이것은 mysql을 최신 버전으로 업데이트 할 것이며, OSX에서 mysql2 gem으로 잘 작동 할 것으로 보입니다.

나는 특정해야 했습니다.ldflags그리고.cppflags정확하게 컴파일하려면 다음과 같이 해야 합니다.

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

훨씬 더 새로운 버전의 MySQL을 사용할 수 있지만, Mac OS X Mojave에서 이전 프로젝트를 설치하려면 MySQL 5.6을 실행하고 Rails 5 앱에서 링크해야 했습니다.

번들러를 구성한 다음 번들을 설치했는데 잘 되었습니다.

$> brew install mysql@5.6
$> bundle config build.mysql2 --with-mysql-config=/usr/local/Cellar/mysql\@5.6/5.6.42/bin/mysql_config
$> bundle install

경로에서 MySQL 릴리스 버전을 업데이트해야 합니다.

대신 이 답변을 추천합니다. mysql2 gem이 홈브루가 있는 OS X에서 MySQL 5.6.12로 컴파일하지 못합니다.

문제는 홈브루의 MySql 버전의 컴파일러 설정입니다.여기에서 찾은 원본 답변: http://www.randomactsofsentience.com/2013/05/gem-install-mysql2-missing-mysqlh-on-os.html

언급URL : https://stackoverflow.com/questions/17238226/mysql2-gem-fails-to-compile-with-mysql-5-6-12-on-os-x-with-homebrew

반응형