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

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, но проблема не исчезла.

petekaner

Ответов: 34

Ответы (34)

Обновление - Как указано в некоторых комментариях, запуск brew cleanup, возможно, может исправить эту ошибку, если только это не исправит ее, вы можете попробовать обновить отдельные пакеты или все ваши пакеты brew.

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

Внимание! - Это обновит все ваши пакеты brew, включая, но не ограничиваясь, PHP. Если вы хотите обновить только определенные пакеты, обязательно укажите их.

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

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

и, наконец,

brew cleanup

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

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

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

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

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

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

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

 brew info icu4c
 brew switch icu4c 

Где версия - установленная версия, возвращаемая info

В моем случае мне пришлось переключаться между двумя версиями 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

В моем случае приготовьте обновление 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/

Просто brew remove php и brew install php не сработало, а также brew переустановить 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 )

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

https://stackoverflow.com/a/55828190/2000947 помогло установить 63.

Если у вас последняя версия icu4c, и вы, как я, страдаете от хрупкого программного обеспечения и просто хотите 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, и проблема была решена.

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

заваривать переустановить php@7.1

Добавлено 14 марта на основе комментария Райана

получите версию, которую вы используете в настоящее время, запустив php -v и получите правильные формулы (которые вы можете найти здесь: https://formulae.brew.sh/formula/php) для замены @7.1 в приведенной выше команде.

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

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

Итоговое сработало решение:

заваривать переустановить npm

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

заваривать переустановить postgres

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

заваривать базу данных postgresql-upgrade

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

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

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

Тогда просто переустановите brew с этого адреса.

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

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

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

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

ОБНОВЛЕНИЕ:

Более поздние версии Homebrew могут потребовать от вас сначала загрузить файл. В этом случае:

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

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

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

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

Я также сделал brew link --force php@7.2 для своей среды.

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

4) git checkout -B icu4c-62.1 575eb4b

6) варить переустановить Formula / icu4c.rb

Похоже, что невозможно связать 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. Ссылка на библиотеки:
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

Оказывается, мне, как и @Grey Black, пришлось установить версию 62.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 - Формула / icu4c.rb
  5. brew uninstall --ignore-dependencies icu4c
  6. brew install icu4c Теперь у вас должна быть правильная версия зависимости! А теперь просто ...
  7. git reset && git checkout. Очистите измененный рецепт.
  8. brew pin icu4c Закрепите зависимость, чтобы предотвратить ее случайное обновление в будущем

Если вы решите, что сделать хотите обновить его в какой-то момент, обязательно запустите brew unpin icu4c

В MacOS Mojave я мог исправить это только с помощью обновления пивоварни

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

brew upgrade node

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

brew uninstall node@8

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

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

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

$ brew list | xargs brew reinstall

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

Запустите версию npm, если вы видите ту же ошибку, обновите npm.

заваривать апгрейд 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

Credits

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

brew reinstall icu4c

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

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

Сначала заходим в локальную установку 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

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

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

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

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

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

brew reinstall icu4c

Then

gem uninstall charlock_holmes
gem install charlock_holmes

2021-02 Простое решение

После многих лет работы с этой проблемой у меня сработало следующее, на удивление простое решение:

  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

Последняя версия: https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/icu4c.rb

  1. Скопируйте и вставьте содержимое в новый файл с именем: icu4c.rb
  2. Выполните для вновь созданного файла следующее: brew переустановите icu4c.rb

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

Для перехода на более раннюю версию мне пришлось перекомпилировать из исходников (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

[2020] редакция

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

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

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

version 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 / Formula /
  2. Поместите загруженный файл в папку «Формула»
  3. кран [yourUsername] / homebrew-versions
  4. brew install [yourUsername] / homebrew-versions / icu4c
  5. Понятно!

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

К сожалению, последняя версия homebrew больше не выдает предупреждений и теперь отображает ошибку: Ошибка: вызов установки XXX из GitHub URL фиксации отключен! Используйте '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

2022 WebDevInsider