dyld: Biblioteca não carregada: /usr/local/opt/icu4c/lib/libicui18n.62.dylib erro ao executar o php após instalar o nó com o brew no Mac

283

Eu instalei o nó usando o homebrew (Mojave), depois o php parou de funcionar e se eu tentar executar php -v, recebo este erro:

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

Tentei desinstalar o nó e o icu4c, mas o problema persiste

petekaner
fonte
Você também instalou o php do Homebrew? Você tentou reinstalar o php?
Ortomala Lokni
1
Para a posteridade: desinstalar / reinstalar o fio / nó parece fazer o truque.
Nathaniel Ford
12
de acordo com o meu entendimento, isso acontece quando você tem incompatibilidades de versão. no meu caso, o comando "brew upgrade" corrigiu meus problemas. por favor me corrija, se eu estiver errado de alguma forma.
Sh6210 17/02/19

Respostas:

392

Nota - Isso atualizará sua versão do PHP.

Eu apenas tive esse mesmo problema. Atualizar o Homebrew e depois limpar funcionou para mim. Esse erro provavelmente apareceu para mim devido a uma incompatibilidade nas versões do pacote. Nenhuma das soluções acima resolveu meu erro, mas a execução dos seguintes comandos homebrew resolveu.

brew upgrade

Cuidado - Isso atualizará todos os seus pacotes de preparação. Se você deseja apenas atualizar pacotes específicos, certifique-se de ser específico.

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

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

e depois

brew cleanup
Vim Diesel
fonte
40
Isso era ... fácil
Alan
7
Eu acho que isso não é uma boa ideia para quem tem ambiente com duas versões do PHP como eu. Além disso, a atualização do brew atualizará sua versão do PHP e isso não será necessário se o seu objetivo não for atualizar o PHP, mas resolver um erro da biblioteca.
mpoletto
1
Esta é a melhor solução que eu tentei até agora, a resposta selecionada não funcionou
Alleo Indong
5
Eu não faria isso porque brew upgradeatualizará todos os seus pacotes desatualizados de preparação, em vez disso, provavelmente apenas o fará brew upgrade npmou um pacote específico, não todos.
XgMz 16/07/19
2
@xgMz Você está certo sobre isso. Para mim, eu não me importei se estava atualizando todos os meus pacotes, mas para alguém que não deseja, provavelmente isso não é ótimo. Eu adicionei uma nota à minha solução. Obrigado!
Vim Diesel
279

No meu caso, isso aconteceu porque o icu4c foi atualizado para a versão 63, mas minha imagem do postgres instalada localmente ainda fazia referência ao icu4c 62.1. Portanto, eu tive que mudar a versão icu4c usada:

 brew info icu4c
 brew switch icu4c <version>

Onde versionestá a versão instalada retornada porinfo

Cinzento Preto
fonte
1
Foi exatamente o que aconteceu comigo e você me colocou no caminho certo. A principal ressalva dessa abordagem é que você deve ter instalado anteriormente esta versão. Eu trabalhei em torno disso na minha resposta
Leland
19
Eu não tinha 62,1 instalado. brew list icu4cmostrou um arquivo de /usr/local/Cellar/icu4c/63.1. brew switch icu4c 63.1consertou para mim.
Steven Ensslen 28/02/19
3
Encontrei esta página depois de encontrar esse erro nos meus logs do Postgres. Eu também tentei, brew switch icu4c 63.1mas continuo recebendo o mesmo erro nos logs, mesmo depois de reiniciar o postgres. Não sei o que fazer a seguir ...
Andrew
27
Eu acabei rodando brew reinstall postgrese que parecia resolver meus problemas
Andrew
1
Ajuda a mudar para icu4c 61.1. 63.1- não resolve. 62.1- não encontrado.
Pavel Petrovich
82

Estou realmente surpreso que esta solução ainda não tenha sido apresentada e sinto que é a solução mais fácil.

Vá para o GitHub, encontre a versão do brewfile que corresponde à versão icu4cnecessária e obtenha a versão bruta do arquivo (siga os links acima e clique View Fileem Raw).

Em seguida, basta reinstalar o brew a partir desse URL.

Por exemplo, versão 62.1:

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

Por exemplo, versão 64.2:

brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
Kevin Elliott
fonte
2
Você é um salva-vidas!
Brad Kent
1
Esta é realmente a melhor solução se, brew switch icu4c 62.1em primeiro lugar , não funcionar para você.
sabreprashant
1
Essa é a única coisa que funcionou para mim depois de horas tentando consertar a NPM. Obrigado!
Galfisher
18
Trabalhou muito bem! Para corrigir o erro, dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylibeste comando o corrigiu:brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
John Kary
2
Para icu4c 66 :brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/22fb699a417093cd1440857134c530f1e3794f7d/Formula/icu4c.rb
Magnus W
70

Acontece que eu, como @Grey Black, tive que instalar a v62.1 do icu4c. Nada mais funcionou.

No entanto, brew switch icu4c 62.1só funciona se você tiver instalado 62.1 no passado. Se você não tiver, há mais trabalho braçal. O Homebrew não facilita a instalação de versões anteriores de fórmulas.

Aqui está como eu fiz isso:

  1. Primeiro precisamos de um clone profundo do repositório Homebrew. Isso pode demorar um pouco:git -C $(brew --repo homebrew/core) fetch --unshallow
  2. brew log icu4crastrear um commit que faça referência a 62.1; 575eb4bfaz o truque.
  3. cd $(brew --repo homebrew/core)
  4. git checkout 575eb4b -- Formula/icu4c.rb
  5. brew uninstall --ignore-dependencies icu4c
  6. brew install icu4cAgora você deve ter a versão correta da dependência! Agora só para ...
  7. git reset && git checkout . Limpe sua receita modificada.
Leland
fonte
Quando eu faço brew log icu4c, há apenas 3-4 resultados. Nenhuma menção 62.1. O hash que você usa acima também não funciona. Eles removeram 62?
Noé
2
Você deve fazer primeiro git -C (brew --repo homebrew/core) fetch --unshallowpara garantir que você tenha um histórico completo do git de fermentação.
Noé
44
Tanto drama para uma atualização de fios.
Eric Walker
4
Esta é a única solução que funcionou para mim, obrigado! No meu caso, o problema era o pacote ffmpeg, que, presumo, instalou a versão mais recente do icu4c. Nem atualizar, atualizar o brew funcionou, nem reinstalar, vincular novamente, criar php a partir do código-fonte.
19719
5
No meu caso, eu precisava do icu4c v63, portanto, o commit relacionado ao checkout é bc0c97952453ff6afc146aa3a706e9902aba4300 . O comando git é git checkout bc0c97952453ff6afc146aa3a706e9902aba4300 -- Formula/icu4c.rbe entãobrew switch 63.1
nahuelhds 23/04/19
39

Eu tive o mesmo problema depois de atualizar minha macOSversão 10.13.6. Eu não posso correr composere phpcomandos. Depois de pesquisar por um tempo e tentar várias soluções postadas online, reinstalar o php usando o homebrewtrabalhou.

brew reinstall [email protected]

Adicionado em 14 de março com base no comentário de Ryan

