dyld: Kütüphane yüklenmedi: /usr/local/opt/icu4c/lib/libicui18n.62.dylib Mac'te demleme ile düğüm kurduktan sonra php çalıştırılırken hata oluştu


281

Homebrew (Mojave) kullanarak düğüm yükledim, daha sonra php çalışmayı durdurdu ve çalıştırmaya çalışırsanız php -vbu hatayı alıyorum:

php -v
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib
  Referenced from: /usr/local/bin/php
  Reason: image not found

Hem düğümü hem de icu4c'yi kaldırmaya çalıştım ama sorun devam ediyor


Ayrıca Homebrew php yüklediniz mi? Php'yi yeniden yüklemeyi denediniz mi?
Ortomala Lokni

1
Posterity için: ipliği / düğümü kaldırmak / yeniden yüklemek hile yapıyor gibi görünüyor.
Nathaniel Ford

12
Anladığım kadarıyla, bu, sürüm bağımlılıklarını uyuşmazken olur. benim durumumda, "demlemek yükseltme" komutu sorunlarımı düzeltti. lütfen beni düzeltin, eğer herhangi bir şekilde yanılıyorsam.
sh6210

Yanıtlar:


389

Not - Bu, PHP sürümünüzü yükseltir.

Ben de aynı problemi yaşadım. Homebrew'u yükseltip temizlik yapmak benim için çalıştı. Bu hata, paket sürümlerindeki uyumsuzluk nedeniyle muhtemelen benim için ortaya çıktı. Yukarıdaki çözümlerin hiçbiri hatamı çözmedi, ancak aşağıdaki homebrew komutlarını çalıştırdı.

brew upgrade

Dikkat - Bu, tüm demleme paketlerinizi yükseltir. Yalnızca belirli paketleri yükseltmek istiyorsanız, spesifik olduğundan emin olun.

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

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

ve sonra

brew cleanup

40
Bu kolay ... oldu
Alan

7
Bu benim gibi PHP iki sürümü ile ortamı olanlar için iyi bir fikir olmadığını düşünüyorum. Ayrıca, demlemek yükseltme PHP sürümünüzü yükseltir ve amacınız PHP'nizi yükseltmek değil, ancak bir kütüphane hatasını çözmekse bu gerekli değildir.
mpoletto

1
Bu şimdiye kadar denediğim en iyi çözüm, seçilen cevap işe yaramadı
Alleo Indong

5
Bunu yapmazdım çünkü tüm demlemek modası geçmiş paketlerinizi brew upgradeyükseltir , bunun yerine muhtemelen sadece veya belirli bir paket, hepsi değil. brew upgrade npm
xgMz

2
@xgMz Bu konuda haklısın. Benim için, tüm paketlerimi güncelleyip güncellemediğimi umursamadım, ama istemeyen biri için, bu muhtemelen büyük değil. Çözümüme bir not ekledim. Teşekkürler!
Vim Diesel

279

Benim durumumda, icu4c sürüm 63'e yükseltildi, ancak yerel olarak yüklenen postgres resmim hala icu4c 62.1'e başvurduğu için oldu. Bu nedenle kullanılan icu4c sürümünü değiştirmek zorunda kaldı:

 brew info icu4c
 brew switch icu4c <version>

Nerede versionyüklü versiyonu ile döndürülürinfo


1
Bana da tam olarak böyle oldu ve beni doğru yola soktun. Bu yaklaşımın ana uyarısı, bu sürümü daha önce yüklemiş olmanız gerektiğidir.
Leland

19
62.1 yüklü değildi. brew list icu4cadlı kişiden bir dosya gösterdi /usr/local/Cellar/icu4c/63.1. brew switch icu4c 63.1benim için düzeltti.
Steven Ensslen

3
Bu sayfayı Postgres günlüklerimde bu hatayı bulduktan sonra buldum. Ben de denedim brew switch icu4c 63.1ama yine de postgres yeniden başlattıktan sonra günlüklerde aynı hatayı alıyorum. Bundan sonra ne yapacağından emin değilim ...
Andrew

27
Ben koştu sona erdi brew reinstall postgresve bu benim sorunları çözmek gibiydi
Andrew

1
Geçmeye yardımcı olur icu4c 61.1. 63.1- çözemiyorum. 62.1- bulunamadı.
Pavel Petrovich

82

Aslında bu çözümün henüz sunulmadığına oldukça şaşırıyorum ve bunun en kolay çözüm olduğunu hissediyorum.

GitHub'a gidin, icu4cihtiyacınız olan sürümle eşleşen brewfile sürümünü bulun ve dosyanın ham sürümünü edinin (yukarıdaki bağlantıları izleyin ve View Fileardından tıklayın Raw).

Sonra sadece o url'den demlemek demleyin.

Örneğin, sürüm 62.1:

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

