Библиотека не загружена: /usr/local/opt/readline/lib/libreadline.7.dylib
Когда я пытаюсь запустить 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
(моя версия readline - 8)
и brew link readline --force
Но ни один из них не исправил это.
Недавно я добавил в свой проект драгоценные камни pry-coolline
, guard
и guard-livereload
если это что guard-livereload
(консоль rails загружается нормально перед этим). Я бегу на последних макосах.
(Обновление) Я использую рельсы как консоль, если это имеет какое-то значение.
Любая помощь? Благодарю.
Ответы
Ответ 1
похоже, ошибка выдается при поиске /usr/local/opt/readline/lib/libreadline.7.dylib
.
Вы пытались символическую ссылку это?
Так что-то вроде:
cd /usr/local/opt/readline/lib
ln -s libreadline.8.0.dylib libreadline.7.dylib
Просто попробовал это на macOS Mojave, ruby 2.5.3p105 и Rails 5.2.2 и сработало.
Ответ 2
Переустановка моей версии Ruby, кажется, исправила это:
rvm reinstall 2.3.7
Ответ 3
Да, лучший ответ - переустановить.
Вы можете легко получить версию, набрав:
ruby -v
С rbenv
команда выглядит так:
rbenv install 2.3.7
с rvm
:
rvm reinstall 2.3.7
Ответ 4
Чаще всего в Ruby-приложениях это вызвано гемами, которые имеют расширения (гемы с надписью "Создание собственных расширений..."), которые построены с использованием определенной версии, в данном случае readline
.
В основном, есть два решения:
Либо, вы можете использовать символическую ссылку 8 версии гема, чтобы версия отсутствовала. Это будет работать во многих случаях, но если обратная совместимость нарушена, это не будет.
Или, если драгоценный камень действительно поддерживает версию 8, вы можете переустановить этот конкретный драгоценный камень или "нетронутым" его, запустив gem pristine --all
.
РЕДАКТИРОВАТЬ: В рамках вашего "того, что я пробовал", переустановка PostgreSQL также является одним из двоичных файлов, созданных с использованием определенной версии, для которой также может потребоваться перестройка, для работы с системной библиотекой, такой как readline.
Ответ 5
можешь попробовать
cd /usr/local/opt/readline/lib
ln -s libreadline.8.dylib libreadline.7.dylib
вы на правильном пути, но похоже, что rails ищет libreadline.7.dylib, а libreadline.7.dylib отсутствует в папке.
Ответ 6
Итак, я проверил несколько ответов здесь, но я не думаю, что они могут работать с ванильной установкой Mac Mojave. Я использую 10.14.4 в то время как я сделал это:
-
получить доморощенный с https://brew.sh
-
$ brew install coreutils
: это устанавливает пакет gnu coreutils для mac, нам нужна greadlink
потому что ссылка для чтения macOSX greadlink
от ссылки для чтения 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.
тогда моя ссылка для чтения не сломает и не пропустит функции библиотеки. Я уверен, что мы отформатируем наши макы до того, как выйдет 9+.
Ответ 7
Я бы рекомендовал не использовать нативные библиотеки вручную. В OS X 10.4 стандартный путь include библиотеки /usr/include
больше не используется и блокируется SIP (что затрудняет перемещение объектов).
Apple поставляет "устаревший установщик", чтобы вы могли устанавливать заголовки в "старом месте", что также поможет вам правильно найти заголовки, установленные с помощью brew
.
cp /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg ~/Desktop && open ~/Desktop/macOS_SDK_headers_for_macOS_10.14.pkg'
Смотрите здесь для подробного описания того, что происходит.
Ответ 8
Моя проблема была такой же при запуске lftp
.
Просто запуск brew upgrade
решил мою проблему, поскольку он обновил (среди прочего):
readline 8.0.0_1 -> 8.0.1
lftp 4.8.4 -> 4.8.4_2