dyld: библиотека не загружена: /usr/local/opt/icu4c/lib/libicui18n.62.dylib ошибка при запуске php afeter при установке узла с brew на Mac

Я установил узел с помощью homebrew (Mojave), после чего php перестал работать, и если я попытаюсь запустить php -v i, получу эту ошибку:

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, но проблема остается

42 ответа

Решение

В моем случае это произошло из-за того, что icu4c был обновлён до версии 63, но мой локально установленный образ postgres всё ещё ссылался на icu4c 62.1. Поэтому мне пришлось изменить используемую версию icu4c:

 brew switch icu4c 62.1

У меня была такая же проблема, и обновление домашнего варки, а затем очистка работали на меня. Эта ошибка, вероятно, обнаружилась для меня из-за несоответствия версий пакета. Ни одно из вышеперечисленных решений не устранило мою ошибку.

brew upgrade

а потом

brew cleanup

Я на самом деле очень удивлен, что это решение еще не было представлено, и я чувствую, что это самое простое решение.

Зайдите на GitHub, найдите версию brewfile, которая соответствует версии icu4c что вам нужно, и получите сырую версию файла (перейдите по ссылкам выше и нажмите View File затем Raw).

Затем просто переустановите варев с этого URL.

Например, версия 62.1:

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

Бежать npm version и посмотреть, если вы видите ту же ошибку.

Если это так, обновите версию своего узла 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

кредиты

Оказывается, мне, как @Grey Black, пришлось фактически установить v62.1 из icu4c. Больше ничего не получалось.

Тем не мение, brew switch icu4c 62.1 работает только если вы установили 62.1 в прошлом. Если у вас нет, там больше работы. Homebrew не позволяет легко устанавливать предыдущие версии формул.

Вот как я это сделал:

  1. Сначала нам нужен глубокий клон Homebrew репо. Это может занять некоторое время: git -C (brew --repo homebrew/core) fetch --unshallow
  2. brew log icu4c отследить коммит, который ссылается на 62.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 . Очистите свой измененный рецепт.

Добавил пару дополнительных заметок, спасибо @Noah за улов

Для меня решение было:

      brew reinstall icu4c

потом

      gem uninstall charlock_holmes
gem install charlock_holmes

У меня была такая же проблема после того, как я обновил свой macOS к версии 10.13.6, Я не могу бежать composer а также php команды. Проведя некоторое время в поисках различных решений, размещенных в Интернете, переустановите php с помощью homebrew работал.

brew reinstall php

Это исправило это для меня:

brew upgrade node

Я на самом деле пробовал все разумные решения, упомянутые в этом посте, но все равно получаю ту же ошибку при запуске php -v или же composer. Версия узла была в порядке, npm также не было проблем с установкой правильных версий, и все они работали. Бег reinstall php@7.1просто выкинул ошибку. В итоге пришлось бежать:

brewreinstall icu4c

Это в основном сработало, и мне пришлось вручную устанавливать зависимости php, такие как imagick.so, imap.soПоскольку эти библиотеки были установлены для проекта, который я больше не поддерживаю, я могу обойтись без них. Но если вы действительно от них зависите, имейте в виду, что после этого будет еще много работы.

Похоже, что невозможно связать icu4c с помощью brew после последнего обновления OS X Что делает вещи более интересными. Единственное решение, которое я нашел для меня:

  1. Скачать и скомпилировать icu4c 62,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. Ссылка libs:
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

Надеюсь, это сэкономит несколько часов вашего времени.

Просто brew remove php а также brew 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 )

моя проблема:

      # npm install -g canvas

dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib
  Referenced from: /usr/local/opt/node@8/bin/node
  Reason: image not found

на данный момент 20210118, после многих попыток:

      ...
brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/icu4c.rb
brew upgrade npm
brew install node
brew uninstall --ignore-dependencies node@8 icu4c
brew install icu4c
...

Окончательно проработанное решение:

brew reinstall npm

Для меня это появилось для узла @12. И для меня сработали следующие шаги:

      brew uninstall --ignore-dependencies icu4c
brew install node

который автоматически установил icu4c и все исправил.

Для меня brew reinstall nodejs исправили это - моя проблема заключалась в запуске Elixir/Phoenix, поэтому не для PHP, я думаю, что это было вызвано brew install postgres, но переустановка не помогла. Я получал это отnpm команды.

(2021-02) Следующее, на удивление простое, решение помогло мне:

  1. Откройте в веб-браузере необработанный файл нужной вам версии: https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
  2. Скопируйте и вставьте содержимое в новый файл с именем: icu4c.rb
  3. Выполните: $ brew переустановите icu4c.rb

Источник: https://gist.github.com/hgrimelid/703691ab48c4a4d0537cfe835b4d55a6

Собственно, решение я нашел прямо на странице homebrew: https://docs.brew.sh/Common-Issues

