Когда я пытаюсь запустить, rails console
я получаю эту ошибку:
/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)
Быстрый поиск привел меня к этому сообщению, и я попробовал несколько вещей:
brew reinstall postgresql
(это действительно БД для этого проекта)
и
cd /usr/local/opt/readline/lib
ln libreadline.8.0.dylib libreadline.6.2.dylib
(моя версия строки чтения - 8)
и
brew link readline --force
Но ни один из них не исправил это.
Недавно я добавил pry-coolline
, guard
и guard-livereload
драгоценные камни в мой проект , если это делает никакой разницы (рельсы консоли загружен штраф перед теми). Я использую последнюю версию macos.
(Обновление) Я использую направляющие в качестве консоли для направляющих, если это имеет значение.
Любая помощь? Спасибо.
ruby-on-rails
libreadline
Джонатан Тузман
источник
источник
brew reinstall readline
Ответы:
ошибка, кажется, выдается при поиске
/usr/local/opt/readline/lib/libreadline.7.dylib
.Вы пробовали создать символическую ссылку?
Так что-то вроде:
Просто попробовал это на macOS Mojave, ruby 2.5.3p105 и Rails 5.2.2 и работал.
источник
ln
не являются тем, о чем я на самом деле ничего знаю: /cd /usr/local/opt/readline/lib
brew link readline --force
создать ссылки в/usr/local/opt/readline/lib
.brew link readline --force
Candland, который сработал для меняПереустановка моей версии Ruby, похоже, устранила это:
источник
rbenv install 2.5.1
в моем контексте у меня работает. Это пошло не так, как только я побежалsudo xcode-select -s /Library/Developer/CommandLineTools
исправить проблему, с которой я столкнулся в другом месте. fwiwbundle install
переустановить драгоценные камни с собственными расширениями.ты можешь попробовать
вы на правильном пути, но похоже, что rails ищет libreadline.7.dylib, а libreadline.7.dylib отсутствует в папке.
источник
Да, лучший ответ - переустановить.
Вы можете легко получить версию, набрав:
С
rbenv
команда, то есть:с
rvm
:источник
rbenv install <ruby-version>
удалось запустить с "rake" из-за конфликта rake с установленным исполняемым файлом из-за конфликта redis-rack . Мне пришлось бежатьrbenv uninstall <ruby-version> && rbenv install <ruby-version>
Очень простое решение, которое не требует перестройки вашего гемсета RVM ИЛИ символьных библиотек.
Добавьте в свой Gemfile:
Если вы делаете группы сборщиков
Тогда беги
Сообщите мне, если это не сработает.
источник
Чаще всего в Ruby-приложениях это вызвано гемами, у которых есть расширения (драгоценные камни, говорящие «Создание собственных расширений ...»), которые построены с использованием определенной версии, в данном случае
readline
.В принципе, есть два решения:
Либо вы можете сделать символьную ссылку на версию 8 гема, на отсутствующую версию. Это будет работать во многих случаях, но если обратная совместимость нарушена, то не будет.
Или, если гем действительно поддерживает версию 8, вы можете переустановить этот конкретный гем или «сделать его безупречным», запустив
gem pristine --all
.РЕДАКТИРОВАТЬ : В рамках вашего «того, что я пробовал», переустановка PostgreSQL также является одним из двоичных файлов, созданных с использованием определенной версии, которая также может потребовать перестройки для работы с системной библиотекой, такой как readline.
источник
Получил эту проблему:
делаю ...
помогло мне в macOS Catalina
источник
Итак, я проверил несколько ответов здесь, но я не думаю, что они могут работать с ванильной установкой Mojave Mac. Я использую 10.14.4, а вот это:
получить домашнее пиво с https://brew.sh
$ brew install coreutils
: это устанавливает пакет gnu coreutils pkg для Mac, мы хотим получитьgreadlink
от него, потому что ссылка для чтения macOSX не совпадает с ссылкой для чтения gnu. Это крайне запутанно, но такова жизнь в Макленде.$ echo 'alias readlink=greadlink' >> ~/.bash_aliases
Я обнаружил, что macs readlink немного не хватает, поэтому я переопределил существующую readlink, применив псевдоним greadlink. (вы можете сделать его доступным для всех пользователей,$ alias readlink=greadlink >> /etc/bashrc
что позволит каждому пользователю использовать его.$ ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
Я связал уже связанный.8.
файл вместо .8.0. файл, потому что, если бы он был обновлен до,.8.1.
тогда моя ссылка для чтения не нарушит и не пропустит функции в библиотеке. Я почти уверен, что мы отформатируем наши Mac до выхода 9+.источник
Я бы не рекомендовал вручную создавать символьные ссылки на собственные библиотеки. Как и в OS X 10.4, стандартный путь к включаемой библиотеке
/usr/include
больше не используется и заблокирован SIP (что затрудняет перемещение).Apple поставляет «устаревший установщик», чтобы вы могли установить заголовки в «старом месте», который также разрешит ваш путь для правильного поиска заголовков, установленных через
brew
.См. Здесь подробный отчет о том, что происходит .
источник
libreadline.8.dylib
наlibreadline.7.dylib
которую отсутствовала. команда запуска:ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
Моя проблема была такой же при беге
lftp
.Просто бег
brew upgrade
решил мою проблему, так как он обновился (среди прочего):источник
Предыстория: это произошло, когда я попытался установить tig, но я думаю, что это распространенная проблема, которая может возникнуть у вас, когда вам нужно вручную связать установленное программное обеспечение с правильным путем, который требуется другому программному обеспечению.
Если вы не можете найти readline, установленный на вашем Mac, вам следует запустить
После того, как вы установили крайний срок, brew попросит вас связать его. Но на самом деле вы не можете связать, запустив
Даже вы не можете связать, запустив
Mac OS предупредит вас, что это чрезвычайно опасно, и остановит вас.
Последней версией readline является версия 8, поэтому вы увидите сообщение об ошибке, например
Крайний срок подачи пива
Поэтому вам нужно вручную связать его с тем местом, которое требуется вашему программному обеспечению, с помощью команды ls
Наслаждайтесь!
источник