วิธีแก้ปัญหาข้อผิดพลาด“ การติดตั้งทับทิมหายไปจากโรคจิต”


158

ฉันใช้ rvm เพื่อติดตั้ง ruby ​​1.9.3 แม้ว่ามันจะถูกติดตั้งสำเร็จ แต่ก็บ่นเกี่ยวกับ libyaml และตอนนี้ทุกครั้งที่ฉันต้องการติดตั้งอัญมณี (พูดทางรถไฟ) คำเตือนนี้จะปรากฏขึ้น:

It seems your ruby installation is missing psych (for YAML output). To eliminate this warning, please install libyaml and reinstall your ruby.

ฉันใช้ Mac os X 10.7 (Lion)


คุณพยายามติดตั้ง libyaml โดยทำตามคำแนะนำเหล่านี้: pyyaml.org/wiki/LibYAMLหรือไม่?
กะลาสี

1
คุณใช้โฮมบรูว์หรือไม่? ลองbrew doctorดู มันแสดงปัญหาเกี่ยวกับลิงค์ libyaml หรือไม่?
Stoutie

3
ผู้ใช้ Mac: rm -rf /usr/local/lib/ruby/gems/ && brew reinstall rubyตามที่ระบุในGtihub homebrew-coreอย่างเป็นทางการได้แก้ไขปัญหา
Travis Clarke

คำตอบ:


218

ในกรณีของฉัน

rvm pkg install libyaml

และ

rvm reinstall ruby-1.9.3-p125

แก้ไขปัญหา

สำหรับผู้ที่ใช้ Ubuntu ตรวจสอบให้แน่ใจว่าlibtoolได้ติดตั้งไว้ก่อนหน้าขั้นตอนข้างต้น:

sudo apt-get install libtool

สำหรับผู้ใช้ macOS (พร้อมโฮมบรูว์):

rm -rf /usr/local/lib/ruby/gems/ && brew reinstall ruby

11
คุณหมายถึงจริงๆ:rvm package install libyaml
johncblandii

3
rvm pkg install libyamlไม่มีเขาหมายถึง จาก:rvm usage pkg :: Install a dependency package {readline,iconv,zlib,openssl}
jordanpg

ฉันคิดว่ามันขึ้นอยู่กับเวอร์ชันของ rvm ที่คุณใช้ ใน RVM 1.6.9 packageมันเป็น
Vanuan

8
หลังจากทำงานก็แนะนำให้ติดตั้งทับทิมทั้งหมดที่มีrvm pkg install libyaml rvm reinstall all --forceมันอาจจะมีประโยชน์ถ้าคุณมีมากกว่าหนึ่ง
Haralan Dobrev

7
ต้องทำ rvm reinstall 1.9.3 --with-libyaml-dir=/home/rails/.rvm/usrตามคำแนะนำในserverfault.com/questions/442150/…
pcv

20

สำหรับ Ubuntu และ rvm

sudo apt-get install libtool
rvm pkg install libyaml
rvm reinstall 1.9.3

ทำงาน


1
ฉันต้อง 'ถอนการติดตั้ง rvm ทั้งหมด' ก่อนติดตั้ง libyaml นั่นเป็นวิธีเดียวที่ข้อผิดพลาดจะถูกล้าง
Sunil Gowda

19

หากไม่ได้ใช้ rvm แต่คุณกำลังสร้างและติดตั้ง ruby ​​1.9.3 ตั้งแต่เริ่มต้น - ตัวอย่างเช่นคุณกำลังจัดการ ruby ​​version ของคุณด้วยrbenv - คุณต้องติดตั้ง libyaml ก่อน รับได้จากhttp://pyyaml.org/ ; ในขณะที่ไฟล์ที่คุณต้องการคือhttp://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz เปิด tarball และ cd ในโฟลเดอร์ผลลัพธ์ แล้ว:

./configure --prefix=/usr/local
make
sudo make install

ตอนนี้คุณพร้อมที่จะสร้างทับทิมแล้ว ดาวน์โหลดทับทิมจากhttp://ftp.ruby-lang.org/pub/ruby/ เปิด tarball และ cd ในโฟลเดอร์ผลลัพธ์ ขณะนี้:

./configure --prefix=/wherever/you/want/it/to/go
make
make install

