dyld: Biblioteca no cargada: /usr/local/opt/icu4c/lib/libicui18n.62.dylib error al ejecutar php después de instalar el nodo con brew en Mac

284

Instalé el nodo usando homebrew (Mojave), luego php dejó de funcionar y si intento ejecutar php -vme sale este error:

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

Traté de desinstalar tanto el nodo como icu4c pero el problema persiste

petekaner
fuente
¿También instaló php de Homebrew? ¿Intentaste reinstalar php?
Ortomala Lokni
1
Para la posteridad: desinstalar / reinstalar hilo / nodo parece hacer el truco.
Nathaniel Ford
12
Según tengo entendido, esto sucede cuando no coinciden las dependencias de la versión. en mi caso, el comando "brew upgrade" solucionó mis problemas. corrígeme, si estoy equivocado de alguna manera.
sh6210

Respuestas:

393

Nota : Esto actualizará su versión de PHP.

Acabo de tener este mismo problema. Actualizar Homebrew y luego limpiar me funcionó. Este error probablemente apareció por mí debido a una falta de coincidencia en las versiones del paquete. Ninguna de las soluciones anteriores resolvió mi error, pero al ejecutar los siguientes comandos homebrew sí.

brew upgrade

Precaución : esto actualizará todos sus paquetes de café. Si solo desea actualizar paquetes específicos, asegúrese de ser específico.

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

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

y entonces

brew cleanup
Vim Diesel
fuente
40
Eso fue ... fácil
Alan
77
Creo que esta no es una buena idea para aquellos que tienen un entorno con dos versiones de PHP como yo. Además, la actualización brew actualizará su versión de PHP y esto no es necesariamente bueno si su objetivo no es actualizar su PHP, sino resolver un error de biblioteca.
mpoletto
1
Esta es la mejor solución que he probado hasta ahora, la respuesta seleccionada no funcionó
Alleo Indong
55
No haría esto porque brew upgradeactualizará todos sus paquetes anticuados, en cambio, probablemente solo lo haga brew upgrade npmo un paquete específico, no todos.
xgMz
2
@xgMz Tienes razón sobre esto. Para mí, no me importaba si estaba actualizando todos mis paquetes, pero para alguien que no quiere, eso probablemente no sea genial. Agregué una nota a mi solución. ¡Gracias!
Vim Diesel
279

En mi caso, eso sucedió porque icu4c se actualizó a la versión 63 pero mi imagen de postgres instalada localmente todavía hacía referencia a icu4c 62.1. Por lo tanto, tuve que cambiar la versión icu4c utilizada:

 brew info icu4c
 brew switch icu4c <version>

¿Dónde versionestá la versión instalada devuelta porinfo

Gris negro
fuente
1
Esto es exactamente lo que me pasó a mí también, y me pusiste en el camino correcto. La advertencia principal de este enfoque es que debe haber instalado previamente esta versión. Trabajé alrededor de esto en mi respuesta
Leland el
19
No tenía 62.1 instalado. brew list icu4cmostró un archivo de /usr/local/Cellar/icu4c/63.1. brew switch icu4c 63.1me lo arregló
Steven Ensslen
3
Encontré esta página después de encontrar este error en mis registros de Postgres. También intenté, brew switch icu4c 63.1pero aún obtengo el mismo error en los registros, incluso después de reiniciar postgres. No estoy seguro de qué hacer a continuación ...
Andrew
27
Terminé corriendo brew reinstall postgresy eso pareció resolver mis problemas
Andrew
1
Ayuda a cambiar a icu4c 61.1. 63.1- no resolver. 62.1- extraviado.
Pavel Petrovich
82

De hecho, estoy bastante sorprendido de que esta solución aún no se haya presentado, y creo que es la solución más fácil.

Ir a GitHub, encontrar la versión del brewfile que coincide con la versión de icu4cque es necesario y obtener la versión cruda del archivo (siga los enlaces de arriba y haga clic View Filea continuación Raw).

Luego solo tiene que volver a instalar brew desde esa url.

Por ejemplo, versión 62.1:

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

Por ejemplo, versión 64.2:

brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
Kevin Elliott
fuente
2
¡eres un salvavidas!
Brad Kent
1
Esta es realmente la mejor solución si, brew switch icu4c 62.1en primer lugar , no funciona para usted.
saberprashant
1
Esto es lo único que me funcionó después de horas de intentar arreglar npm. ¡Gracias!
galfisher
18
Funcionó genial! Para corregir el error, dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylibeste comando lo solucionó: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

