dyld : 라이브러리가로드되지 않음 : Mac에서 brew를 사용하여 노드를 설치 한 후 PHP를 실행하는 /usr/local/opt/icu4c/lib/libicui18n.62.dylib 오류


280

homebrew (Mojave)를 사용하여 노드를 설치 한 후 PHP가 작동을 멈추고 실행하려고 php -v하면이 오류가 발생합니다.

php -v
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib
  Referenced from: /usr/local/bin/php
  Reason: image not found

노드와 icu4c를 모두 제거하려고 시도했지만 문제가 지속됩니다.


Homebrew에서 PHP를 설치하셨습니까? PHP를 다시 설치하려고 했습니까?
Ortomala Lokni

1
후손의 경우 : 원사 / 노드를 제거 / 재설치하면 트릭을 수행하는 것 같습니다.
Nathaniel 포드

12
내 이해에 따르면 버전 종속성이 일치하지 않을 때 발생합니다. 제 경우에는 "brew upgrade"명령으로 문제가 해결되었습니다. 내가 어떤 식 으로든 틀렸다면 나를 정정하십시오.
sh6210

답변:


388

참고 -이렇게하면 PHP 버전이 업그레이드됩니다.

방금이 같은 문제가있었습니다. Homebrew를 업그레이드하고 청소하는 것이 저에게 효과적이었습니다. 이 오류는 패키지 버전이 일치하지 않아 나에게 나타났습니다. 위의 해결책 중 어느 것도 내 오류를 해결하지 못했지만 다음 homebrew 명령을 실행하면 효과가 없습니다.

brew upgrade

주의 -모든 추출 패키지를 업그레이드합니다. 특정 패키지 만 업그레이드하려면 구체적이어야합니다.

brew upgrade // for upgrading all packages -- this is the command I used

brew upgrade {package} // for upgrading a specific package

그리고

brew cleanup

40
그것은 ... 쉬웠다
Alan

7
필자는 이것이 나와 같은 두 가지 버전의 PHP가있는 환경에 좋은 생각이 아니라고 생각합니다. 또한 brew upgrade는 PHP 버전을 업그레이드하며, PHP를 업그레이드하지 않고 라이브러리 오류를 해결하는 것이 목표라면 좋지 않습니다.
mpoletto

1
이것은 내가 지금까지 시도한 최고의 솔루션입니다, 선택한 답변이 작동하지 않습니다
Alleo Indong

5
나는 당신의 모든 오래된 패키지를 brew upgrade업그레이드 것이기 때문에 그렇게하지 않을 것입니다 . 대신 brew upgrade npm모든 패키지가 아닌 특정 패키지 만 업그레이드 것입니다 .
xgMz

2
@xgMz 당신이 맞습니다. 나를 위해, 나는 모든 패키지를 업데이트하고 있는지 신경 쓰지 않았지만 원하지 않는 사람에게는 좋지 않을 것입니다. 내 솔루션에 메모를 추가했습니다. 감사!
Vim Diesel

278

필자의 경우 icu4c가 버전 63으로 업그레이드되었지만 로컬에 설치된 postgres 이미지가 여전히 icu4c 62.1을 참조했기 때문에 발생했습니다. 따라서 사용 된 icu4c 버전을 변경해야했습니다.

 brew info icu4c
 brew switch icu4c <version>

version설치된 버전은 어디에서 반환됩니까?info


1
이것은 나에게도 일어난 일이며, 당신은 나를 올바른 길로 인도했습니다. 이 방법의 주요 경고는이 버전을 이전에 설치해야한다는 것입니다. 나는 내 대답에이 문제를 해결할
리 랜드

19
62.1이 설치되지 않았습니다. brew list icu4c의 파일을 표시했습니다 /usr/local/Cellar/icu4c/63.1. brew switch icu4c 63.1나를 위해 고쳤다.
Steven Ensslen