(หรืออาจsudo make installขึ้นอยู่กับตำแหน่งที่คุณวางไว้) หากใช้ rbenv คุณจะรู้ว่ามันทำงานได้ดีถ้าคุณสลับไปที่rbenv global 1.9.3-p194(หรือรุ่นใดที่คุณเรียกว่า) และgem --versionทำงานโดยไม่มีการเตือน สิ่งนี้ใช้ได้กับฉันใน Mac OS X 10.6.8 ( อัปเดต : ฉันเพิ่งลองสิ่งนี้บน Mac OS X 10.8.1 และดูเหมือนว่าจะทำงานได้ดีที่นั่นด้วย)


สิ่งที่ควรอัญมณี - รุ่นที่ส่งออก? ฉันติดตั้ง Ruby 1.9.3-p327 แต่ gem --version เอาต์พุต 1.8.23 (ไม่แน่ใจว่าเกี่ยวข้องหรือไม่) และเมื่อฉันอัปเดตบันเดิลก็แปลกบอกว่าอัญมณีบางตัวต้องการ => 1.9.2 stackoverflow.com/questions/ 14116083 / …
Leahcim

gem --versionเสียงของคุณถูกต้อง แต่บางทีคุณมีเส้นทางของคุณ munged เนื่องจากการใช้ rvm เดิม
แมตต์

4
และถ้าคุณต้องติดตั้ง yaml โดยไม่มี sudo ให้ระบุคำนำหน้าอื่นที่ไม่ใช่/usr/localเมื่อกำหนดค่า yaml จากนั้นกำหนดค่า ruby ​​ด้วย--with-opt-dir=/path/to/yaml/prefix --with-yaml --prefix=/path/to/ruby/prefix
Chadwick

ฉันรู้ว่าอายุเกินหนึ่งปี แต่คำถามนี้เกี่ยวกับข้อผิดพลาดของ RVM จะเริ่มต้นด้วย "หากไม่ได้ใช้ rvm" ได้อย่างไร?
Peter Degen-Portnoy

18
brew install libyaml
rvm reinstall 1.9.3

เป็นสิ่งที่ใช้ได้ผลสำหรับฉัน (บน Snow Leopard)


ฉันต้องทำเช่นนี้เช่นกัน rvm pkg ติดตั้ง libyaml ไม่ได้ทำเพื่อฉัน
stringo0


6

ฉันมีปัญหานี้ libyaml จะไม่รวบรวม ปรากฎว่าฉันหายไปจาก libtool

yum install libtool
yum install libyaml (or rvm pkg install libyaml)
rvm reinstall 1.9.3

นั่นช่วยแก้ไขปัญหาของฉัน


1
ไม่มีแพ็คเกจ libtool ไม่มีอะไรทำ.
พอล

1
centos ไม่สามารถ yum ติดตั้ง libtool? ไม่เชื่อหรอก .. พวกคุณใช้ระบบที่ไม่ใช่ระบบ Redhat และจำเป็นที่จะต้องรับหรือไม่?
phil88530

@ phil88530 รุ่นเก่า CentOS สามารถโง่มากกว่าที่คุณคิด
เดนนิสซี

@DennisCheung โอเคไม่เคยเล่นกับคนชรา
phil88530

6

หากคุณติดตั้ง ruby ​​บน macOS ด้วย homebrew ลองใช้วิธีนี้

rm -rf /usr/local/lib/ruby/gems/ && brew reinstall ruby

โปรดทราบว่านี่จะกำจัดพลอยที่ติดตั้งทั้งหมด ดีที่สุดบันทึกรายการอัญมณีที่ติดตั้งไว้ด้วยgem listก่อนที่คุณจะเปิดใช้งาน


แต่gem listสิ่งที่ทำให้เกิดข้อผิดพลาดในสถานที่แรก (สำหรับฉัน)
orome

5
$ brew doctor
$ brew link libyaml

การแก้ไขปัญหาทั้งหมดbrew doctorแก้ไขให้ฉัน gem install jekyllผมได้รับข้อผิดพลาดที่คล้ายกับข้อผิดพลาดถามในขณะที่พยายามที่จะ คำสั่งทั้งหมดผ่าน rvm ก็ให้ข้อผิดพลาดเช่นกัน ปัญหาพื้นฐานและไม่ชัดเจนดังนั้นคือ homebrew ฉันคิดว่า rvm ติดตั้งสิ่งของมีปัญหา ฉันเพิ่งอัพเกรดเป็น Mavericks บน Mac OS ในกรณีของฉันการแก้ไขปัญหาทั้งหมดได้brew doctorตัดข้อผิดพลาดทุกข้อออกไป ตอนนี้ทุกอย่างทำงานได้อย่างราบรื่น
Stoutie

