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 не позволяет легко устанавливать предыдущие версии формул.
Вот как я это сделал:
- Сначала нам нужен глубокий клон Homebrew репо. Это может занять некоторое время:
git -C (brew --repo homebrew/core) fetch --unshallow
brew log icu4c
отследить коммит, который ссылается на 62.1;575eb4b
делает трюк.cd $(brew --repo homebrew/core)
git checkout 575eb4b -- Formula/icu4c.rb
brew uninstall --ignore-dependencies icu4c
brew install icu4c
Теперь у вас должна быть правильная версия зависимости! Теперь просто...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
Я на самом деле пробовал все разумные решения, упомянутые в этом посте, но все равно получаю ту же ошибку при запуске
php -v
или же
composer
. Версия узла была в порядке, npm также не было проблем с установкой правильных версий, и все они работали. Бег
reinstall php@7.1
просто выкинул ошибку. В итоге пришлось бежать:
brewreinstall icu4c
Это в основном сработало, и мне пришлось вручную устанавливать зависимости php, такие как
imagick.so
,
imap.so
Поскольку эти библиотеки были установлены для проекта, который я больше не поддерживаю, я могу обойтись без них. Но если вы действительно от них зависите, имейте в виду, что после этого будет еще много работы.
Похоже, что невозможно связать icu4c
с помощью brew
после последнего обновления OS X Что делает вещи более интересными. Единственное решение, которое я нашел для меня:
- Скачать и скомпилировать
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
- Ссылка libs:
ln -s /usr/local/icu4c/62.1/lib/*.dylib /usr/local/include/
- Задавать
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) Следующее, на удивление простое, решение помогло мне:
- Откройте в веб-браузере необработанный файл нужной вам версии: https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
- Скопируйте и вставьте содержимое в новый файл с именем: icu4c.rb
- Выполните: $ 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 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 (те же шаги для других версий), вам необходимо:
- Создайте собственное репо (или найдите репо для кого-то) с помощью этой версии пивоваренного крана (ссылки разные для каждой версии):
версия 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
- [yourUsername] / homebrew-versions / Формула /
- Поместите загруженный файл в папку Formula
brew tap [yourUsername]/homebrew-versions
brew install [yourUsername]/homebrew-versions/icu4c
- Ты понял!
Где [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