[해결됨] M1 Mac에 mysql2 Gem 설치 중 오류 발생

3070 단어 railsmysql
mysql2 gem이 있는 Ruby on Rails 애플리케이션에서 mysql2 gem은 새로운 M1 Mac에서 시도할 때 항상 오류를 발생시켰습니다. 오류는 항상 "ld: -lzstd에 대한 라이브러리를 찾을 수 없음"및 "make 실패"라고 말했습니다.

오늘 이 문제를 해결해 봅시다!

가정


  • ruby에 rbenv를 사용하고 있습니다
  • .
  • 홈브류를 사용하고 있습니다
  • .

    에러 메시지



    프로젝트 내에서 번들 설치를 수행할 때마다 다음 오류가 발생했습니다.

    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을 별도로 다시 설치해야 합니다.

    결론



    이 문제에 대한 다른 해결책이 있으면 아래 의견란에 알려주십시오.

    읽어 주셔서 감사합니다. 즐거운 코딩하세요!

    참조


  • [스택 오버플로] An error occurred while installing mysql2 (0.4.8), and Bundler cannot continue
  • [깃허브] bundle install fails with Gem::Ext::BuildError

  • 이미지 크레딧


  • Rubaitul AzadUnsplash 표지 이미지
  • 좋은 웹페이지 즐겨찾기