Обновление macOS может вызвать следующие ошибки:

  • dyld: библиотека не загружена: /usr/local/opt/icu4c/lib/libicui18n.54.dylibconfigure: error: не удается найти libz
  • После обновления macOS может потребоваться переустановка инструментов командной строки Xcode и обновление всей установленной формулы:
      xcode-select --install
brew upgrade

В моем случае проблема не была связана с обновлением ОС, но решение работало нормально.

brew update && brew upgrade работал на меня

Я читал эту статью здесь, и это кажется мне недостающим кусочком головоломки:

brew uninstall node@8

Это то, что наконец сработало для меня.

brew reinstall postgres

После выполнения указанной выше команды вам может потребоваться запустить

brew postgresql-upgrade-database

для доступа к вашим предыдущим данным.

In order to downgrade, i had to recompile from source (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

Множество ответов о восстановлении отсутствующей версииicu4c. У меня была такая же ошибка, и я думаю, что это может проявляться в различных программах, которые зависят от динамического связывания этой библиотеки.

Лично я использую определенную версиюpostgresql, а именноpostgresql@12. Я обнаружил, что самым простым решением было переустановить это

      brew reinstall postgresql@12

Я думаю, это сработает дляphpтакже.

На MacOS Mojave я мог исправить это только с помощью brew upgrade

У меня были проблемы, потому что моя версия PHP (7.3) ожидала icu4c 63, а brew установит только 64.

/questions/49248642/ustanovite-versiyu-63-icu4c-s-pomoschyu-homebrew/49248654#49248654 помог мне установить 63.

Вместо того, чтобы установить старую версию icu4c что старый (предварительно скомпилированный) php может ссылаться на него, лучше перекомпилировать старый php для ссылки на более свежую библиотеку.

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

Это соберет php и свяжет его с более новой библиотекой. я нашел reinstall не совсем работал; новая установка захлебнулась, когда папка назначения уже существовала.

Я тоже сделал brew link --force php@7.2 для моего окружения.

На OSX 10.15.4 работает xcode-select --install исправил проблему для меня.

В моем случае приготовьте обновление icu4c до версии 67.1, чтобы мой php7.1 не работал. Просто переустановите icu4c, и все в порядке.

Ссылка на это: https://devhoi.com/threads/error-dyld-library-not-loaded-usr-local-opt-icu4c-lib-libicui18n-64-dylib-with-php7-1.26/

[Издание «Сделай сам», 2022 г.]

У меня работает на Mac OS 11.6.8 Big Sur.

      $ wget https://github.com/unicode-org/icu/releases/download/release-69-1/icu4c-69_1-src.tgz
$ # In Finder, copy from Downloads/ to your home directory
$ tar xzvf icu4c-69_1-src.tgz
$ cd icu/source
$ ./configure
$ make
$ make install

После этого,nodeиnpmснова работал.

Рекомендации

Решение в этом суть сделало это для меня

brew uninstall --ignore-dependencies node icu4c
brew install node

Ответ Леланда сработал для меня, но мне пришлось изменить шаги 4 и 6 на:

4) git checkout -B icu4c-62.1 575eb4b

6) заварить переустановить формулу /icu4c.rb

[2020] издание

Для меня это была установка icu4c с нужной версией.

Если вам нужно установить старую версию, например версию 62 (те же шаги для других версий), вам необходимо:

  1. Создайте собственное репо (или найдите репо для кого-то) с помощью этой версии пивоваренного крана (ссылки разные для каждой версии):

версия 62

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

версия 64

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

версия 66

https://raw.githubusercontent.com/Homebrew/homebrew-core/22fb699a417093cd1440857134c530f1e3794f7d/Formula/icu4c.rb

версия 67

https://raw.githubusercontent.com/Homebrew/homebrew-core/88b9cc789820f2f544d8d4a1053eebb044c2926c/Formula/icu4c.rb
  1. [yourUsername] / homebrew-versions / Формула /
  2. Поместите загруженный файл в папку Formula
  3. brew tap [yourUsername]/homebrew-versions
  4. brew install [yourUsername]/homebrew-versions/icu4c
  5. Ты понял!

Где [yourUsername] - это имя вашей учетной записи GitHub или человека, у которого уже есть необходимая версия.

К сожалению, последняя версия homebrew больше не выдает предупреждения и теперь отображает ошибку: Ошибка: Вызов установки XXX с URL-адреса фиксации GitHub отключен! Вместо этого используйте 'brew extract XXX' для стабильного нажатия на GitHub. Итак, путь сейчас - создать новое репо на github под названием homebrew-versions для размещения формулы в Tap. Затем инициализировать его с помощью: brew tap-new MYORG/homebrew-versions после того, как git клонирует репозиторий homebrew, как это было предложено Шайном Хью., скопируйте и вставьте необработанный файл ruby ​​в новую формулу. Остерегайтесь забавного соглашения об именах! Пример: имя файла: gettext@0.20.2.rb Имя класса: GettextAT0202 Пример:https://github.com/nedap/homebrew-versions

источник:https://itnext.io/how-to-install-an-older-brew-package-add141e58d32

Другие вопросы по тегам