라이브러리가로드되지 않음 : /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-coolline, guardguard-livereload 내 프로젝트에 보석은 어떤 차이가 (그 전에 콘솔로드 미세 레일)합니다. 최신 macOS에서 실행 중입니다.

(업데이트) 차이가 있다면 레일 콘솔로 프라이 레일을 사용하고 있습니다.

도움이 필요하세요? 감사.


1
시도brew reinstall readline
MrYoshiji

덕분에 작동하지 않았다
조나단 Tuzman

@MrYoshiji 나를 위해 일했습니다! 감사!
후원

답변:


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내가 사실에 대해 아무것도 아는 것 없습니다 : /
조나단 Tuzman

5
나는 나를 위해 일했다. 어쩌면 @JonathanTuzman 당신은 좋은 디렉토리에 없었습니까? cd /usr/local/opt/readline/lib
Ulysse BN

7
했다하면 brew link readline --force에있는 링크를 만들 수 있습니다 /usr/local/opt/readline/lib.
Candland 2019

할 수만 있다면 +10을 드리겠습니다. 감사!
eos87

진짜 대답은 brew link readline --force나를 위해 일한 Candland,의
Rakib Fiha

42

내 Ruby 버전을 다시 설치하면 문제가 해결 된 것 같습니다.

rvm reinstall 2.3.7

11
rvm을 사용하여 ruby를 설치했다면 이것이 답입니다. 루비 버전이 시스템에 더 이상 존재하지 않는 readline 버전에 대해 컴파일 된 경우 새 버전에 링크하기 위해 루비를 다시 컴파일해야합니다. 나는 방금이 문제를 직접 만났고 readline.8.dylib를 심볼릭 링크로 연결하여 readline.7.dylib (대부분의 모든 사람에게 효과가 있더라도 정말 나쁜 생각처럼 보입니다. .)
Kingdon

4
나는 rbenv를 사용 rbenv install 2.5.1하고 내 맥락에서 나를 위해 일했습니다. 이것은 sudo xcode-select -s /Library/Developer/CommandLineTools내가 다른 곳에서 경험 한 문제를 해결하기 위해 실행 한 후에 옆으로 진행되었습니다 . fwiw
somedirection

1
번 들러를 사용하는 경우 나중에 bundle install기본 확장으로 gem을 다시 설치 해야 할 필요가있을 수 있습니다 .
spume

27

할 수 있겠 니

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

당신은 올바른 길을 가고 있지만 rails가 libreadline.7.dylib를 찾고 있고 libreadline.7.dylib가 폴더에없는 것 같습니다.


1
문제가 다시 나타납니다 내가 실행 '양조 업그레이드'하지만 생 솔루션 잘 작동하고 그것을 해결
Iwan B.


7

RVM gemset 또는 sym-linking 라이브러리를 재 구축하지 않는 매우 간단한 솔루션입니다.

Gemfile에 추가하십시오.

gem 'rb-readline'

번 들러 그룹을 수행하는 경우

group :development do
  gem 'rb-readline'
end

그런 다음 실행

> bundle

작동하지 않으면 알려주세요.


4

대부분의 경우 Ruby 애플리케이션에서 이는 특정 버전 (이 경우 ..)을 사용하여 빌드 된 확장 ( "Building native extensions .."이라고 말하는 gem)이있는 gem에 의해 발생합니다 readline.

기본적으로 두 가지 솔루션이 있습니다.

어느 쪽이든 gem의 버전 8을 누락 된 버전에 심볼릭 링크 할 수 있습니다. 이것은 많은 경우에 작동하지만 이전 버전과의 호환성이 깨지면 작동하지 않습니다.

또는 gem이 실제로 버전 8을 지원하는 경우 특정 gem을 다시 설치하거나 gem pristine --all.

편집 : "내가 시도한 것"의 범위에서 PostgreSQL을 다시 설치하는 것은 readline과 같은 시스템 라이브러리와 함께 작동하기 위해 재 빌드가 필요할 수도있는 특정 버전을 사용하여 빌드 된 바이너리 중 하나이기도합니다.


Ack! Pristine도 문제를 해결하지 못했습니다. 현재 DB에 대한 연결을 끊지 않고 PostgreSQL을 얼마나 정확하게 다시 설치해야합니까? (물론 대답은 내가 아는 한 "그건 문제가 아니다"일 수 있습니다.)
Jonathan Tuzman

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 Catalina를 위해 나를 위해 트릭을 수행했습니다.


2

그래서 나는 여기에서 몇 가지 답변을 확인했지만 바닐라 Mojave Mac 설치로 작동 할 수 있다고 생각하지 않습니다. 나는 이것을하는 동안 10.14.4를 사용하고 있습니다.

  • https://brew.sh 에서 homebrew를 얻으십시오.

  • $ brew install coreutils: 이것은 mac 용 gnu coreutils pkg를 설치합니다. greadlinkmacOSX의 readlink가 gnu readlink와 동일하지 않기 때문에 이에 서 필요합니다 . 그것은 매우 혼란 스럽지만 맥 랜드에서의 삶입니다.

  • $ 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.'.8.0'대신 이미 연결된 파일을 연결했습니다 . 파일을 업데이트하면 .8.1.내 읽기 링크가 라이브러리의 기능을 중단하거나 놓치지 않기 때문 입니다. 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.dylib할 수 libreadline.7.dylib있는 누락되었다. 즉, 실행 명령 :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.