4

ฉันได้รับการแก้ไขในที่สุด ปัญหาคือว่าแม้ว่าฉันจะติดตั้ง libyaml กับชง แต่ก็ไม่เคยเชื่อมโยง brew link libyamlผมต้องลบไฟล์ส่วนหัวที่ขัดแย้งกันแล้ว


4

การติดตั้ง ruby ​​ด้วย rvm สำหรับ mac osx ใช้ autolibs เพื่อติดตั้ง libyaml และการถอนการติดตั้ง libyaml ก่อนจะช่วย

สิ่งนี้ใช้ได้กับฉัน:

brew uninstall libyaml
rvm autolibs enable
rvm reinstall ruby-2.1.1

ขอบคุณ @ user33302 วิธีการแก้ปัญหาดังกล่าวยังใช้ได้กับฉันใน Mac OS EI CAPITON
Sandeep Ahuja

3

ฉันมีปัญหาเดียวกัน (Lion 10.7.4) และแก้ไขโดยการอัพเกรด rvm จากนั้นทำการติดตั้งทับทิมอีกครั้ง

1) อัปเกรด rvm https://rvm.io//rvm/install/

curl -L https://get.rvm.io | bash -s stable --ruby

2) จากนั้นใช้ rvm เพื่อติดตั้ง ruby ​​1.9.3 ใหม่ (ซึ่งได้รับการติดตั้งก่อนหน้านี้ด้วย rvm รุ่นก่อนหน้า)

rvm reinstall 1.9.3

3

ฉันติดตั้งทับทิม 1.9.3 อีกครั้งด้วยการสนับสนุน libyaml:

rvm reinstall 1.9.3 --with-libyaml

ฉันแน่ใจว่าฉันจะใช้ 1.9.3 ก่อนการติดตั้ง psych:

rvm use 1.9.3

ฉันติดตั้ง Psych:

gem install psych

2
sudo port install libyaml # or brew install libyaml
rvm get latest
rvm pkg install iconv
rvm pkg install openssl
rvm reinstall 1.9.3 --with-openssl-dir=~/.rvm/usr --with-iconv-dir=~/.rvm/usr

curl -OL http://rubyforge.org/frs/download.php/75414/linecache19-0.5.13.gem
curl -OL http://rubyforge.org/frs/download.php/75415/ruby-debug-base19-0.11.26.gem

gem install linecache19-0.5.13.gem ruby-debug-base19-0.11.26.gem -- --with-ruby-include=$rvm_path/src/ruby-1.9.3-p125/
gem install ruby-debug19

rvm reload

โหลด. rvmrc ของคุณอีกครั้ง (cd out, cd in)

bundle

2

คำตอบเหล่านี้ไม่เหมาะกับฉัน

ฉันพบคำตอบของฉันในhttps://github.com/sstephenson/ruby-build/issues/119 ฉันอยู่บน Centos 6.3 Virtual Machine

คุณต้องติดตั้ง libyaml ก่อนติดตั้งทับทิม หากคุณติดตั้งทับทิมเรียบร้อยแล้วคุณต้องกำจัดไฟล์ก่อนที่จะรวบรวมซอร์สอีกครั้ง !!!

# cd to your ruby source location
rm -rf /usr/local/lib/ruby # clean out ruby files
./configure
make && make install
gem -v # check if error is fixed

2

ฉันสร้างไฟล์ libyaml แยกจากแหล่งที่มาและติดตั้งใน / usr / local / lib ทับทิมที่ RVM สร้างยังไม่เห็นและแทนที่จะโคลนด้วย makefile หรือระบบ LD_LIBRARY_PATH ฉันเพิ่งคัดลอก / usr / local / lib / libyaml * ไปยัง ~ / .rvm / rubies / ruby-1.9.3-p327 / lib /

นั่นเงียบคำเตือน


2

นี่คือสิ่งที่ใช้ได้กับฉันบน Ubuntu:
- การติดตั้ง libyaml-dev (sudo apt-get install libyaml-dev)
- การติดตั้ง rvm + ruby ​​1.9.3


2