obtenha a versão que você está usando no momento executando php -ve obtenha as fórmulas corretas (que você pode encontrar aqui: https://formulae.brew.sh/formula/php ) para substituir @7.1no comando acima.

Arun Karnati
fonte
8
Eu tenho o mesmo erro em execução nodeapós MacOS adaptação às 10.14.2, brew reinstall nodefoi o bilhete para mim também
gnmerritt
Comecei a receber esse erro depois de instalar um novo pacote com o brew. Fazendo brew upgradeconsertou para mim.
samurai jack
1
brew reinstall phppode acabar instalando uma versão diferente da atual. Você pode ter que especificar a versão usando[email protected]
Ryan
3
você não pode obter a versão atual, executando php -vse o php é quebrado: p
gingerCodeNinja
1
@gingerCodeNinja é verdade, talvez isso ajude: para Mac OS, vá para o terminal e execute echo $PATH(se você tiver php, deverá ver algo assim :): /usr/local/opt/[email protected]/binesta é uma maneira de descobrir quais versões estão sendo usadas no momento.
Arun Karnati
33

Execute npm versione veja se você vê o mesmo erro.

Nesse caso, atualize sua versão do 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

Créditos

Lucas Bustamante
fonte
15

Isso corrigiu para mim:

brew upgrade node
serdarsenay
fonte
1
Isso funcionou para mim também. Eu nunca o investiguei completamente, mas acredito que o brew apenas corrigiu as dependências ao atualizar o nó. Isso parecia muito mais contido em comparação com a atualização de fermentação.
hendrikbeck
1
Parece caso semelhante,> 'bebida reinstalação nó' ajudou-me após a mudança para Catalina
Greencrest
9

Apenas brew remove phpe brew install phpnão funcionou, nem funcionou brew reinstall php. Minha solução foi fazer:

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

Agora php -vme dá:

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

Parece impossível vincular o icu4cuso brewapós a atualização mais recente do OS X. O que torna as coisas mais interessantes. A única solução que encontrei trabalhando para mim:

  1. Faça o download e compile icu4c62.1 para/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. Bibliotecas de links:
ln -s /usr/local/icu4c/62.1/lib/*.dylib /usr/local/include/
  1. Situado DYLD_LIBRARY_PATHem ~/.bash_profile:
export DYLD_LIBRARY_PATH=/usr/local/include
Serhey Dolgushev
fonte
1
Estou executando o PHP 7.1 e essa foi a única coisa que funcionou para mim.
WebTigers
No meu caso, eu precisava da versão 64.2, então baixei-a em github.com/unicode-org/icu/releases/download/release-64-2/…
RafaelQm
3

No MacOS Mojave, a única maneira de corrigir isso era com brew upgrade

Léo Maldonado
fonte
2

Eu tive problemas porque minha versão do PHP (7.3) esperava que o icu4c 63 e o brew instalassem apenas 64.

https://stackoverflow.com/a/55828190/2000947 me ajudou a instalar o 63.

Matt Rink
fonte
1
depois de procurar por um tempo, foi isso que me ajudou. Obrigado
jarchuleta 24/01
2

Para mim, brew reinstall nodejsisso foi corrigido - meu problema era com a execução do Elixir / Phoenix, portanto não era específico do PHP, acho que foi causado por brew install postgres, mas a reinstalação não ajudou. Eu estava recebendo dos npmcomandos.

Callum M
fonte
2

brew update && brew upgrade trabalhou para mim

sanjok dangol
fonte
Bem-vindo ao SO! Sua colaboração é bem vinda. Nesse caso, há mais 15 perguntas; portanto, será um bom argumento mostrar seus profissionais.
David García Bodego 4/11/19
2

Isto é o que finalmente funcionou para mim.

brew reinstall postgres

Depois de executar o comando acima, você pode precisar executar

brew postgresql-upgrade-database

para acessar seus dados anteriores.

Muzammil Baloch
fonte
Depois de tentar acima de tudo, apenas isso funcionou para mim.
Kripalu Sar
1

Em vez de instalar uma versão antiga da icu4cqual o php mais antigo (pré-compilado) possa se vincular, é melhor recompilar o php antigo para vincular à biblioteca mais recente.

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

Isso criará o php e o vinculará à biblioteca mais recente. Eu descobri reinstallque não funcionou; a nova instalação foi bloqueada quando a pasta de destino já existia.

Eu também fiz brew link --force [email protected]pelo meu ambiente.

Jerry
fonte
Tentei isso, mas nenhuma melhoria; O brew switch icu4c 62.1comando de Gray Black funcionou para mim, no entanto.
Jamie Birch
1

A resposta de Leland funcionou para mim, mas tive que alterar as etapas 4 e 6 para:

4) git checkout -B icu4c-62.1 575eb4b

6) Brew reinstalar Formula / icu4c.rb

sgrwg
fonte
1

Para fazer o downgrade, tive que recompilar da fonte (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
Smokie
fonte
1

Eu segui este artigo aqui e esta parece ser a peça que faltava para mim:

brew uninstall node@8

gmansour
fonte
1

No OSX 10.15.4, a execução xcode-select --installcorrigiu o problema para mim.

Winter Faulk
fonte
0

Também recebi esse erro após instalar o php 7.3. Eu resolvi atualizar apenas as versões antigas do meu php (5.6 e 7.0, não dos repositórios oficiais).

Os mantenedores haviam compilado novas versões php contra o icu4c atual.

No meu caso, o PHP 7 passou de 0,31 a 0,33, e o problema foi resolvido.

David Fernández Rafael
fonte
Isso não é coberto pelas outras respostas?
JJ for Transparency e Monica
OMI, não. Uma resposta fala sobre recompilar, e o que devo fazer é "atualizar".
David Fernández Rafael
Também recebi esse erro após a atualização de um repositório não oficial, mas o nó de atualização do brew o corrigiu.
user3685048
0

A solução nesta essência fez isso por mim

brew uninstall --ignore-dependencies node icu4c
brew install node
mokagio
fonte
-1

no meu caso, eu reinstalo todos os pacotes instalados com o Homebrew

$ brew list | xargs brew reinstall

Depois disso, começo a instalar minha versão que preciso

Anis Slama
fonte