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


¿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

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


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

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.

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 php@7.1

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.


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 usandophp@7.1
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/php@7.2/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


15

Esto me lo arregló:

brew upgrade node

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 )

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

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



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.


2

brew update && brew upgrade trabajó para mi


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.


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 php@7.2por mi entorno.


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


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

1

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

brew uninstall node@8



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ó.


¿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


-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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.