ฉันลองตอบคำถามเหล่านี้ทั้งหมดแล้ว แต่ก็ยังใช้งานไม่ได้ ฉันติดตั้ง libyaml กับ homebrew แล้วติดตั้ง Ruby 1.9.3 และ 2.0.0 ด้วย rvm ทุกครั้งที่มันบ่นว่าฉันหายไปจากโรคจิต (libyaml) แต่พยายามติดตั้ง libyaml บอกฉันว่าติดตั้งแล้ว ล้างซ้ำ Urgh

ในที่สุดสิ่งที่ฉันทำคือถอนการติดตั้ง libyaml จากนั้นฉันเปิดใช้งาน autolibs เป็น rvmซึ่ง (อย่างน้อยใน OSX) อนุญาตให้ rvm ติดตั้งและจัดการการพึ่งพาโดยตรงมากขึ้น ตอนนี้เมื่อฉันติดตั้ง Rubies แล้ว rvm ก็สามารถติดตั้ง libyaml และรู้ว่ามันอยู่ในจุดที่ถูกต้อง

ดังนั้นหากคุณได้ลองใช้ตัวเลือกอื่น ๆ ทั้งหมดให้ลองลบ libyaml แล้วติดตั้ง Rubies ของคุณ มันนับได้ง่ายจากข้อความแสดงข้อผิดพลาด แต่นั่นคือสิ่งที่ใช้งานได้ในที่สุด


คุณไม่จำเป็นต้องใช้ libyaml: คุณต้องใช้ libyaml-dev ซึ่งเป็นสิ่งที่ rvm ติดตั้งสำหรับคุณด้วย
ความสับสน

1

ฉันมีปัญหาเดียวกัน ( Cent OS 5.7 ) ไม่มีวิธีแก้ไขปัญหาใดที่ได้ผลสำหรับฉัน

// My console warning
/usr/local/rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/yaml.rb:56:in `<top (required)>':
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.

หลังจากทำหลายเรื่องการติดตั้งที่ฉันรู้ว่ามันกำลังมองหา yaml ในรุ่นของทับทิมแทน1.9.1 1.9.3ดังนั้นฉันจึงปรับลดรุ่น

// obviously after installing `libyaml`
rvm remove all
rvm install 1.9.1
rvm use 1.9.1 --default

และมันก็ใช้งานได้ 8D!


1

บน CentOS 6.3 ไม่มีการทำงานใด ๆ ข้างต้น อย่างไรก็ตามการติดตั้งlibyamlจากแหล่งก่อนการติดตั้งทับทิมแก้ไขปัญหา

$ wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
$ tar xzvf yaml-0.1.4.tar.gz
$ cd yaml-0.1.4
$ ./configure --prefix=/usr/local
$ make
$ sudo make install

แล้ว

rvm install 1.9.3
gem install rails

1

ฉันกำลังใช้

rvm 1.16.20 (เวอร์ชั่น) โดย Wayne E. Seguin, Michal Papis [https://rvm.io/]

และยังได้รับข้อผิดพลาดต่อไปนี้ระหว่างการติดตั้งบันเดิล

.rvm / rubies / ruby-1.9.3-p194 / lib / ruby ​​/ 1.9.1 / yaml.rb: 56: ใน `': ดูเหมือนว่าการติดตั้งทับทิมของคุณหายไปจากจิต (สำหรับ YAML เอาต์พุต) หากต้องการกำจัดคำเตือนนี้โปรดติดตั้ง libyaml และติดตั้งทับทิมของคุณใหม่

