ライブラリがロードされていません:/usr/local/opt/readline/lib/libreadline.7.dylib


112

実行しようとする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-coollineguardguard-livereload、プロジェクトにgemを追加しました。違いが生じた場合は、その前にRailsコンソールを正常にロードしました。私は最新のmacosで実行しています。

(更新)レールコンソールとして、pry railsを使用しています。

何か助けは?ありがとう。


1
試してみるbrew reinstall readline
MrYoshiji

動作しませんでした。ありがとう
Jonathan Tuzman

@MrYoshijiで働いてくれました!ありがとう!
Spons

回答:


374

を検索するとエラーがスローされるようです/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で試してみたところ、うまくいきました。


Hawzに感謝します。試してみたがうまくいかなかった。以前にも試したことがあると思います。私はそのシンボリックリンクをln私が実際に何でも知っているものではないことを言わなければなりません:/
ジョナサン・ツズマン

5
私のために働きました。多分@JonathanTuzman、あなたは良い方向けではなかったのですか cd /usr/local/opt/readline/lib
Ulysse BN

7
brew link readline --forceリンクを作成する必要がありました/usr/local/opt/readline/lib
キャンドランド

できれば+10あげます。ありがとう!
eos87

本当の答えはbrew link readline --force、私のために働いた
キャンドランドのもの

42

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

rvm reinstall 2.3.7

11
これは、rvmを使用してrubyをインストールした場合の答えです。Rubyバージョンがシステムに存在しないreadlineのバージョンに対してコンパイルされている場合は、Rubyを再コンパイルして、新しいバージョンにリンクする必要があります。私は自分でこの問題に遭遇し、readline.7.dylibに代わってreadline.8.dylibをシンボリックリンクする以外のすべてを試してみました(ほとんどの人にとってうまくいったように見えても、その答えを支持して、これは本当に悪い考えのようです) 。)
キングドン

4
私はrbenvを使用rbenv install 2.5.1し、私のコンテキストで動作します。これはsudo xcode-select -s /Library/Developer/CommandLineTools、他の場所で発生していた問題を修正するために走った後のことです。fwiw
somedirection

1
バンドラーを使用している場合bundle install、ネイティブ拡張を使用してgemを再インストールする必要があることに気付くかもしれません。
噴水

27

試して頂けますか

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

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


1
「brew upgrade」を実行すると問題が再発しますが、このソリューションは正常に動作して修正されます
Iwan B.

17

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

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

ruby -v

を使用するrbenvと、コマンドは次のようになります。

rbenv install 2.3.7

rvm

rvm reinstall 2.3.7

rakeの "rake"が原因で実行がrbenv install <ruby-version>失敗し、redis-rackの競合からインストールされた実行可能ファイルと競合します。私は走らなければなりrbenv uninstall <ruby-version> && rbenv install <ruby-version>
ませんでした

6

RVM gemsetまたはsym-linkingライブラリの再構築を必要としない非常にシンプルなソリューション。

Gemfileに追加:

gem 'rb-readline'

バンドラーグループを使用している場合

group :development do
  gem 'rb-readline'
end

次に実行します

> bundle

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


4

Rubyアプリケーションで最も頻繁に発生するのは、特定のバージョン、この場合はを使用して構築された拡張機能(「Building native extensions ..」と呼ばれるgem)を持つgemが原因ですreadline

基本的に、2つの解決策があります。

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

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

編集:「私が試したこと」の範囲内で、PostgreSQLを再インストールすることも、特定のバージョンを使用してビルドされたバイナリの1つであり、readlineなどのシステムライブラリを操作するために再ビルドが必要になる場合もあります。


わかった!Pristineもそれを修正しませんでした。現在のDBへの接続を切断せずに、PostgreSQLをどの程度正確に再インストールする必要がありますか?(もちろん、私が何かについて知っている限り、答えは「それは問題ではない」かもしれません)。
ジョナサントゥズマン

4

この問題を得た:

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


2

だから私はここでいくつかの答えをチェックしましたが、彼らがバニラモハベマックインストールで動作することはないと思います。私はこれらを行っている間に10.14.4を使用しています:

  • https://brew.shから自作を入手する

  • $ brew install coreutils:これはmac用のgnu coreutils pkgをインストールしますgreadlink。macOSXのreadlinkはgnu readlinkと同じではないため、これをここから取得します。非常に混乱しますが、それはMaclandでの生活です。

  • $ echo 'alias readlink=greadlink' >> ~/.bash_aliasesMacの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.「.8.0」ではなく、すでにリンクされているファイルをリンクしました。ファイルを更新する.8.1.と、readlinkが壊れたり、ライブラリの機能を見逃したりすることがなくなります。9歳以上が出る前に、Macをフォーマットすることを確信しています。


0

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

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


これは手動でシンボリックリンクlibreadline.8.dyliblibreadline.7.dylibた後にのみ機能しました。つまり、runコマンド:ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
デヴィッド・シューマン

0

実行中の私の問題はまったく同じlftpでした。

brew upgrade(特に)更新されているので、実行するだけで私の問題は解決しました。

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

0

背景:これは私がtigをインストールしようとしたときに発生しましたが、インストールされたソフトウェアを別のソフトウェアが必要とする正しいパスに手動でリンクする必要があるという一般的な問題だと思います。

Macにインストールされているreadlineが見つからない場合は、

brew install readline

締切をインストールした後、brewはそれをリンクするように求めてきます。しかし、実際には実行してもリンクできません

brew link readline

実行してもリンクできない

sudo brew link readline

Mac OSはこれが非常に危険であると警告し、実行を停止します。

readlineの最新バージョンはバージョン8なので、次のようなエラーメッセージが表示されます。

Library not loaded: /usr/local/opt/readline/lib/libreadline.8.dylib

醸造は、締め切りをインストールしました

/usr/local/Cellar/readline/8.0.4

したがって、コマンドlsを使用して、ソフトウェアが必要な場所に手動でリンクする必要があります

ln -s /usr/local/Cellar/readline/8.0.4 /usr/local/opt/readline

楽しい!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.