ปัญหาการอนุญาตติดตั้งอัญมณี


90
qichunren@zhaobak:~> gem install hpricot
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8 directory.

ผู้ใช้ล็อกอินปัจจุบันคือ qichunren และผู้ใช้ qichunre ได้รับอนุญาตเขียนด้วย. gm dir ฉันอยากทราบว่าทำไม gem ไม่ติดตั้งไฟล์ลงใน. gem dir ที่บ้านของฉันก่อน? เหตุใดอัญมณีของฉันจึงต้องการติดตั้งไฟล์ใน /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8 เป็นอันดับแรก

คำตอบ:


53

สำหรับการติดตั้ง Ruby ทั่วทั้งระบบให้กลายเป็น root ตัวอย่างเช่น:

$ sudo gem install hpricot

อย่างไรก็ตามแนวทางที่ทันสมัยในหลาย ๆ สถานการณ์รวมถึงในการพัฒนาคือการใช้เครื่องมือที่ช่วยให้คุณติดตั้งและใช้ Ruby ได้อย่างง่ายดายในฐานะผู้ใช้ทั่วไป วิธีนี้ช่วยให้คุณหลีกเลี่ยงการรูทได้ มีเครื่องมือดังกล่าวไม่กี่คนที่ใช้งานหนึ่งที่ผมเป็นอยู่และRVM

# install rvm into your ~
$ \curl -sSL https://get.rvm.io | bash -s stable

# install latest version of ruby into your ~
$ rvm install ruby

# installs a gem into your ~
$ gem install $SOME_GEM_NAME

41
อย่าใช้ sudo เพราะคุณจะติดตั้งเป็นรูทและไม่สามารถเข้าถึงได้เมื่อคุณใช้ผู้ใช้ปกติของคุณ ใช้ RVM และอัญมณี
Ryan

4
เช่นrvm gem install hpricot
AJP

4
คุณอาจต้องการลบคำตอบนี้ คุณจะรักษาคะแนนและช่วยให้ผู้คนปวดหัวได้มาก
Olhovsky

175

ลองตั้งค่าGEM_HOMEและGEM_PATHการ~/.gem,

สำหรับเซสชันเทอร์มินัลปัจจุบันเพียงพิมพ์:

export GEM_HOME=~/.gem
export GEM_PATH=~/.gem

หากคุณต้องการตั้งค่าสิ่งเหล่านี้ทุกครั้งที่คุณเปิดเทอร์มินัลให้เพิ่มคำสั่งด้านบนลงใน~/.bashrcไฟล์ของคุณ

สำหรับวิธีแก้ปัญหาที่ครอบคลุมยิ่งขึ้นในการตั้งค่าสภาพแวดล้อมทับทิมแบบกำหนดเองโปรดดูบทช่วยสอนนี้จาก Site5KBซึ่งอธิบายการใช้.gemrcไฟล์


12
นี่คือคำตอบที่แท้จริง อย่าไปใช้ sudo ติดตั้งสิ่งต่าง ๆ หากคุณไม่จำเป็นต้องทำ
Jesse O'Brien

ดูเหมือนว่าลิงก์ในคำตอบจะมีการเปลี่ยนแปลง ขั้นตอนแรกจากคู่มือนี้ทำให้ฉันประสบความสำเร็จเช่นเดียวกัน: kb.site5.com/ruby-on-rails/…
Mike S

@MikeSlutsky ขอบคุณที่ชี้ให้เห็น ในอนาคตหากคุณพบลิงก์เสีย (หรือลิงก์ที่เปลี่ยนไปและไม่มีความเกี่ยวข้องอีกต่อไป) โปรดอย่าลังเลที่จะส่งคำแนะนำ "แก้ไข" หากคุณคิดว่าคุณมีสิ่งทดแทนที่เหมาะสม
meagar

@meagar ฉันอัปเดตลิงก์โดย @ Mike-Slutsky แต่สังเกตเห็นว่าเป็นเอกสารสำหรับ.gemrcการกำหนดค่า สำหรับมือใหม่เรื่องพลอยทับทิมนี่เป็นเรื่องที่น่ากลัวเมื่อฉันเข้าใจวิธีแก้ปัญหาของคุณว่าจะง่ายกว่าที่ฉันเพิ่มเข้าไป วิธีแก้ปัญหานี้ใช้ได้กับฉัน แต่ในฐานะมือใหม่หัดทับทิมโปรดยืนยันว่าการเปลี่ยนแปลงของฉันเป็นไปตามเจตนาของคุณ
David LeBauer

1
อย่าลืมเพิ่ม GEM_PATH ของคุณไปยังเส้นทางส่วนกลาง นี่คือสิ่งที่ฉันทำ:PATH=$HOME/.gems/bin:$HOME/bin:$PATH GEM_HOME=$HOME/.gems GEM_PATH=$HOME/.gems:/var/lib/gems/2.1.0:/usr/lib/ruby/gems/2.1.0 export PATH GEM_HOME GEM_PATH
Spone

10

ฉันได้รับข้อผิดพลาดนี้บนเซิร์ฟเวอร์ที่ใช้ร่วมกันของฉันผ่านโฮสติ้ง 1and1 โซลูชันของฉันกำลังเพิ่ม--user-installตัวเลือกซึ่งเพิ่งติดตั้งสำหรับผู้ใช้ที่ลงชื่อเข้าใช้ของคุณ (ซึ่งเป็นสิ่งที่คุณต้องการในสภาพแวดล้อมเซิร์ฟเวอร์ที่ใช้ร่วมกัน) การติดตั้ง sass

gem install sass --user-install

ที่น่าสนใจฉันได้รับข้อผิดพลาดนี้ถึงแม้ว่าฉันได้--user-installระบุไว้
sschuberth

4

หากคุณใช้ rbenv และสิ่งนี้เกิดขึ้นคุณต้องเพิ่มสิ่งต่อไปนี้ใน. bash_profile ของคุณ:

export RBENV_ROOT="$HOME/.rbenv"

if [ -d $RBENV_ROOT ]; then
  export PATH="$RBENV_ROOT/bin:$PATH"
  eval "$(rbenv init -)"
fi

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