นี่คือสามวิธีในการแก้ไขข้อผิดพลาดนี้โดยไม่ต้องติดตั้ง gem

  1. ส่งออก LD_LIBRARY_PATH = / usr / local / lib
  2. แก้ไข /etc/ld.so.conf

    sudo su - root
    echo /usr/local/lib64 >> /etc/ld.so.conf
    echo /usr/local/lib >> /etc/ld.so.conf
    ldconfig
  3. แก้ไขการติดตั้ง rvm ruby ​​1.9.3 ผ่าน

    patch .rvm/scripts/functions/manage/ruby < ruby-1.9.3-LDFLAGS.patch
    rvm uninstall ruby-1.9.3-p194
    export LDFLAGS='-L /usr/local/lib64 -L/usr/local/lib -Xlinker -R/usr/local/lib64 -Xlinker -R/usr/local/lib'
    rvm install ruby-1.9.3-p194 --disable-binary
    grep configure_args .rvm/src/ruby-1.9.3-p194/config.log # to confirm LDFLAG
    $ diff -c .rvm / {src / rvm /,} สคริปต์ / ฟังก์ชั่น / จัดการ / ทับทิม
    *** .rvm / src / rvm / สคริปต์ / ฟังก์ชั่น / จัดการ / ทับทิม 2012-11-10 06: 28: 14.000000000 +0000
    --- .rvm / สคริปต์ / ฟังก์ชั่น / จัดการ / ทับทิม 2013-01-25 17: 18: 00.000000000 +0000
    ***************
    *** 106,123 ****
              # เมื่อญาติอยู่ในผล libyaml ติดตั้งในทับทิมตัวเองดังนั้นมันจะถูกย้ายด้วยทับทิม
              prefix_path = "$ {rvm_rubies_path} / $ {rvm_ruby_string}" libyaml

    ! __rvm_update_configure_env CFLAGS = "- ฉัน $ {rvm_rubies_path} / $ {rvm_ruby_string} / รวม"
    ! __rvm_update_configure_env LDFLAGS = "- L $ {rvm_rubies_path} / $ {rvm_ruby_string} / lib"
              ถ้า [[-d "$ {rvm_rubies_path} / $ {rvm_ruby_string} / lib64"]]
    ! แล้ว __rvm_update_configure_env LDFLAGS = "- L $ {rvm_rubies_path} / $ {rvm_ruby_string} / lib64"
              Fi
            อื่น
              libyaml_installed || libyaml # การติดตั้ง libyaml

    ! __rvm_update_configure_env CFLAGS = "- ฉัน $ {rvm_path} / usr / include"
    ! __rvm_update_configure_env LDFLAGS = "- L $ {rvm_path} / usr / lib"
              ถ้า [[-d "$ {rvm_path} / usr / lib64"]]
    ! แล้ว __rvm_update_configure_env LDFLAGS = "- L $ {rvm_path} / usr / lib64"
              Fi
            Fi

    --- 106,123 ----
              # เมื่อญาติอยู่ในผล libyaml ติดตั้งในทับทิมตัวเองดังนั้นมันจะถูกย้ายด้วยทับทิม
              prefix_path = "$ {rvm_rubies_path} / $ {rvm_ruby_string}" libyaml

    ! __rvm_update_configure_env CFLAGS = "- ฉัน $ {rvm_rubies_path} / $ {rvm_ruby_string} / รวม $ {CFLAGS}"
    ! __rvm_update_configure_env LDFLAGS = "- L $ {rvm_rubies_path} / $ {rvm_ruby_string} / lib $ {LDFLAGS}"
              ถ้า [[-d "$ {rvm_rubies_path} / $ {rvm_ruby_string} / lib64"]]
    ! ดังนั้น __rvm_update_configure_env LDFLAGS = "- L $ {rvm_rubies_path} / $ {rvm_ruby_string} / lib64 $ {LDFLAGS}"
              Fi
            อื่น
              libyaml_installed || libyaml # การติดตั้ง libyaml

    ! __rvm_update_configure_env CFLAGS = "- ฉัน $ {rvm_path} / usr / รวม $ {CFLAGS}"
    ! __rvm_update_configure_env LDFLAGS = "- L $ {rvm_path} / usr / lib $ {LDFLAGS}"
              ถ้า [[-d "$ {rvm_path} / usr / lib64"]]
    ! ดังนั้น __rvm_update_configure_env LDFLAGS = "- L $ {rvm_path} / usr / lib64 $ {LDFLAGS}"
              Fi
            Fi


ฉันยืนยันว่าไม่จำเป็นต้องใช้โปรแกรมปะแก้นี้หากคุณกำลังใช้งานเวอร์ชันเสถียรล่าสุด rvm 1.18.4
victorv

1

ฉันยังดิ้นรนกับความล้มเหลวแบบเดียวกันrvm install ruby-2.0.0หลายชั่วโมงหลายชั่วโมง ฉันได้ลองวิธีการต่าง ๆ ทั้งหมดเพื่อติดตั้ง libyaml; wget source, และyum rvmฉันได้ลองวิธีการต่าง ๆ ทั้งหมดที่ระบุไว้ในเธรดที่คล้ายกัน เนื่องจากฉันลองใช้วิธีการต่าง ๆ ทั้งหมดฉันจึงมีการติดตั้งและตำแหน่งของ libyaml หลายครั้ง

