[해결됨] M1 Mac에 mysql2 Gem 설치 중 오류 발생
오늘 이 문제를 해결해 봅시다!
가정
에러 메시지
프로젝트 내에서 번들 설치를 수행할 때마다 다음 오류가 발생했습니다.
linking shared-object mysql2/mysql2.bundle
ld: library not found for -lzstd
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1
make failed, exit code 2
해결책
이 문제를 해결하려면 homebrew에서 mysql 설치 위치를 제공하고 mysql2 gem을 별도로 설치해야 합니다.
컴퓨터에 설치된 mysql 버전 확인
명령줄에서 다음 명령을 실행합니다.
$ mysql --version
mysql Ver 8.0.27 for macos12.5 on arm64 (Homebrew)
mysql 버전을 확인하십시오. 여기 8.0.27 다음 단계로 이동합니다.
mysql2 gem을 별도로 설치
make 오류를 해결하려면 mysql2 gem을 별도로 설치해야 합니다. 그렇게 하려면 이전 단계에서 얻은 mysql 버전을 변경하여 다음 명령을 실행하십시오.
rbenv exec gem install mysql2 -- \
--with-mysql-lib=/opt/homebrew/Cellar/mysql/8.0.27/lib \
--with-mysql-dir=/opt/homebrew/Cellar/mysql/8.0.27 \
--with-mysql-config=/opt/homebrew/Cellar/mysql/8.0.27/bin/mysql_config \
--with-mysql-include=/opt/homebrew/Cellar/mysql/8.0.27/include
프로젝트 루트에서 "번들 설치"실행
프로젝트 루트로 이동하고 명령줄에서
bundle install
를 실행합니다.여전히 같은 오류가 발생합니까?
여전히 오류가 발생하면 아래 명령도 눌러야 합니다.
# check zstd version
$ ls /opt/homebrew/Cellar/zstd
1.5.0
$ bundle config --local build.mysql2 \
"--with-ldflags=-L/opt/homebrew/Cellar/zstd/1.5.0/lib"
프로젝트 루트 내부에서
bundle install
를 다시 실행하면 이제 오류가 사라집니다.단점
이 솔루션의 단점은 homebrew를 사용하여 mysql 버전을 업데이트할 때마다 이 명령을 실행해야 한다는 것입니다.
예를 들어 mysql 버전이 8.0.27에서 8.0.30으로 변경되면 이 오류가 다시 발생합니다. 그리고 그 경우 위의 단계를 사용하여 mysql2 gem을 별도로 다시 설치해야 합니다.
결론
이 문제에 대한 다른 해결책이 있으면 아래 의견란에 알려주십시오.
읽어 주셔서 감사합니다. 즐거운 코딩하세요!
참조
이미지 크레딧
Reference
이 문제에 관하여([해결됨] M1 Mac에 mysql2 Gem 설치 중 오류 발생), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/truemark/solved-error-while-installing-mysql2-gem-in-m1-mac-1mab텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)