dyld:库未加载:/usr/local/opt/icu4c/lib/libicui18n.62.dylib 在 Mac 上使用 brew 安装节点后运行 php 错误
Posted
技术标签:
【中文标题】dyld:库未加载:/usr/local/opt/icu4c/lib/libicui18n.62.dylib 在 Mac 上使用 brew 安装节点后运行 php 错误【英文标题】:dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib error running php after installing node with brew on Mac 【发布时间】:2019-05-18 15:02:32 【问题描述】:我使用自制软件 (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
我尝试卸载 node 和 icu4c,但问题仍然存在
【问题讨论】:
您是否也从 Homebrew 安装了 php?您是否尝试重新安装 php? 对于后代:卸载/重新安装 yarn/node 似乎可以解决问题。 据我了解,当您的版本依赖项不匹配时会发生这种情况。就我而言,“brew upgrade”命令解决了我的问题。请纠正我,如果我有任何错误。 当我得到这个时,问题是/usr/local/opt/icu4c
不存在,brew reinstall icu4c
给了我一堆 icu4c 目录的“权限被拒绝”问题。所以我sudo rm -rf /usr/local/Cellar/icu4c
和brew reinstall icu4c
,一切正常。
我遇到了一个奇怪的情况(在过时的机器上使用 High Sierra),但这发生在我将 PHP 更新到 7.2(或尝试更新)之后。我的解决方案是从下载中重新安装节点。我发现,一旦你超出了 Apple 支持的 MacOS 范围,Homebrew 就不可靠了。
【参考方案1】:
对我来说,解决方案是:
brew reinstall icu4c
然后
gem uninstall charlock_holmes
gem install charlock_holmes
【讨论】:
在这里工作得很好。【参考方案2】:如果你有最新的icu4c
版本并且像我一样遭受脆弱软件的困扰,只想让postgres
/whatever 工作:
$ 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
时消失,但这可能是最快的修复方法。
【讨论】:
【参考方案3】:2021-02轻松解决
经过多年处理这个问题后,以下解决方案非常简单,对我有用:
-
在您需要的版本的网络浏览器中打开原始文件:
版本 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
-
将内容复制粘贴到一个名为:
icu4c.rb
在新创建的文件上运行以下命令:
brew reinstall icu4c.rb
来源:https://gist.github.com/hgrimelid/703691ab48c4a4d0537cfe835b4d55a6
【讨论】:
我找到了一组类似的指令,但它需要编译源代码:programmersought.com/article/34721476513,这对我有用。【参考方案4】:其实我很惊讶这个解决方案还没有出现,我觉得这是最简单的解决方案。
转到 GitHub,找到与您需要的 icu4c
版本匹配的 brewfile 版本并获取文件的原始版本(按照上面的链接并单击 View File
然后单击 Raw
)。
然后只需从该 url 重新安装 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
【讨论】:
你是救生员! 效果很好!要修复错误dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib
,此命令修复它:brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
对于 icu4c 66:brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/22fb699a417093cd1440857134c530f1e3794f7d/Formula/icu4c.rb
这不再起作用了。它要求您brew extract
@brunouno 您需要下载 .rb 文件并执行:brew reinstall icu4c.rb
【参考方案5】:
其实我直接在自制页面上找到了解决方案:https://docs.brew.sh/Common-Issues
升级 macOS 可能会导致如下错误:
dyld:库未加载:/usr/local/opt/icu4c/lib/libicui18n.54.dylib 配置:错误:找不到 libz 在 macOS 升级后,可能需要重新安装 Xcode 命令行工具并 brew upgrade 所有已安装的公式:xcode-select --install
brew upgrade
在我的情况下,问题与升级操作系统无关,但解决方案运行良好。
【讨论】:
升级到 mac OS 11.6 Big Sur 后,这对我有用。谢谢!【参考方案6】:我通过更新所有 R 包解决了 int:
update.packages(checkBuilt = TRUE, ask = FALSE)
【讨论】:
【参考方案7】:我的问题:
# 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
【讨论】:
brew reinstall npm
命令解决了我的问题【参考方案8】:
我只是想详细说明当前如何解决此问题(这对我有用):
先去本地安装homebrew
cd /usr/local/Homebrew/
Homebrew > 2.5 删除了直接从 git repos 安装公式的选项,因此我们需要检查旧版本
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
回到当前版本的自制软件
git checkout -
这样告诉 brew 使用旧版本的 icu4c,如果你都安装了,你可以选择使用哪个版本
brew switch icu4c 64.2
【讨论】:
【参考方案9】:更新 - 如某些 cmets 所述,运行
brew cleanup
可能会修复此错误,如果仅此一项无法修复,您可以尝试升级单个包或所有 brew 包。
我也遇到了同样的问题。升级 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
【讨论】:
那是......简单 我认为这对于像我这样拥有两个 PHP 版本的环境的人来说不是一个好主意。此外, brew upgrade 将升级您的 PHP 版本,如果您的目标不是升级您的 PHP 而是解决库错误,这并不是必需的。 这是迄今为止我尝试过的最佳解决方案,所选答案无效 我不会这样做,因为brew upgrade
将升级所有您的 brew 过时软件包,相反,可能只升级 brew upgrade npm
或特定软件包,而不是全部。
@xgMz 你说得对。对我来说,我不在乎我是否更新了所有的包,但对于不想更新的人来说,那可能不是很好。我在我的解决方案中添加了一条注释。谢谢!【参考方案10】:
我实际上尝试了本文中提到的所有有意义的解决方案,但在运行 php -v
或 composer
时仍然遇到相同的错误。
节点版本很好,npm 也没有安装正确版本的问题,它们都在运行。
运行reinstall php@7.1
只是抛出了一个错误。
最后我不得不跑:
brew reinstall icu4c
这基本上奏效了,我必须手动安装 php 依赖项,例如 imagick.so
、imap.so
由于这些库是为我不再维护的项目安装的,因此我可以不用它们。但是,如果您确实依赖它们,请记住,之后会有更多工作要做。
【讨论】:
这对我有用!npm install
在上周我的工作 macbook force 更新到 Catalina 后无法正常工作。最初在这里找到:gist.github.com/berkedel/d1fc6d13651c16002f64653096d1fded【参考方案11】:
我关注了这篇文章here,这对我来说似乎是缺失的一块:
brew uninstall node@8
【讨论】:
在尝试了不同形式的每个建议后,我的错误在使用后停止了,但现在我们在重新安装节点后遇到了关于 npm 的问题 接受的答案对我不起作用。对我有用的是这个答案的变体:brew remove node && brew install node
【参考方案12】:
[2020] 版
对我来说,它是安装具有所需版本的 icu4c。
如果您需要安装62版等旧版本,(其他版本步骤相同),您需要:
-
使用此版本的
brew tap(每个版本的链接都不同):
版本 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
-
[您的用户名]/homebrew-versions/Formula/
将下载的文件放到“公式”文件夹中
brew tap [yourUsername]/homebrew-versions
brew install [yourUsername]/homebrew-versions/icu4c
你明白了!
其中 [yourUsername] 是您的 GitHub 帐户或已经拥有所需版本的人的名称。
不幸的是,最新的自制程序不再发出警告,现在 显示错误:错误:从 GitHub 调用安装 XXX 提交 URL 已禁用!使用 'brew extract XXX' 在 GitHub 上稳定点击 反而。所以现在要走的路是在github上创建一个新的repo,叫做 homebrew-versions 在水龙头中托管公式然后初始化它 与: git 克隆后 brew tap-new MYORG/homebrew-versions 按照 Shine Hugh 的建议,自制 repo,复制粘贴原始 ruby 文件 到你的新公式。当心有趣的命名约定!示例:文件 名称为:gettext@0.20.2.rb 类名称为:GettextAT0202 示例: https://github.com/nedap/homebrew-versions
来源:https://itnext.io/how-to-install-an-older-brew-package-add141e58d32
【讨论】:
如果遇到错误,请尝试从源安装://1.下载文件(例如 67) wget raw.githubusercontent.com/Homebrew/homebrew-core/… //2.在文件'cat icu4c.rb'//3中找到存档链接。从***.com/a/55024755/3126078等源下载存档并安装【参考方案13】:运行npm version
,如果你看到同样的错误,升级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
Credits
【讨论】:
完全按照你说的那样工作。npm version
引发了同样的错误,升级 npm 修复了它。谢谢!【参考方案14】:
就我而言,我不得不在两个版本的 icu4c 之间切换,因为我仍然维护 PHP 5.6 项目(使用旧的 icu4c 64.2)。出于某种原因,从原始 .rb 链接进行 brew install 和重新安装总是会替换以前安装的版本。
#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
【讨论】:
【参考方案15】:事实证明,我和@Grey Black 一样,必须实际安装 v62.1 的 icu4c。没有其他工作。
但是,brew switch icu4c 62.1
仅在您过去安装了 62.1 时才有效。如果您还没有,则涉及更多的跑腿工作。 Homebrew 执行 not make it easy to install 以前版本的公式。
我是这样做的:
-
我们首先需要对 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 .
清理您修改后的配方。
brew pin icu4c
固定依赖,防止以后意外升级
如果您决定确实想在某个时候升级它,请确保运行brew unpin icu4c
【讨论】:
您应该首先使用git -C (brew --repo homebrew/core) fetch --unshallow
以确保您拥有完整的 brew git 历史记录。
纱线升级有这么多戏剧性。
这是唯一对我有用的解决方案,谢谢!就我而言,问题是 ffmpeg 包,我假设它安装了较新版本的icu4c
。更新、升级 brew 以及重新安装、重新链接、从源代码构建 php 都不起作用。
在我的情况下,我需要 icu4c v63,因此结帐的相关提交是 bc0c97952453ff6afc146aa3a706e9902aba4300。 git 命令是git checkout bc0c97952453ff6afc146aa3a706e9902aba4300 -- Formula/icu4c.rb
,然后是brew switch 63.1
当我尝试使用github.com/Homebrew/homebrew-core/commit/… 获取版本67.1
时,这导致==> Downloading https://ghcr.io/v2/homebrew/core/icu4c/manifests/67.1 #=#=-# # curl: (22) The requested URL returned error: 404 Error: Failed to download resource "icu4c_bottle_manifest" Download failed: https://ghcr.io/v2/homebrew/core/icu4c/manifests/67.1
。【参考方案16】:
我在这里尝试了很多建议,最后brew upgrade php
对我有用,但似乎问题无处不在
【讨论】:
【参考方案17】:在我的情况下,brew update 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/
【讨论】:
我只是重新安装了 php 7.3,这是坏掉的,它也修复了它。不过,本指南为我指明了正确的方向。【参考方案18】:this gist 中的解决方案帮我解决了
brew uninstall --ignore-dependencies node icu4c
brew install node
【讨论】:
【参考方案19】:这最终对我有用。
brew reinstall postgres
运行上述命令后,您可能需要运行
brew postgresql-upgrade-database
访问您以前的数据。
【讨论】:
【参考方案20】:就我而言,我重新安装了使用 Homebrew 安装的所有软件包
$ brew list | xargs brew reinstall
之后,我开始安装我需要的版本
【讨论】:
【参考方案21】:在运行 xcode-select --install
的 OSX 10.15.4 上为我解决了这个问题。
【讨论】:
【参考方案22】:brew update && brew upgrade
为我工作
【讨论】:
欢迎来到 SO!欢迎您的合作。在这种情况下,还有 15 个问题,因此最好展示一下您的优点。【参考方案23】:对我来说,brew reinstall nodejs
解决了这个问题 - 我的问题是运行 Elixir/Phoenix,所以不是 PHP 特定的,我认为这是由 brew install postgres
引起的,但重新安装并没有帮助。我是从npm
命令获得的。
【讨论】:
【参考方案24】:在最新的 OS X 更新后,似乎无法使用 brew
链接 icu4c
。这让事情变得更有趣。我发现对我有用的唯一解决方案:
-
下载并编译
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
-
链接库:
ln -s /usr/local/icu4c/62.1/lib/*.dylib /usr/local/include/
-
在
~/.bash_profile
中设置DYLD_LIBRARY_PATH
:
export DYLD_LIBRARY_PATH=/usr/local/include
【讨论】:
我正在运行 PHP 7.1,这是唯一对我有用的东西。 就我而言,我需要 64.2 版本,所以我从 github.com/unicode-org/icu/releases/download/release-64-2/… 下载了它 更新到 OS Big Sur 后,icu4c 67 不见了,尝试了各种解决方案,但这是唯一有效的解决方案。从github.com/unicode-org/icu/releases/download/release-67-1/… 下载。谢谢! 此内容已移至此处:github.com/unicode-org/icu/releases/download/release-62-2/…【参考方案25】:在 MacOS Mojave 上,我可以修复它的唯一方法是使用 brew upgrade
【讨论】:
【参考方案26】:这为我解决了问题:
brew upgrade node
【讨论】:
这对我也有用。我从未完全调查过它,但我相信 brew 在升级节点时也修复了依赖项。与 brew upgrade 相比,这感觉要包含更多内容。 似乎类似的情况,> 'brew reinstall node' 在切换到 Catalina 后确实帮助了我 奇怪的是,这个/icu4c/lib/libicui18n.66.dylib
错误是在我运行rspec的时候突然出现的。我隐藏了一些代码更改,但仍然出现错误。升级节点解决了问题!谢谢!
谢谢 :) 我正要尝试其他解决方案 - 但这立即解决了我的问题。【参考方案27】:
为了降级,我不得不从源代码(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
【讨论】:
【参考方案28】:我遇到了问题,因为我的 PHP (7.3) 版本需要 icu4c 63,而 brew 只能安装 64。
https://***.com/a/55828190/2000947帮我安装了63。
【讨论】:
搜索了一段时间后,这对我有帮助。谢谢【参考方案29】:就我而言,这是因为 icu4c 已升级到 63 版,但我本地安装的 postgres 映像仍然引用 icu4c 62.1。因此我不得不更改使用的 icu4c 版本:
brew info icu4c
brew switch icu4c <version>
其中version
是info
返回的安装版本
【讨论】:
这正是发生在我身上的事情,你让我走上了正轨。这种方法的主要警告是您必须以前安装过这个版本。我在回答中解决了这个问题 我没有安装 62.1。brew list icu4c
显示了来自 /usr/local/Cellar/icu4c/63.1
的文件。 brew switch icu4c 63.1
为我修好了。
在我的 Postgres 日志中发现此错误后,我找到了此页面。我也尝试了brew switch icu4c 63.1
,但在日志中仍然出现同样的错误,即使在重新启动 postgres 之后也是如此。不知道下一步该做什么......
我最终运行了brew reinstall postgres
,这似乎解决了我的问题
不幸的是 brew 开关不再可用。【参考方案30】:
安装 php 7.3 后也出现此错误。我解决了只升级我的旧 php 版本(5.6 和 7.0,不是来自官方 repos)的问题。
维护人员已经针对当前的 icu4c 编译了新的 php 版本。
就我而言,PHP 7 从 0.31 到 0.33,问题就解决了。
【讨论】:
其他答案没有涵盖吗? 国际海事组织,没有。一个答案是关于重新编译,而我要做的是“更新”。 我从非官方仓库升级后也遇到了这个错误,但是 brew upgrade node 修复了它。以上是关于dyld:库未加载:/usr/local/opt/icu4c/lib/libicui18n.62.dylib 在 Mac 上使用 brew 安装节点后运行 php 错误的主要内容,如果未能解决你的问题,请参考以下文章
php -v 返回 dyld:库未加载:/usr/local/opt/readline/lib/libreadline.7.dylib
dyld:库未加载:/usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib、php-fpm、php5.6
dyld:库未加载:VSCode终端中的/usr/local/opt/icu4c/lib/libicui18n.63.dylib
dyld:库未加载:/usr/local/opt/icu4c/lib/libicui18n.62.dylib 在 Mac 上使用 brew 安装节点后运行 php 错误