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
(これは確かにこのプロジェクトのDBです)
そして
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
gemを追加しました(違いがある場合は、Railsコンソールが正常にロードされました)。最新のmacosで実行しています。
(更新)私はpry Rails as my Rails console、それが違いを生む場合は使用しています。
助けがありますか?ありがとう。
/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で動作しました。
Rubyバージョンを再インストールすると修正されたようです:
rvm reinstall 2.3.7
試してもらえますか
cd /usr/local/opt/readline/lib
ln -s libreadline.8.dylib libreadline.7.dylib
あなたは正しい軌道に乗っていますが、Railsはlibreadline.7.dylibを探しており、libreadline.7.dylibはフォルダ内にないようです。
はい、最善の答えは再インストールです。
次のように入力すると、バージョンを簡単に取得できます。
Ruby -v
rbenv
の場合、コマンドは次のとおりです。
rbenv install 2.3.7
rvm
を使用:
rvm reinstall 2.3.7
ほとんどの場合、Rubyアプリケーションでは、特定のバージョン(この場合はreadline
)を使用してビルドされた拡張機能を備えたgem(「ネイティブ拡張機能の構築」と呼ばれるgem)が原因です。
基本的に、2つのソリューションがあります。
どちらか、gemのバージョン8を、欠落しているバージョンにシンボリックリンクできます。これは多くの場合に機能しますが、下位互換性が壊れている場合は機能しません。
または、gemが実際にバージョン8をサポートしている場合、その特定のgemを再インストールするか、gem pristine --all
。
[〜#〜] edit [〜#〜]:「私が試したこと」の範囲で、PostgreSQLを再インストールすることも、特定のバージョンを使用して構築されたバイナリの1つです。 readlineなどのシステムライブラリを使用するには、再構築が必要です。
ここでいくつかの回答を確認しましたが、Vanilla MojaveのMacインストールで機能するとは思いません。私は10.14.4を使用していますが、これらを行いました:
https://brew.sh からhomebrewを取得
$ brew install coreutils
:これはmac用のgnu coreutils pkgをインストールします。macOSXのreadlinkはgnu readlinkと同じではないため、greadlink
が必要です。非常に紛らわしいですが、それはmaclandでの生活です。
$ echo 'alias readlink=greadlink' >> ~/.bash_aliases
macsのreadlinkが少し不足していることがわかったため、greadlinkのエイリアスを作成して既存のreadlinkを無効にしました。 ($ alias readlink=greadlink >> /etc/bashrc
ですべてのユーザーが使用できるようにすることができます。これにより、すべてのユーザーが使用できるようになります。
$ ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
「.8.0」ではなく、既にリンクされている.8.
ファイルをリンクしました。ファイルが.8.1.
に更新されると、私のreadlinkはライブラリの機能を壊したり見逃したりしません。 9+がリリースされる前に、Macをフォーマットすることを確信しています。
RVM gemset OR sym-linking libraries。
Gemfileに追加します。
gem 'rb-readline'
バンドラーグループを行っている場合
group :development do
gem 'rb-readline'
end
次に実行する
> bundle
うまくいかない場合はお知らせください。
この問題が発生しました:
dyld: Library not loaded: /usr/local/opt/mpfr/lib/libmpfr.4.dylib
やって...
cd /usr/local/opt/mpfr/lib/
ln -s libmpfr.dylib libmpfr.4.dylib
macOS Catalinaのために私のためにトリックをしました
ネイティブライブラリを手動でシンボリックリンクしないことをお勧めします。 OS X 10.4以降、標準にはライブラリパスが含まれます/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`
私の問題は、lftp
を実行しているときも同じでした。
実行中brew upgrade
が更新されたので、私の問題を解決しました(とりわけ):
readline 8.0.0_1 -> 8.0.1
lftp 4.8.4 -> 4.8.4_2