web-dev-qa-db-ja.com

ライブラリがロードされていません:/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(これは確かにこのプロジェクトのDBです)

そして

cd /usr/local/opt/readline/lib    
ln libreadline.8.0.dylib libreadline.6.2.dylib

(readlineの私のバージョンは8です)

およびbrew link readline --force

しかし、これらのどれもそれを修正していません。

最近、プロジェクトにpry-coollineguard、およびguard-livereload gemを追加しました(違いがある場合は、Railsコンソールが正常にロードされました)。最新のmacosで実行しています。

(更新)私はpry Rails as my Rails console、それが違いを生む場合は使用しています。

助けがありますか?ありがとう。

100
Jonathan Tuzman

/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で動作しました。

339
Hawz

Rubyバージョンを再インストールすると修正されたようです:

rvm reinstall 2.3.7
39
Jonathan Tuzman

試してもらえますか

cd /usr/local/opt/readline/lib    
ln -s libreadline.8.dylib libreadline.7.dylib

あなたは正しい軌道に乗っていますが、Railsはlibreadline.7.dylibを探しており、libreadline.7.dylibはフォルダ内にないようです。

17
ericshao

はい、最善の答えは再インストールです。

次のように入力すると、バージョンを簡単に取得できます。

Ruby -v

rbenvの場合、コマンドは次のとおりです。

rbenv install 2.3.7

rvmを使用:

rvm reinstall 2.3.7
16
FreePender

ほとんどの場合、Rubyアプリケーションでは、特定のバージョン(この場合はreadline)を使用してビルドされた拡張機能を備えたgem(「ネイティブ拡張機能の構築」と呼ばれるgem)が原因です。

基本的に、2つのソリューションがあります。

どちらか、gemのバージョン8を、欠落しているバージョンにシンボリックリンクできます。これは多くの場合に機能しますが、下位互換性が壊れている場合は機能しません。

または、gemが実際にバージョン8をサポートしている場合、その特定のgemを再インストールするか、gem pristine --all

[〜#〜] edit [〜#〜]:「私が試したこと」の範囲で、PostgreSQLを再インストールすることも、特定のバージョンを使用して構築されたバイナリの1つです。 readlineなどのシステムライブラリを使用するには、再構築が必要です。

4
Frederik Spang

ここでいくつかの回答を確認しましたが、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をフォーマットすることを確信しています。

2
Salyangoz

RVM gemset OR sym-linking libraries。

Gemfileに追加します。

gem 'rb-readline'

バンドラーグループを行っている場合

group :development do
  gem 'rb-readline'
end

次に実行する

> bundle

うまくいかない場合はお知らせください。

2
Bret Weinraub

この問題が発生しました:

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のために私のためにトリックをしました

1
Aris

ネイティブライブラリを手動でシンボリックリンクしないことをお勧めします。 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`

何が起こっているかについての詳細な説明はこちらをご覧ください

0
codenamev

私の問題は、lftpを実行しているときも同じでした。

実行中brew upgradeが更新されたので、私の問題を解決しました(とりわけ):

readline 8.0.0_1 -> 8.0.1
lftp 4.8.4 -> 4.8.4_2
0