RVM ~/.rvmเป็นอย่างดีมีความสามารถในการติดตั้งการอ้างอิงที่จำเป็นใน เพียงแค่ลบไฟล์ libyaml ออกจากการติดตั้งที่ไม่ใช่ RVM แก้ไขปัญหานี้ให้ฉัน:

sudo rm /usr/local/lib/libyaml*.*

rvm reinstall ruby-2.0.0-p0

Works!


1

วิธีการติดตั้ง NON-RVM ruby

% uname -a
Linux localhost.localdomain 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013  x86_64 x86_64 x86_64 GNU/Linux

% cat /etc/redhat-release
CentOS release 6.4 (Final)

% wget http://apt.sw.be/redhat/el5/en/x86_64/dag/RPMS/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
% sudo rpm -K rpmforge-release-0.3.6-1.el5.rf.*.rpm"
% sudo rpm -ivh rpmforge-release-0.3.6-1.el5.rf.*.rpm"

ปิดการใช้งาน rpmforge โดยแก้ไขไฟล์นี้และตั้งค่าการเปิดใช้งาน = 0% sudo vi /etc/yum.repos.d/rpmforge.repo

% grep rpmforge ~/.aliases
alias rpmforge "sudo yum --disablerepo='*' --enablerepo='rpmforge'"

% rpmforge install libyaml libyaml-devel

% sudo yum list installed | grep libyaml
libyaml.x86_64          0.1.4-1.el5.rf  @rpmforge                               
libyaml-devel.x86_64    0.1.4-1.el5.rf  @rpmforge  

libyaml-devel เป็นกุญแจสำคัญ

% tar zxvf ruby-1.9.3-p448.tar.gz
% cd ruby-1.9.3-p448
% ./configure -prefix=$HOME/ruby-1.9.3-p448
% make ; make install
% cd $HOME; ln -s ./ruby-1.9.3-p448 ruby

อัปเดตพา ธ และแหล่งที่มาของคุณ. cshrc

% echo $PATH
/home/francis/ruby/bin:/usr/sbin:/home/francis/bin:/home/francis/jdk1.7.0_25/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin

% which ruby
/home/francis/ruby/bin/ruby

% gem update --system

ตั้งค่า GEM_HOME ของคุณเป็น. cshrc และที่มา

% echo $GEM_HOME
% /home/francis/ruby/lib/ruby/gems

% gem install mysql2 pg ruby-debug-ide rails capistrano capistrano-ext passenger

1

หากคุณกำลังสร้างทับทิมจากแหล่งที่มา (ฉันสร้าง 1.9.3 บน Fedora 20) คุณจะต้องใช้สิ่งนี้ก่อนที่คุณจะทำการกำหนดค่า / สร้างเพื่อสร้างทับทิม:

yum install libyaml-devel

(นอกเหนือจาก yum install libyaml.) คล้ายกับคำตอบของฟรานซิสโดยใช้ rpmforge ด้านบน


ได้รับการยืนยันใน Centos 5.6
marcovtwout

1

ฉันพบข้อผิดพลาดนี้และพบว่าฉันติดตั้ง Ruby รุ่นต่างๆกับ HomeBrew พร้อมด้วยอัญมณีมากมายที่ฉันไม่ได้ใช้อีกต่อไป ทำความสะอาดเต็มรูปแบบเช่นนี้:

$ brew remove --force ruby # remove all versions installed
$ sudo rm -rf /usr/local/lib/ruby # remove all gems and leftover files
$ brew install ruby
$ gem install bundler
$ bundle install

หากคุณไม่ได้ใช้ a Gemfileให้แน่ใจว่าคุณรู้ว่าจะติดตั้งอัญมณีใด


1

ในกรณีของฉันทั้งหมดที่ฉันต้องทำคือ

rm -rf /usr/local/lib/ruby/gems/2.4.0/gems/psych-2.2.4
rm -rf /usr/local/lib/ruby/gems/2.4.0/extensions/x86_64-darwin-16/2.4.0/psych-2.2.4

ตอนนี้ FWIW gem listรวมถึง

psych (2.2.4, default: 2.2.2)

ฉันใช้ macOS Sierra และมันใช้งานได้สำหรับฉัน เป็นวิธีแก้ไขปัญหาเดียวกันที่รายงานในปัญหา GitHub นี้ที่นี่ลองใช้วิธีแก้ปัญหานี้ก่อนเนื่องจากง่ายและรุนแรงน้อยกว่าวิธีอื่นในหน้านี้
mljrg