Örneğin, sürüm 64.2:

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

2
Sen bir hayat kurtarıcısın!
Brad Kent

1
brew switch icu4c 62.1İlk etapta sizin için işe yaramazsa , bu aslında en iyi çözümdür .
saberprashant

1
Bu, npm'i düzeltmeye çalıştıktan sonra saatler boyunca benim için çalışan tek şeydi. Teşekkürler!
galfisher

18
Harika çalıştı! Hatayı düzeltmek için dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylibbu komut düzeltildi:brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
John Kary

2
İcu4c 66 için :brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/22fb699a417093cd1440857134c530f1e3794f7d/Formula/icu4c.rb
Magnus W

70

Görünüşe göre, @Grey Black gibi, aslında icu4c'nin v62.1'ini kurmak zorunda kaldım. Başka hiçbir şey işe yaramadı.

Ancak, brew switch icu4c 62.1yalnızca geçmişte 62.1 yüklediyseniz çalışır. Eğer daha fazla ayak işiniz yoksa. Homebrew, formüllerin önceki sürümlerini yüklemeyi kolaylaştırmaz .

İşte böyle yaptım:

  1. Öncelikle Homebrew deposunun derin bir klonuna ihtiyacımız var. Bu biraz zaman alabilir:git -C $(brew --repo homebrew/core) fetch --unshallow
  2. brew log icu4c62.1'e atıfta bulunan bir taahhüdü izlemek; 575eb4bhile yapar.
  3. cd $(brew --repo homebrew/core)
  4. git checkout 575eb4b -- Formula/icu4c.rb
  5. brew uninstall --ignore-dependencies icu4c
  6. brew install icu4cŞimdi bağımlılığın doğru sürümüne sahip olmalısınız! Şimdi sadece ...
  7. git reset && git checkout . Değiştirilmiş tarifinizi temizleyin.

Bunu yaptığımda brew log icu4csadece 3-4 sonuç var. Hiçbiri 62.1'den bahsetmez. Yukarıda kullandığınız karma da çalışmıyor. 62'yi çıkardılar mı?
Nuh

2
Önce git -C (brew --repo homebrew/core) fetch --unshallowdemlemek için tam bir geçmişe sahip olduğunuzdan emin olmalısınız.
Noah

44
İplik yükseltme için çok fazla dram.
Eric Walker

4
Benim için işe yarayan tek çözüm bu, teşekkürler! Benim durumumda sorun ffmpeg paketi, sanırım, daha yeni bir sürümünü yükledi icu4c. Ne güncelleme, demlemek yükseltme çalıştı ne de yeniden, yeniden bağlanma, php kaynağından bina.
gedijedi

5
Benim durumumda icu4c v63'e ihtiyacım vardı, bu yüzden ödeme için ilgili taahhüt bc0c97952453ff6afc146aa3a706e9902aba4300 . Git komutu git checkout bc0c97952453ff6afc146aa3a706e9902aba4300 -- Formula/icu4c.rbve sonrabrew switch 63.1
nahuelhds

39

Ben benim yükseltilmiş sonra aynı problem vardı macOSversiyonu için 10.13.6. Koşamam composerve phpkomutlar veremem . Bir süre araştırma yaptıktan ve çevrimiçi yayınlanan çeşitli çözümleri denedikten sonra php kullanarak yeniden homebrewçalıştı.

brew reinstall php@7.1

Ryan'ın yorumuna göre 14 Mart'ta eklendi