3
Postgres 로그에서이 오류를 찾은 후이 페이지를 찾았습니다. 또한 brew switch icu4c 63.1postgres를 다시 시작한 후에도 로그에 동일한 오류가 발생 했지만 시도했습니다 . 다음에 무엇을해야할지 모르겠습니다.
Andrew

27
나는 달리는 것을 끝내고 brew reinstall postgres내 문제를 해결하는 것 같았다
Andrew

1
로 전환하는 데 도움이됩니다 icu4c 61.1. 63.1-해결되지 않습니다. 62.1-찾을 수 없습니다.
Pavel Petrovich

81

실제로이 솔루션이 아직 발표되지 않았다는 사실에 놀랐으며 가장 쉬운 솔루션이라고 생각합니다.

GitHub로 이동하여 icu4c필요한 버전과 일치하는 brewfile 버전을 찾은 다음 파일의 원시 버전을 가져옵니다 (위의 링크를 클릭 View File한 다음을 클릭 Raw).

그런 다음 해당 URL에서 다시 설치하십시오.

예를 들어, version 62.1:

brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/575eb4bbef683551e19f329f60456b13a558132f/Formula/icu4c.rb

예를 들어, version 64.2:

brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb

2
당신은 생명의 은인입니다!
브래드 켄트

1
이것은 실제로 가장 좋은 솔루션 brew switch icu4c 62.1입니다. 처음에는 효과가 없습니다.
saberprashant

1
이것은 npm 수정을 시도한 후 몇 시간 동안 저에게 효과적이었습니다. 감사!
galfisher

18
잘 했어! 오류를 수정하려면 dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib이 명령으로 수정했습니다.brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
John Kary

2
icu4c 66 :brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/22fb699a417093cd1440857134c530f1e3794f7d/Formula/icu4c.rb
Magnus W

70

@Grey Black과 같이 icu4c의 v62.1을 실제로 설치해야합니다. 다른 일이 없었습니다.

그러나 brew switch icu4c 62.1이전에 62.1을 설치 한 경우에만 작동합니다. 더 많은 레그 워크가 없다면 Homebrew 를 사용하면 이전 버전의 수식을 쉽게 설치할 수 없습니다 .

내가 한 방법은 다음과 같습니다.

  1. 먼저 Homebrew 저장소의 깊은 복제본이 필요합니다. 시간이 다소 걸릴 수 있습니다.git -C $(brew --repo homebrew/core) fetch --unshallow
  2. brew log icu4c62.1을 참조하는 커밋을 추적하기 위해; 575eb4b트릭을 수행합니다.
  3. cd $(brew --repo homebrew/core)
  4. git checkout 575eb4b -- Formula/icu4c.rb
  5. brew uninstall --ignore-dependencies icu4c
  6. brew install icu4c이제 올바른 버전의 종속성이 있어야합니다! 이제는 ...
  7. git reset && git checkout . 수정 된 레시피를 정리하십시오.

내가 할 때 brew log icu4c3-4 개의 결과 만 있습니다. 62.1은 언급하지 않습니다. 위에서 사용하는 해시도 작동하지 않습니다. 그들은 62를 제거 했습니까?
노아

2
먼저 git -C (brew --repo homebrew/core) fetch --unshallow전체 맥주 깃 히스토리가 있는지 확인해야합니다.
노아

44
실 업그레이드에 대한 드라마가 너무 많습니다.
Eric Walker

4
이것은 나를 위해 일한 유일한 해결책입니다, 감사합니다! 내 경우에는 문제가 ffmpeg 패키지였으며 최신 버전의 icu4c. brew 업데이트, 업그레이드는 물론 소스에서 PHP를 다시 설치하거나 다시 연결하거나 빌드하지 않았습니다.
gedijedi

5
필자의 경우 icu4c v63이 필요했기 때문에 체크 아웃 관련 커밋은 bc0c97952453ff6afc146aa3a706e9902aba4300 입니다. 망할 놈의 명령은 git checkout bc0c97952453ff6afc146aa3a706e9902aba4300 -- Formula/icu4c.rb다음brew switch 63.1
nahuelhds