Resulta que yo, como @Grey Black, tuve que instalar realmente la v62.1 de icu4c. Nada más funcionó.

Sin embargo, brew switch icu4c 62.1solo funciona si ha instalado 62.1 en el pasado. Si no lo has hecho, hay más trabajo de campo involucrado. Homebrew no facilita la instalación de versiones anteriores de fórmulas.

Así es como lo hice:

  1. Primero necesitamos un clon profundo del repositorio Homebrew. Esto puede tardar un rato:git -C $(brew --repo homebrew/core) fetch --unshallow
  2. brew log icu4crastrear un commit que hace referencia a 62.1; 575eb4bHace el truco.
  3. cd $(brew --repo homebrew/core)
  4. git checkout 575eb4b -- Formula/icu4c.rb
  5. brew uninstall --ignore-dependencies icu4c
  6. brew install icu4c¡Ahora debería tener la versión correcta de la dependencia! Ahora solo para ...
  7. git reset && git checkout . Limpia tu receta modificada.
Leland
fuente
Cuando lo hago brew log icu4c, solo hay 3-4 resultados. Ninguno menciona 62.1. El hash que usas arriba tampoco funciona. ¿Han eliminado 62?
Noah
2
Primero debe hacer git -C (brew --repo homebrew/core) fetch --unshallowpara asegurarse de tener un historial completo de preparación de git.
Noah
44
Tanto drama para una actualización de hilo.
Eric Walker
44
Esta es la única solución que funcionó para mí, ¡gracias! En mi caso, el problema era el paquete ffmpeg que, supongo, instaló una versión más nueva de icu4c. Ni la actualización, la actualización funcionó, ni la reinstalación, la vinculación, la creación de php desde la fuente.
gedijedi
55
En mi caso, he necesitado icu4c v63, por lo que el compromiso relacionado con el pago es bc0c97952453ff6afc146aa3a706e9902aba4300 . El comando git es git checkout bc0c97952453ff6afc146aa3a706e9902aba4300 -- Formula/icu4c.rby luegobrew switch 63.1
nahuelhds
39

Tuve el mismo problema después de actualizar mi macOSversión 10.13.6. No puedo correr composery phpcomandos. Después de investigar por un tiempo y probar varias soluciones publicadas en línea, reinstalar php usando homebrewtrabajado.

brew reinstall [email protected]

Agregado el 14 de marzo basado en el comentario de Ryan

