본문 바로가기

Dot ./에러 모음

[Npm error] npm 실행시 icu4c 버전 오류 해결 방법 (dyld: Library not loaded)

    npm 실행시 오류 발생 ( dyid : ... /usr/local/opt/icu4c/lib/libicui18n.68.dylib ...)

    Next.js 프로젝트를 실행하려고 npm을 사용하려고 하니 다음과 같은 에러가 발생했다.

    dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.68.dylib
      Referenced from: /usr/local/bin/node
      Reason: image not found
    [1]    83641 abort      npm -v

     

    npm, icu4c 버전 충돌

    이게 뭔가하고 터미널에서 검색해보니 69.1버전이 깔려있었다. 에러로그에는 68버전을 찾는 것을 보니 다운그레이드를 해주면 될 것 같다. 

    • $ brew list icu4c

     

    brew list icu4c

     

    ICU ?

    ICU(nternational Components for Unicode)는소프트웨어 응용 프로그램에 대한 유니코드 및 세계화 지원을 제공하는 성숙하고 널리 사용되는 C/C++ 및 Java 라이브러리이다. ICU는 광범위하게 이식 가능하며 모든 플랫폼과 C/C++ 및 Java 소프트웨어 간에 동일한 결과를 애플리케이션에 제공한다. icu4c는 c/c++, icu4j는 java를 위한 라이브러리라고 한다.

     

    공식 홈페이지를 보니 ICU 69.1은 3월 18일에 업데이트 되었다고 하는데 난 언제 업데이트를 한걸까...? 리눅스나 우분투 만지면서 했거나 brew update하면서 자동으로 됐거나 둘 중 하나인 것 같다. 

     

     

    내가 사용 중인 icu4c 버전 확인

    구글링을 해보니 역시 버전과 관련된 문제였다. 구글링을 해보니 역시 버전과 관련된 문제였다. icu4c가 업데이트 되면서 npm, next 버전과 일치하지 않게 된 것이다. icu4c를 다루는 항목을 검색해보니 69.1이었다.

    • $ ll usr/local/opt/icu4c

     

    현재 사용중인 버전

     

    • $ brew list icu4c --versions

     

    설치된 가능한 버전

     

     

     

    1. 해결 방법 (node, npm 업데이트)

    만약 지금 내가 사용하는 node, npm 버전 업데이트를 안해준지 오래됐다면 한 번 업데이트 해주는 것도 괜찮은 방법이다.

    1) Hombrew를 통해 설치했을 경우

    • $ brew update
    • $ brew upgrade node
    • $ npm install -g npm

     

    2) pkg를 통해 설치했을 경우

    • $ npm install -g n
    • $ npm cache clean -f
    • $ sudo n stable

     

    2. 해결 방법 (icu4c 버전 바꾸기 69.1 → 68.2 )

    1) cd 에서 Hombrew 공식 디렉토리로 이동한다.

    • $ cd $(brew --prefix)/Homebrew/Library/Taps/homebrew/homebrew-core/Formula

     

    2) 원하는 버전으로 커밋 복사하기 (icu4c - 68.2)

    • $ git log --follow icu4c.rb

     

    원하는 버전 커밋 복사

     

     

    3) 복사한 커밋을 통해 새로운 브런치 생성 후 체크아웃

    • $ git checkout -b {원하는 브런치 이름} {해당 버전 commit id}

     

    68.2는 아래꺼 복사

    • $ git checkout -b icu4c-68.2 fdba13da61f815f5ab0789f4af72b8f9d05543a6

     

    해당 버전으로 이동

     

    4) 해당 버전으로 brew 재설치

    • $ brew reinstall ./icu4c.rb

     

     

    5) 다시 마스터로 체크아웃

    • $ git checkout master

     

    6) 적용 성공

    npm이 정상적으로 작동되는 것을 확인할 수 있다.

     

    성공

     


    참고

    https://hanxue-it.blogspot.com/2018/08/macos-homebrew-installing-older-version-of-software.html