1
  • อูบุนตู
  • ใช้ RVM
  • เหตุผล: เวอร์ชันพลอย Psych ที่ขัดแย้งกันระหว่างทับทิม 2.4.4 และทับทิม 2.5.1

ฉันใช้เวลาสองสามชั่วโมงในการพยายามทำให้ข้อผิดพลาดหายไปและไม่มีคำตอบใดที่ตรงกับกรณีของฉันดังนั้นฉันคิดว่าฉันจะโพสต์ว่าจะแก้ไขได้อย่างไร ...

ในกรณีของฉันเมื่อฉันวิ่งผมก็มีการส่งออกต่อไปนี้:gem list | grep psychpsych(default: 3.1.0, default: 3.0.2)

เห็นได้ชัดว่าตั้งแต่รุ่น 2.5.0 ทับทิมขึ้นอยู่กับรุ่นใหม่กว่าของ Psych (3.1.0) และการตั้งค่าทั้งสองเป็นค่าเริ่มต้นทำให้ทุกอย่างยุ่งเหยิง โปรดสังเกตว่าฉันไม่เคยพบว่าทำไมทั้งสองถูกตั้งเป็นค่าเริ่มต้น - ฉันเช็ดออกรุ่น rvm และ ruby ​​จากคอมพิวเตอร์ของฉันเนื่องจากสิ่งนี้

ดังนั้นเพื่อที่จะเอารุ่นเก่า (3.0.2) ~/.rvm/gems/ruby-x.x.x@global/specifications/defaultจากการถูกตั้งเป็นค่าเริ่มต้นหัว หากคุณเรียกใช้ls | grep psychมันจะคืนค่าอัญมณีทั้งสองรุ่นที่นี่ หากคุณต้องการบำรุงรักษา 3.1.0 เป็นค่าเริ่มต้นให้เรียกใช้mv psych-3.0.2.gemspec ../แล้วลองเรียกใช้gemlistเพื่อให้แน่ใจว่ามีการแสดงรายการรุ่นเดียวเป็นค่าเริ่มต้นทันที ...

TL; DR cd /.rvm/gems/ruby-x.x.x@global/specifications/default mv psych-3.0.2 ../

หวังว่านี่จะช่วยใครซักคน!


0

สำหรับ Snow Leopard การแก้ปัญหาโดย Catharz ไม่ได้ผลสำหรับฉัน อย่างไรก็ตามวิธีนี้แก้ไขได้:

brew install libyaml
rvm get head
rvm reinstall 1.9.3  --with-gcc=clang

(rvm ติดตั้งใหม่ให้ฉันเตือนเกี่ยวกับเสียงดังกราวไม่ได้มีตัวเลือก "- ด้วย-libyaml" แต่มันแก้ไขข้อผิดพลาดโดยไม่คำนึงถึง)


0

สิ่งนี้ใช้ได้กับฉันอย่างน้อยใน Ubuntu 10.04

$ sudo apt-get install libtool

$ rvm ติดตั้งใหม่ 1.9.3


0

บน Solaris:

# sudo crle -64 -l /usr/local/lib

เพื่อเพิ่มลง/usr/local/libในพา ธ การค้นหาไลบรารีแบบแบ่งใช้ (ดู man crle)


คำถามเกี่ยวกับ os x นี้
zishe

0

เมื่อฉันเปลี่ยนจาก 64 บิตเป็น 32 บิตบน Snow Leopard 10.6.8 ฉันได้ติดตั้ง ruby ​​(ใช้ rvm) ใหม่เพื่อรันบน 32 บิตและพบปัญหาเดียวกัน ดังนั้นฉันแค่ 'ล้าง' ทุกสิ่งที่แคช rvm ก่อนและแก้ไขปัญหา หวังว่าเคล็ดลับนี้จะช่วยให้ใครบางคน

rvm ล้างทั้งหมด

rvm ติดตั้ง ruby_version_here // (ด้วยวิธีนี้ rvm จะดาวน์โหลด yaml ใหม่ล่าสุดอีกครั้ง)

BTW หากคุณยังคงพบปัญหานี้ฉันคิดว่าคุณสามารถลอง:

อัญมณีติดตั้ง Psych

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.