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 ответа

Я решил int, обновив все пакеты R:

      update.packages(checkBuilt = TRUE, ask = FALSE)

Ни один из этих ответов не применим к моему исправлению, на котором работал сервер разработки с узлом в репо, где он раньше работал.

Я видел, как несколько человек упоминали о переустановке узла или удалении определенных версий, но я хотел бы отметить, что вы можете попробовать переключить версию узла, используяnvm install/use <version>. Мой системный узел каким-то образом переключился, и мне помогло переключение обратно на версию 8.

Я пробовал разными способами, но на данный момент мне помог только один — отредактировать локальную формулу Brew icu4c и пересобрать ее.

Идея пришла мне в голову, открыв JSON в описании формулы.

https://github.com/Homebrew/homebrew-core/blob/8738720eadff2f4e16b49ac05067b1498d4b078e/Formula/icu4c.rb

Я увидел, что есть прямая ссылка на релиз icu4c на github.

Я изменил его на нужную версию, а затем, когда я попытался его собрать, я получил ошибку, связанную с номером sha256.

Правильный вариант предлагается прямо в консоли. скопируйте, вставьте правильный вариант в локальную формулу и попробуйте построить еще раз.

В моем случае меня попросили обновить Xcode и загрузить необходимый пакет, я просто выполнил то, что он просил, а затем в качестве последнего шага мне пришлось запустить эту команду.

      sudo xcodebuild -license accept

принять лицензию.

Вот шаги:

      brew edit icu4c

измените эти строки

      url "https://github.com/unicode-org/icu/releases/download/release-72-1/icu4c-72_1-src.tgz"
version "72.1"
sha256 "a2d2d38217092a7ed56635e34467f92f976b370e20182ad325edea6681a71d68"

с необходимой версией:

      url "https://github.com/unicode-org/icu/releases/download/release-71-1/icu4c-71_1-src.tgz"
version "71.1"
sha256 "67a7e6e51f61faf1306b6935333e13b2c48abd8da6d2f46ce6adca24b1e21ebf"

сохранить, а затем

      brew reinstall --build-from-source /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/icu4c.rb

Я просто хотел оставить подробный отчет о том, как исправить эту проблему на данный момент (у меня это сработало):

Сначала зайдите в локальную установку homebrew

cd /usr/local/Homebrew/

Homebrew> 2.5 удалите возможность установки формул непосредственно из репозиториев git, поэтому нам нужно проверить более старую версию

git checkout 2.3.0

Установите версию icu4c (в моем случае 64.2 совместим с php@7.1)

HOMEBREW_NO_AUTO_UPDATE=1 brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb

Вернуться к текущей версии homebrew

git checkout -

Скажите brew использовать старую версию icu4c таким образом, вы можете выбрать, какую версию использовать, если вы оба установили

brew switch icu4c 64.2

В моем случае мне пришлось переключаться между двумя версиями icu4c, поскольку я все еще поддерживаю проекты PHP 5.6 (которые используют старый icu4c 64.2). brew install и переустановка по необработанным ссылкам.rb всегда по какой-то причине заменяет ранее установленные версии.

#fetching 64.2
brew fetch https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb 

#fetching stable version
brew fetch https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/icu4c.rb 

cd $(brew --cache)/downloads
tar xvfz e2a83648f37dc5193016ce14fa6faeb97460258b214e805b1d7ce8956e83c1a7--icu4c-64.2.catalina.bottle.tar.gz
tar xvfz e045a709e2e21df31e66144a637f0c77dfc154f60183c89e6b04afa2fbda28ba--icu4c-67.1.catalina.bottle.tar.gz
mv -n icu4c/67.1 $(brew --cellar)/icu4c/
mv -n icu4c/64.2 $(brew --cellar)/icu4c/

затем переключаться между версиями

$ brew switch icu4c 64.2
Cleaning /usr/local/Cellar/icu4c/64.2
Cleaning /usr/local/Cellar/icu4c/67.1
Opt link created for /usr/local/Cellar/icu4c/64.2

$ brew switch icu4c 67.1
Cleaning /usr/local/Cellar/icu4c/64.2
Cleaning /usr/local/Cellar/icu4c/67.1
Opt link created for /usr/local/Cellar/icu4c/67.1

Если у вас последняя версия, и вы, как я, страдаете от хрупкого ПО и просто хотите postgres/ что бы ни работало:

      $ brew upgrade icu4c                                                                                                                           
Warning: icu4c 69.1 already installed

Затем вы можете просто создать символические ссылки:

      > dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicuuc.68.dylib

cd /usr/local/opt/icu4c/lib
ln -s libicuuc.69.1.dylib libicuuc.68.dylib
ln -s libicuio.69.1.dylib libicui18n.68.dylib

Эти символические ссылки исчезнут при первом обновлении icu4c, но это, вероятно, самый быстрый способ исправить.

Получил эту ошибку тоже после установки php 7.3. У меня было решено обновить только мои старые версии php (5.6 и 7.0, а не из официальных репозиториев).

Сопровождающие скомпилировали новые версии php для текущей версии icu4c.

В моем случае PHP 7 поднялся с 0,31 до 0,33, и проблема была решена.

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

У меня были установлены две версии PHP: 7.x(по умолчанию) и 8.x.

Произошло столкновение между PHPUnit и версией 7.x, которое мне было не особо нужно. Все, что мне нужно было сделать, это посмотреть, какие версии установлены на моем ноутбуке через Brew.

      brew list

Удалите версии PHP, которые я использовал

      brew unistalll php@7.4

и очистите каталог с установкой php:

       rm -r /opt/homebrew/etc/php/7.4

После всего этого я открыл новый сеанс терминала, и все заработало нормально.

Необходимо установить правильную версию PHP.

Это сработало для меня:

      brew install shivammathur/php/php@7.4

а потом

      brew cleanup

Ошибка возникла, когда я попытался запустить docusaurus. Вот простое решение, которое работает для меня:

      nvm use --lts

nvmдля этого требуется. Не нужно ничего переустанавливать.

В моем случае я переустанавливаю все пакеты, установленные с Homebrew

$ brew list | xargs brew reinstall

После этого я начинаю устанавливать свою версию, которая мне нужна

Я пробовал здесь много предложений, и в конце brew upgrade php это то, что помогло мне, но, похоже, проблема повсюду

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