เกิดข้อผิดพลาดขณะติดตั้ง gem บน Ubuntu 12.04 aws ec2

ฉันได้รับอินสแตนซ์ Ubuntu 12.04 ใน AWS EC2
ฉันแค่ต้องการ gem install rails
แต่มันแสดงข้อความแสดงข้อผิดพลาดนี้
สิ่งนี้เกิดจากความแตกต่าง gem env ระหว่าง sudo gem env หรือไม่
มีวิธีใดบ้างในการแก้ปัญหานี้ยกเว้น rvm implode?
ความเสี่ยงในการใช้ rvmsudo แทนคืออะไร

Fetching: atomic-1.1.15.gem (100%)
ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /usr/local/rvm/gems/ruby-1.9.3-p545@global directory.

สภาพแวดล้อมอัญมณี:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.2.2
  - RUBY VERSION: 1.9.3 (2014-02-24 patchlevel 545) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/local/rvm/gems/ruby-1.9.3-p545@global
  - RUBY EXECUTABLE: /usr/local/rvm/rubies/ruby-1.9.3-p545/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/rvm/gems/ruby-1.9.3-p545@global/bin
  - SPEC CACHE DIRECTORY: /home/ubuntu/.gem/specs
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/local/rvm/gems/ruby-1.9.3-p545@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--no-ri --no-rdoc"
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /usr/local/rvm/gems/ruby-1.9.3-p545@global/bin
     - /usr/local/rvm/rubies/ruby-1.9.3-p545/bin
     - /usr/local/sbin
     - /usr/local/bin
     - /usr/sbin
     - /usr/bin
     - /sbin
     - /bin
     - /usr/games
     - /usr/local/rvm/bin

sudo gem env:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.15
  - RUBY VERSION: 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
  - INSTALLATION DIRECTORY: /var/lib/gems/1.8
  - RUBY EXECUTABLE: /usr/bin/ruby1.8
  - EXECUTABLE DIRECTORY: /usr/local/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /var/lib/gems/1.8
     - /home/ubuntu/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--no-ri --no-rdoc"
  - REMOTE SOURCES:
     - http://rubygems.org/

person user3411589    schedule 13.03.2014    source แหล่งที่มา


คำตอบ (2)


สิ่งนี้เกิดจากความแตกต่าง gem env ระหว่าง sudo gem env หรือไม่

อาจเป็นไปได้ว่า rvm Ruby นั้นแยกจากกันและแตกต่างจากสภาพแวดล้อม Ruby ของระบบ และขึ้นอยู่กับตำแหน่งที่ gem ถูกดำเนินการตามเส้นทาง

อย่างไรก็ตาม ดูเหมือนว่าคุณกำลังใช้งานการติดตั้ง rvm Ruby gem ในฐานะผู้ใช้อื่นในฐานะเจ้าของ /usr/local/rvm/gems และเป็นไดเรกทอรีย่อย ซึ่งควรจะติดตั้งเป็น rvmsudo

คุณรันการติดตั้ง rvm gem ในฐานะผู้ใช้คนใด

คุณสามารถลองสิ่งนี้:

chown -R user-you-want-to-run-command-as.user-you-want-to-run-command-as /usr/local/rvm/gems

หรือลองเหมือนที่คุณพูดถึง rvmsudo ความเสี่ยงเนื่องจากไฟล์บางไฟล์อาจมี root ความเป็นเจ้าของ ซึ่งคุณอาจไม่ต้องการหากคุณต้องการความปลอดภัยมากขึ้น

โปรดทราบว่า rvmsudo ไม่ใช่วิธีที่แนะนำ แต่ควรใช้ rvm ในไดเร็กทอรีในเครื่องของคุณ หากคุณต้องการลบออก คุณสามารถทำได้:

rvmsudo rvm implode
sudo rm -rf /etc/rvmrc /etc/profile.d/rvm.sh /usr/local/rvm

จากนั้นติดตั้งใหม่ด้วยเพียง rvm

person Rico    schedule 13.03.2014

rvm ถูกสร้างขึ้นเพื่อใช้โดยไม่มีสิทธิ์ sudo หรือสิทธิ์เฉพาะ/sudo ติดตั้งใหม่จะได้รับการชื่นชมมากขึ้น ทำความสะอาดการติดตั้ง rvm ปัจจุบัน rvmsudo rvm implode sudo rm -rf /etc/rvmrc /etc/profile.d/rvm.sh /usr/local/rvm จากนั้นปิดคอนโซล / ทุบตี / เทอร์มินัลทั้งหมดแล้วเข้าสู่ระบบอีกครั้งกับผู้ใช้ที่คุณต้องการใช้ rvm ด้วยและติดตั้งอีกครั้ง

person The86Freak    schedule 22.07.2014