şu anda kullandığınız sürümü çalıştırarak php -valın ve yukarıdaki komutta değiştirmek için doğru formülleri (burada bulabilirsiniz: https://formulae.brew.sh/formula/php ) alın @7.1.


8
Ben çalıştıran aynı hata var nodeiçin yükseltme MacOS sonra 10.14.2, brew reinstall nodebenim için de bilet oldu
gnmerritt

Demlemek için yeni bir paket kurduktan sonra bu hatayı almaya başladım. Bunu yapmak brew upgradebenim için düzeltti.
samuray jack

1
brew reinstall phpmevcut sürüme farklı bir sürüm yüklenebilir. Sürümü kullanarak belirtmeniz gerekebilirphp@7.1
Ryan

3
php -vphp bozuk ise çalıştırarak mevcut sürümü
alamazsınız

1
@gingerCodeNinja doğru, belki de bu yardımcı olabilir: Mac OS için, terminale gidin ve çalıştırın echo $PATH(eğer varsa php, böyle bir şey görmelisiniz :) /usr/local/opt/php@7.2/binBu, hangi sürümlerin kullanıldığını bulmanın bir yoludur.
Arun Karnati

33

Çalıştırın npm versionve aynı hatayı görüp görmediğinizi görün.

Öyleyse, npm sürümünüzü yükseltin 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

Kredi


15

Bu benim için düzeltti:

brew upgrade node

1
Bu benim için de işe yaradı. Asla tam olarak araştırmadım ama demlemek düğümü yükseltirken sadece bağımlılıkları da düzelttiğine inanıyorum. Bu, demleme yükseltmesine kıyasla daha fazla yer kapladığını hissetti.
hendrikbeck

1
benzer bir durum gibi görünüyor,> 'demlemek yeniden yükleme düğümü' Catalina'ya geçtikten sonra bana yardımcı oldu
greencrest

9

Sadece brew remove phpve brew install phpişe yaramadı, ne de işe yaramadı brew reinstall php. Benim çözümüm:

brew remove php
cd /usr/local/Cellar
rm -rf php/
brew install php
brew doctor
brew cleanup

Şimdi php -vbana şunu veriyor:

PHP 7.3.2 (cli) (built: Feb 14 2019 10:08:45) ( NTS )

5

En son OS X güncellemesinden sonra icu4ckullanarak bağlantı kurmak imkansız görünüyor brew. Bu da işleri daha ilginç kılıyor. Benim için çalışırken bulduğum tek çözüm:

  1. İndirme ve icu4c62.1'i/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. Bağlantı kütüphaneleri:
ln -s /usr/local/icu4c/62.1/lib/*.dylib /usr/local/include/
  1. Set DYLD_LIBRARY_PATHiçinde ~/.bash_profile:
export DYLD_LIBRARY_PATH=/usr/local/include

1
PHP 7.1 kullanıyorum ve bu benim için çalışan tek şeydi.
WebTigers

Benim durumumda 64.2 sürümüne ihtiyacım vardı, bu yüzden github.com/unicode-org/icu/releases/download/release-64-2/… adresinden indirdim
RafaelQm



2

Benim için brew reinstall nodejsbu düzeltildi - benim sorun Elixir / Phoenix kadar PHP belirli değil çalışan, bunun neden olduğunu düşünüyorum brew install postgres, ama bu yardımcı olmadı yeniden yükleme ile oldu. npmKomutlardan alıyordum .


2

brew update && brew upgrade benim için çalıştı


SO hoş geldiniz! İşbirliğiniz memnuniyetle karşılıyor. Bu durumda, 15 soru daha var, bu yüzden Artılarınızı göstermek iyi bir nokta olacaktır.
David García Bodego

1

icu4cEski (önceden derlenmiş) php'nin bağlanabileceği eski bir sürümünü yüklemek yerine , daha yeni kütüphaneye bağlanmak için eski php'yi yeniden derlemek daha iyidir.

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

Bu php inşa edecek ve yeni kütüphaneye bağlayacaktır. Ben reinstallpek işe yaramadı buldum ; yeni yükleme, hedef klasör zaten mevcut olduğunda boğuldu.

Çevrem brew link --force php@7.2için de yaptım .


Bunu denedim ama gelişme yok; Ancak Gray Black'in brew switch icu4c 62.1emri benim için çalıştı.
Jamie Birch

1

Leland'ın yanıtı benim için çalıştı, ancak 4. ve 6. adımları değiştirmek zorunda kaldım:

4) Git Kasası -B ICU4C-62.1 575EB4B

6) demlemek yeniden Formula / icu4c.rb


1

Eski sürüme geçmek için kaynaktan yeniden derlemek zorunda kaldım (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


1

OSX 10.15.4'te çalışan xcode-select --installsorun benim için düzeltildi.


1

Sonunda benim için işe yarayan buydu.

brew reinstall postgres

Yukarıdaki komutu çalıştırdıktan sonra çalıştırmanız gerekebilir

brew postgresql-upgrade-database

önceki verilerinize erişmek için.


Her şeyden önce, sadece bu benim için çalıştı.
Kripalu Sar

0

Php 7.3 yükledikten sonra da bu hatayı aldım. Ben sadece benim eski php sürümlerini (5.6 ve 7.0, resmi depolardan değil) yükseltme çözülmüştü.

Bakımcılar mevcut icu4c'ye karşı yeni php versiyonları derlemişlerdi.

Benim durumumda, PHP 7 0.31'den 0.33'e çıktı ve sorun çözüldü.


Bu diğer cevaplar tarafından kapsanmıyor mu?
Şeffaflık için JJ ve Monica

IMO, hayır. Bir cevap yeniden derleme hakkında konuşuyor ve ne yapacağım "güncelleme" dir.
David Fernández Rafael

Ben de gayri resmi bir repo yükselttikten sonra bu hatayı aldım ama demlemek yükseltme düğüm sabit.
user3685048


-1

benim durumumda, Homebrew ile kurulan tüm paketleri yeniden yüklüyorum

$ brew list | xargs brew reinstall

Bundan sonra, ihtiyacım olan sürümü kurmaya başlıyorum

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.