![](/img/trans.png)
[英]php -v returns dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib
[英]dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib error running php after installing node with brew on Mac
我使用自制軟件(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 但問題仍然存在
更新 - 正如一些評論中所述,運行
brew cleanup
可能會修復此錯誤,如果單獨無法修復它,您可以嘗試升級單個包或所有 brew 包。
我剛遇到同樣的問題。 升級 Homebrew 然后清理對我有用。 由於包版本不匹配,這個錯誤可能出現在我身上。 上述解決方案都沒有解決我的錯誤,但運行以下自制命令可以解決。
注意- 這將升級所有 brew 包,包括但不限於 PHP。 如果您只想升級特定的軟件包,請確保具體。
brew upgrade icu4c
brew upgrade // or upgrade all packages
最后
brew cleanup
就我而言,這是因為 icu4c 已升級到版本 63,但我本地安裝的 postgres 映像仍然引用 icu4c 62.1。 因此我不得不更改使用的 icu4c 版本:
brew info icu4c
brew switch icu4c <version>
其中version
是info
返回的已安裝版本。
實際上我很驚訝這個解決方案還沒有被提出,我覺得它是最簡單的解決方案。
轉到 GitHub,找到與您需要的icu4c
版本匹配的 brewfile 版本並獲取文件的原始版本(按照上面的鏈接並單擊View File
然后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
事實證明,我和@Grey Black 一樣,必須實際安裝 v62.1 的 icu4c。 沒有其他工作。
但是, brew switch icu4c 62.1
僅在您過去安裝了 62.1 時才有效。 如果您還沒有,則涉及更多的跑腿工作。 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
運行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
將macOS
升級到版本10.13.6
后,我遇到了同樣的問題。 我無法運行composer
和php
命令。 在研究了一段時間並嘗試了在線發布的各種解決方案后,使用homebrew
重新安裝 php 有效。
brew reinstall php@7.1
根據 Ryan 的評論於 3 月 14 日添加
通過運行php -v
獲取您當前使用的版本並獲取正確的公式(您可以在此處找到: https://formulae.brew.sh/formula/php )以替換上述命令中的@7.1
。
這為我修復了它:
brew upgrade node
對我來說,解決方案是:
brew reinstall icu4c
然后
gem uninstall charlock_holmes
gem install charlock_holmes
似乎在最新的 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 -v
或composer
時我仍然遇到相同的錯誤。 節點版本很好,npm 也沒有安裝正確版本的問題,它們都在運行。 運行reinstall php@7.1
只是拋出了一個錯誤。 最后我不得不跑:
brew reinstall icu4c
這基本上奏效了,我必須手動安裝 php 依賴項,例如imagick.so
、 imap.so
因為這些庫是為我不再維護的項目安裝的,所以我可以不用它們。 但是,如果您確實依賴它們,請記住,之后會有更多工作要做。
只是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
經過多年處理這個問題后,以下非常簡單的解決方案對我有用:
版本 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
brew reinstall icu4c.rb
來源: https ://gist.github.com/hgrimelid/703691ab48c4a4d0537cfe835b4d55a6
實際上,我直接在自制頁面上找到了解決方案: https ://docs.brew.sh/Common-Issues
升級 macOS 可能會導致如下錯誤:
xcode-select --install
brew upgrade
就我而言,問題與升級操作系統無關,但解決方案運行良好。
對我來說brew reinstall nodejs
解決了這個問題 - 我的問題是運行 Elixir/Phoenix 所以不是 PHP 特定的,我認為這是由brew install postgres
引起的,但重新安裝並沒有幫助。 我是從npm
命令中得到它的。
為了降級,我不得不從源代碼重新編譯(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
brew update && brew upgrade
為我工作
這最終對我有用。
brew reinstall postgres
運行上述命令后,您可能需要運行
brew postgresql-upgrade-database
訪問您以前的數據。
我在這里關注了這篇文章,這對我來說似乎是缺失的一塊拼圖:
brew uninstall node@8
與其安裝舊的(預編譯的)php 可以鏈接到的舊版本的icu4c
,不如重新編譯舊的 php 以鏈接到更新的庫。
brew uninstall php@7.2
brew install --build-from-source php@7.2
這將構建 php 並將其鏈接到較新的庫。 我發現reinstall
不太奏效; 當目標文件夾已經存在時,新安裝會阻塞。
我還為我的環境做了brew link --force php@7.2
。
我遇到了問題,因為我的 PHP (7.3) 版本需要 icu4c 63,而 brew 只能安裝 64。
在 MacOS Mojave 上,我可以修復它的唯一方法是使用brew upgrade
在 OSX 10.15.4 上運行xcode-select --install
為我解決了這個問題。
Leland 的回答對我有用,但我不得不將第 4 步和第 6 步更改為:
4) git checkout -B icu4c-62.1 575eb4b
6) brew reinstall Formula/icu4c.rb
這個要點中的解決方案為我做了
brew uninstall --ignore-dependencies node icu4c
brew install node
在我的情況下,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 后也出現此錯誤。 我解決了只升級我的舊 php 版本(5.6 和 7.0,而不是來自官方存儲庫)的問題。
維護人員針對當前的 icu4c 編譯了新的 php 版本。
就我而言,PHP 7 從 0.31 到 0.33,問題就解決了。
就我而言,我不得不在兩個版本的 icu4c 之間切換,因為我仍然維護 PHP 5.6 項目(使用舊的 icu4c 64.2)。 出於某種原因,從原始 .rb 鏈接進行 brew install 和 reinstall 總是替換以前安裝的版本。
#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。
如果您需要安裝舊版本,如版本 62,(其他版本相同的步驟),您需要:
https://raw.githubusercontent.com/Homebrew/homebrew-core/575eb4bbef683551e19f329f60456b13a558132f/Formula/icu4c.rb
https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
https://raw.githubusercontent.com/Homebrew/homebrew-core/22fb699a417093cd1440857134c530f1e3794f7d/Formula/icu4c.rb
https://raw.githubusercontent.com/Homebrew/homebrew-core/88b9cc789820f2f544d8d4a1053eebb044c2926c/Formula/icu4c.rb
brew tap [yourUsername]/homebrew-versions
brew install [yourUsername]/homebrew-versions/icu4c
其中 [yourUsername] 是您的 GitHub 帳戶或已經擁有所需版本的人的名稱。
不幸的是,最新的自制軟件不再發出警告,現在顯示錯誤:錯誤:從 GitHub 提交 URL 調用安裝 XXX 已禁用! 改用“brew extract XXX”來穩定地點擊 GitHub。 所以現在要走的路是在 github 上創建一個名為 homebrew-versions 的新存儲庫,以在 Tap 中托管公式然后使用以下命令對其進行初始化: brew tap-new MYORG/homebrew-versions 按照 Shine Hugh 的建議在 git 克隆自制存儲庫后,將原始 ruby 文件復制粘貼到您的新公式中。 當心有趣的命名約定! 示例:文件名是:gettext@0.20.2.rb 類名是:GettextAT0202 示例: https ://github.com/nedap/homebrew-versions
來源: https ://itnext.io/how-to-install-an-older-brew-package-add141e58d32
我只是想詳細總結一下目前如何解決這個問題(這對我有用):
先去本地安裝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
我通過更新所有 R 包解決了 int 問題:
update.packages(checkBuilt = TRUE, ask = FALSE)
如果您擁有最新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
時,這些符號鏈接會消失,但這可能是最快的修復方法。
在 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
再次工作。
很多關於恢復icu4c
缺失版本的答案。 我在使用postgresql
時遇到了同樣的錯誤,我想這可以通過依賴於動態鏈接該庫的各種程序來體現。
對我來說,我使用的是postgresql
的特定版本,即postgresql@12
。 我發現最簡單的解決方法是重新安裝
brew reinstall postgresql@12
我想這也適用於php
。
我在這里嘗試了很多建議,最后brew upgrade php
對我來說是訣竅,但似乎問題無處不在
就我而言,我重新安裝了使用 Homebrew 安裝的所有軟件包
$ brew list | xargs brew reinstall
之后,我開始安裝我需要的版本
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.