39

macOS버전으로 업그레이드 한 후에도 같은 문제가 발생했습니다 10.13.6. 나는 실행할 수 없습니다 composerphp명령. 잠시 동안 연구하고 온라인으로 게시 된 다양한 솔루션을 시도한 후 php를 다시 설치하면 homebrew효과가있었습니다.

brew reinstall php@7.1

Ryan의 의견에 따라 3 월 14 일에 추가됨

위 명령에서 대체 php -v할 올바른 수식 ( https://formulae.brew.sh/formula/php )을 실행하여 현재 사용중인 버전을 얻으십시오 @7.1.


8
나는 실행 같은 오류가있어 node업그레이드 된 맥 OS 후를 10.14.2, brew reinstall node너무 나를 위해 티켓했다
gnmerritt

brew로 새 패키지를 설치 한 후이 오류가 발생하기 시작했습니다. 하고 brew upgrade나를 위해 그것을 해결했습니다.
사무라이 잭

1
brew reinstall php현재 버전과 다른 버전을 설치하게 될 수 있습니다. 다음을 사용하여 버전을 지정해야 할 수 있습니다.php@7.1
Ryan

3
당신은 실행하여 현재 버전을 얻을 수없는 php -v당신의 PHP가 깨진 경우 : P
gingerCodeNinja

1
사실 @gingerCodeNinja, 아마도 이것이 도움이 될 것입니다 : Mac OS의 경우, 터미널로 가서 실행하십시오 echo $PATH(있는 경우 php다음과 같이 보일 것입니다 :) 이것은 /usr/local/opt/php@7.2/bin현재 사용중인 버전을 찾는 한 가지 방법입니다.
Arun Karnati

33

실행 npm version하고 동일한 오류가 표시되는지 확인하십시오.

그렇다면 npm 버전을 업그레이드하십시오 brew upgrade npm.

==> Upgrading 1 outdated package, with result:
npm 8.1.2 -> 10.3.0
==> Upgrading npm
==> Installing dependencies for node: icu4c
==> Installing node dependency: icu4c

크레딧


15

이것은 나를 위해 그것을 고쳤다 :

brew upgrade node

1
이것은 나를 위해 일했다. 나는 그것을 완전히 조사한 적이 없지만 노드를 업그레이드하는 동안 brew가 종속성을 수정했다고 생각합니다. 이것은 양조 업그레이드와 비교하여 훨씬 더 포함되어 있다고 느꼈습니다.
hendrikbeck

1
카탈리나로 전환 한 후 'brew 재설치 노드'가 도움이되었습니다
greencrest

9

그냥 brew remove phpbrew install php작동도하지 않았다 brew reinstall php. 내 해결책은 다음과 같습니다.

brew remove php
cd /usr/local/Cellar
rm -rf php/
brew install php
brew doctor
brew cleanup

이제 php -v나에게 :

PHP 7.3.2 (cli) (built: Feb 14 2019 10:08:45) ( NTS )

5

이 링크하는 것은 불가능처럼 보인다 icu4c하여 brew최신의 OS X 업데이트 후. 일이 더 재미있어집니다. 내가 나를 위해 일한 유일한 해결책은 다음과 같습니다.

  1. icu4c62.1을 다운로드하여 컴파일/usr/local/icu4c/62.1
mkdir ~/sources
cd ~/sources
wget http://download.icu-project.org/files/icu4c/62.1/icu4c-62_1-src.tgz
tar xvzf icu4c-62_1-src.tgz
cd icu/source/

sudo mkdir /usr/local/icu4c/62.1
./configure --prefix=/usr/local/icu4c/62.1
make
sudo make install
  1. 링크 라이브러리 :
ln -s /usr/local/icu4c/62.1/lib/*.dylib /usr/local/include/
  1. 설정 DYLD_LIBRARY_PATH에서 ~/.bash_profile:
export DYLD_LIBRARY_PATH=/usr/local/include

1
나는 PHP 7.1을 실행 중이며 이것이 나를 위해 유일한 일이었습니다.
WebTigers

제 경우에는 64.2 버전이 필요했기 때문에 github.com/unicode-org/icu/releases/download/release-64-2/…
RafaelQm



2

나를 brew reinstall nodejs위해이 문제를 해결했습니다. 제 문제는 Elixir / Phoenix를 실행하는 것이 었습니다 .PHP 전용이 아니기 때문에 문제가 발생한 것으로 생각 brew install postgres하지만 다시 설치해도 도움이되지 않습니다. 나는 npm명령 에서 그것을 얻고 있었다 .


2

brew update && brew upgrade 나를 위해 일했다


SO에 오신 것을 환영합니다! 당신의 협력을 환영합니다. 이 경우 15 개의 질문이 더 있으므로 귀하의 전문가를 보여줄 수있는 좋은 방법입니다.
David García Bodego

1

icu4c이전 (사전 컴파일 된) PHP가 연결할 수 있는 이전 버전을 설치하는 것 보다 최신 라이브러리에 연결하기 위해 이전 PHP를 다시 컴파일하는 것이 좋습니다.

brew uninstall php@7.2
brew install --build-from-source php@7.2

이것은 PHP를 빌드하고 최신 라이브러리에 연결합니다. 나는 reinstall제대로 작동하지 않는 것을 발견 했다. 대상 폴더가 이미 존재할 때 새 설치가 질식했습니다.

나는 또한 brew link --force php@7.2내 환경을 위해했다.


이것을 시도했지만 개선은 없었습니다. 그러나 Gray Black의 brew switch icu4c 62.1명령이 나를 위해 일했습니다.
Jamie Birch

1

Leland의 답변은 저에게 효과적이지만 4 단계와 6 단계를 다음과 같이 변경해야했습니다.

4) 자식 체크 아웃 -B icu4c-62.1 575eb4b

6) Formula / icu4c.rb를 다시 설치하십시오.


1

다운 그레이드하려면 소스에서 다시 컴파일해야했습니다 (MacOS Mojave)

$ wget https://ssl.icu-project.org/files/icu4c/62.1/icu4c-62_1-src.tgz
$ tar xvfz icu4c-62_1-src.tgz
$ cd icu/sources
$ ./configure
$ make
$ make install


1

OSX 10.15.4를 실행 xcode-select --install하면 문제가 해결되었습니다.


1

이것이 마침내 나를 위해 일한 것입니다.

brew reinstall postgres

위 명령을 실행 한 후 실행해야 할 수도 있습니다

brew postgresql-upgrade-database

이전 데이터에 액세스하십시오.


무엇보다도 시도한 후에 만 ​​이것이 나를 위해 일했습니다.
Kripalu Sar

0

PHP 7.3을 설치 한 후에도이 오류가 발생했습니다. 이전 PHP 버전 (공식 저장소가 아닌 5.6 및 7.0)의 업그레이드 만 해결했습니다.

관리자는 현재 icu4c에 대해 새로운 PHP 버전을 컴파일했습니다.

필자의 경우 PHP 7은 0.31에서 0.33으로 나타 났으며 문제가 해결되었습니다.


이것은 다른 답변으로 덮여 있지 않습니까?
JJ 투명 및 모니카

아니, 아니 한 가지 답변은 재 컴파일과 내가해야 할 일은 "업데이트"입니다.
David Fernández Rafael

비공식 저장소에서 업그레이드 한 후에도이 오류가 발생했지만 양조 업그레이드 노드에서 수정했습니다.
user3685048


-1

필자의 경우 Homebrew와 함께 설치된 모든 패키지를 다시 설치합니다.

$ brew list | xargs brew reinstall

그 후 필요한 버전을 설치하기 시작합니다.

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