obtenga la versión que está utilizando actualmente ejecutando php -vy obtenga las fórmulas correctas (que puede encontrar aquí: https://formulae.brew.sh/formula/php ) para reemplazar @7.1en el comando anterior.

Arun Karnati
fuente
8
Obtuve el mismo error nodedespués de actualizar macOS 10.14.2, brew reinstall nodefue el boleto para mí también
gnmerritt
Comencé a recibir este error después de instalar un nuevo paquete con brew. Hacer lo brew upgradearregló para mí.
Jack de samurai el
1
brew reinstall phppuede terminar instalando una versión diferente a la actual. Puede que tenga que especificar la versión usando[email protected]
Ryan
3
no puede obtener la versión actual ejecutando php -vsi su php está roto: p
gingerCodeNinja
1
@gingerCodeNinja es cierto, tal vez esto podría ayudar: para Mac OS, vaya a la terminal y ejecute echo $PATH(si tiene php, debería ver algo como esto /usr/local/opt/[email protected]/bin) : esta es una forma de averiguar qué versiones se están utilizando actualmente.
Arun Karnati
34

Ejecute npm versiony vea si ve el mismo error.

Si es así, actualice su versión 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
fuente
15

Esto me lo arregló:

brew upgrade node
serdarsenay
fuente
1
Esto funcionó para mí también. Nunca lo investigué completamente, pero creo que brew también solucionó las dependencias al actualizar el nodo. Esto se sintió mucho más contenido en comparación con la actualización de preparación.
hendrikbeck
1
parece un caso similar,> 'brew reinstall node' me ayudó después de cambiar a Catalina
greencrest
9

Justo brew remove phpy brew install phpno funcionó, ni lo hizo brew reinstall php. Mi solución fue hacer:

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

Ahora php -vme da:

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

Parece que es imposible vincular icu4cusando brewdespués de la última actualización de OS X. Lo que hace las cosas más interesantes. La única solución que encontré trabajando para mí:

  1. Descargue y compile icu4c62.1 a/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. Enlace libs:
ln -s /usr/local/icu4c/62.1/lib/*.dylib /usr/local/include/
  1. Establecer DYLD_LIBRARY_PATHen ~/.bash_profile:
export DYLD_LIBRARY_PATH=/usr/local/include
Serhey Dolgushev
fuente
1
Estoy ejecutando PHP 7.1 y esto fue lo único que funcionó para mí.
WebTigers
En mi caso, necesitaba la versión 64.2, así que la descargué de github.com/unicode-org/icu/releases/download/release-64-2/…
RafaelQm
3

En MacOS Mojave, la única forma en que pude arreglarlo fue con brew upgrade

Léo Maldonado
fuente
2

Tuve problemas porque mi versión de PHP (7.3) esperaba icu4c 63 y brew solo instalaría 64.

https://stackoverflow.com/a/55828190/2000947 me ayudó a instalar 63.

Pista de Matt
fuente
1
después de buscar por un tiempo, esto es lo que me ayudó. Gracias
jarchuleta
2

Para mí brew reinstall nodejssolucioné esto: mi problema era ejecutar Elixir / Phoenix, así que no era específico de PHP, creo que fue causado por brew install postgres, pero reinstalar eso no ayudó. Lo estaba obteniendo de los npmcomandos.

Callum M
fuente
2

brew update && brew upgrade trabajó para mi

sanjok dangol
fuente
Bienvenido a SO! Tu colaboración es bienvenida. En este caso, hay 15 preguntas más, por lo que será un buen punto mostrar las ventajas de los suyos.
David García Bodego
2

Esto es lo que finalmente funcionó para mí.

brew reinstall postgres

Después de ejecutar el comando anterior, es posible que deba ejecutar

brew postgresql-upgrade-database

para acceder a sus datos anteriores.

Muzammil Baloch
fuente
Después de intentar sobre todo, solo esto funcionó para mí.
Kripalu Sar
1

En lugar de instalar una versión anterior de la icu4cque puede vincular el php anterior (precompilado), es mejor recompilar el php antiguo para vincularlo a la biblioteca más reciente.

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

Esto generará php y lo vinculará a la biblioteca más nueva. Descubrí reinstallque no funcionaba del todo; la nueva instalación se bloqueó cuando la carpeta de destino ya existía.

También lo hice brew link --force [email protected]por mi entorno.

alemán
fuente
Intenté esto pero no mejora; brew switch icu4c 62.1Sin embargo, el comando de Gray Black funcionó para mí.
Jamie Birch
1

La respuesta de Leland funcionó para mí, pero tuve que cambiar los pasos 4 y 6 para:

4) git checkout -B icu4c-62.1 575eb4b

6) preparar reinstalar Formula / icu4c.rb

sgrwg
fuente
1

Para degradar, tuve que volver a compilar desde la fuente (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
fuente
1

Seguí este artículo aquí y esta parece ser la pieza faltante del rompecabezas para mí:

brew uninstall node@8

gmansour
fuente
1

En OSX 10.15.4 en ejecución xcode-select --installsolucionó el problema para mí.

Faulk de invierno
fuente
0

También obtuve este error después de instalar php 7.3. Lo resolví actualizando solo las versiones anteriores de mi php (5.6 y 7.0, no desde los repositorios oficiales).

Los mantenedores habían compilado nuevas versiones de php contra el icu4c actual.

En mi caso, PHP 7 pasó de 0,31 a 0,33, y el problema se resolvió.

David Fernández Rafael
fuente
¿No está esto cubierto por las otras respuestas?
JJ por Transparencia y Monica
OMI, no. Una respuesta habla sobre recompilar, y lo que tengo que hacer es "actualizar".
David Fernández Rafael
También recibí este error después de actualizar desde un repositorio no oficial, pero el nodo de actualización de brew lo solucionó.
user3685048
0

La solución en esta esencia lo hizo por mí

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

en mi caso, reinstalo todos los paquetes instalados con Homebrew

$ brew list | xargs brew reinstall

Después de eso, empiezo a instalar mi versión que necesito

Anis Slama
fuente