Kiedy próbuję uruchomić, rails console
pojawia się ten błąd:
/Users/TuzsNewMacBook/.rvm/gems/ruby-2.3.7/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require':
dlopen(/Users/TuzsNewMacBook/.rvm/rubies/ruby-2.3.7/lib/ruby/2.3.0/x86_64-darwin18/readline.bundle, 9):
Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)
Szybkie wyszukiwanie doprowadziło mnie do tego posta i wypróbowałem kilka rzeczy:
brew reinstall postgresql
(to jest rzeczywiście DB dla tego projektu)
i
cd /usr/local/opt/readline/lib
ln libreadline.8.0.dylib libreadline.6.2.dylib
(moja wersja readline to 8)
i
brew link readline --force
Ale żaden z nich tego nie naprawił.
Niedawno dodane pry-coolline
, guard
i guard-livereload
kamienie do mojego projektu, jeśli czyni żadnej różnicy (szyny konsoli ładowane grzywny przed tym). Korzystam z najnowszych macOS.
(Aktualizacja) Używam szyn podważanych jako konsoli szyn, jeśli to robi jakąkolwiek różnicę.
Jakaś pomoc? Dzięki.
ruby-on-rails
libreadline
Jonathan Tuzman
źródło
źródło
brew reinstall readline
Odpowiedzi:
wydaje się, że błąd jest zgłaszany podczas wyszukiwania
/usr/local/opt/readline/lib/libreadline.7.dylib
.Czy próbowałeś to dowiązać symbolicznie?
Więc coś takiego:
Właśnie wypróbowałem to na macOS Mojave, Ruby 2.5.3p105 i Rails 5.2.2 i działało.
źródło
ln
nie są to rzeczy, o których właściwie nic nie wiem: /cd /usr/local/opt/readline/lib
brew link readline --force
utworzyć linki w/usr/local/opt/readline/lib
.brew link readline --force
Candland, który pracował dla mnieWydaje się, że ponowna instalacja mojej wersji Ruby rozwiązała problem:
źródło
rbenv install 2.5.1
działa dla mnie w moim kontekście. To poszło na bok po tym, jak pobiegłem,sudo xcode-select -s /Library/Developer/CommandLineTools
aby naprawić problem, którego doświadczyłem gdzie indziej. fwiwbundle install
ponownie zainstalować klejnoty z natywnymi rozszerzeniami.możesz spróbować
jesteś na dobrej drodze, ale wygląda na to, że railsy szukają libreadline.7.dylib i libreadline.7.dylib nie ma w folderze.
źródło
Tak, najlepszą odpowiedzią jest ponowna instalacja.
Możesz łatwo pobrać wersję, wpisując:
W
rbenv
przypadku polecenia jest to:z
rvm
:źródło
rbenv install <ruby-version>
nie powiodło się z konfliktem „rake” z powodu konfliktów rake z zainstalowanym plikiem wykonywalnym z konfliktu redis-rack . Musiałem biegaćrbenv uninstall <ruby-version> && rbenv install <ruby-version>
Bardzo proste rozwiązanie, które nie wymaga przebudowywania bibliotek RVM gemset OR z łączeniem symboli.
Dodaj do swojego Gemfile:
Jeśli tworzysz grupy pakietów
Następnie uruchomić
Daj mi znać, jeśli to nie zadziała.
źródło
Najczęściej w Ruby aplikacji, jest to spowodowane przez kamienie szlachetne, które mają rozszerzenia (kamienie, mówiąc: „Budowanie rodzimych rozszerzeń ..”), które zostały zbudowane przy użyciu specyficznej wersji, w tym przypadku
readline
.Zasadniczo istnieją dwa rozwiązania:
Możesz też połączyć symbolicznie wersję 8 klejnotu z brakującą wersją. To zadziała w wielu przypadkach, ale jeśli kompatybilność wsteczna zostanie zerwana, nie zadziała.
Lub, jeśli klejnot faktycznie obsługuje wersję 8, możesz ponownie zainstalować ten konkretny klejnot lub „naprawić” go, uruchamiając
gem pristine --all
.EDYCJA : W ramach twojego "tego, co próbowałem", ponowna instalacja PostgreSQL jest również jednym z plików binarnych, zbudowanych przy użyciu określonej wersji, który może również wymagać przebudowy, aby działał z biblioteką systemową, taką jak readline.
źródło
Mam ten problem:
robić...
załatwił mi sprawę dla macOS Catalina
źródło
Sprawdziłem więc tutaj kilka odpowiedzi, ale nie sądzę, że mogą działać z waniliową instalacją Mojave Mac. Używam wersji 10.14.4, podczas gdy robiłem te:
pobierz homebrew z https://brew.sh
$ brew install coreutils
: to instaluje pakiet coreutils gnu dla mac, chcemy tegogreadlink
z tego, ponieważ link readlink macOSX nie jest tym samym, co link readlink gnu. Jest to bardzo zagmatwane, ale takie jest życie w Maclandii.$ echo 'alias readlink=greadlink' >> ~/.bash_aliases
Zauważyłem, że trochę brakuje readlink w macs, więc nadpisałem istniejący readlink, aliasując greadlink. (możesz uczynić to użytecznym dla wszystkich użytkowników, dzięki$ alias readlink=greadlink >> /etc/bashrc
czemu każdy użytkownik będzie mógł z niego korzystać.$ ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
.8.
Połączyłem już połączony plik zamiast „.8.0”. plik, ponieważ gdyby został zaktualizowany,.8.1.
to mój link do odczytu nie zepsuje ani nie pominie funkcji w bibliotece. Jestem prawie pewien, że sformatujemy nasze komputery Mac, zanim wyjdzie 9+.źródło
Odradzałbym ręczne dołączanie natywnych bibliotek symbolicznych. Podobnie jak w przypadku OS X 10.4, standardowa ścieżka biblioteki dołączania
/usr/include
nie jest już używana i jest blokowana przez SIP (co utrudnia przenoszenie rzeczy).Apple dostarcza „starszego instalatora”, który umożliwia zainstalowanie nagłówków w „starej lokalizacji”, co również rozwiąże Twoją ścieżkę do prawidłowego znalezienia nagłówków zainstalowanych za pośrednictwem
brew
.Zobacz tutaj, aby uzyskać szczegółowy opis tego, co się dzieje .
źródło
libreadline.8.dylib
dolibreadline.7.dylib
których brakowało. tj. uruchom polecenie:ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
Podczas biegania mój problem był taki sam
lftp
.Samo bieganie
brew upgrade
rozwiązało mój problem, ponieważ zaktualizowało się (między innymi):źródło
Tło: zdarzyło się to, gdy próbowałem zainstalować tig, ale myślę, że jest to częsty problem, który możesz mieć, że musisz ręcznie połączyć zainstalowane oprogramowanie z właściwą ścieżką, której żąda inne oprogramowanie.
Jeśli nie możesz znaleźć readline zainstalowanego na komputerze Mac, uruchom
Po zainstalowaniu terminu, brew poprosi Cię o połączenie go. Ale w rzeczywistości nie możesz połączyć, uruchamiając
Nawet nie możesz połączyć, uruchamiając
Mac OS ostrzeże Cię, że jest to niezwykle niebezpieczne i powstrzyma Cię przed tym.
Najnowsza wersja readline to wersja 8, więc zobaczysz komunikat o błędzie, taki jak
Napar zainstalowany termin o godz
Musisz więc ręcznie połączyć go z miejscem, które chce oprogramowanie, za pomocą polecenia ls
Cieszyć się!
źródło