ฉันจะแก้ไขข้อผิดพลาด“ คุณไม่มีสิทธิ์เขียนในไดเร็กทอรี / usr / bin” เมื่อติดตั้ง Rails ได้อย่างไร


136

ฉันกำลังพยายามติดตั้ง Rails 3 บน MacBook Pro รุ่นใหม่ที่ใช้ OS X 10.6.3, Ruby 1.8.7 และ Rails 2.3.5 และฉันสงสัยว่าฉันแอบไปเองหรือเปล่า จนถึงตอนนี้ฉันเรียกใช้คำสั่งเหล่านี้:

$ gem update --system
$ gem install arel tzinfo builder memcache-client rack rack-test rack-mount erubis mail text-format thor bundler i18n
$ gem install rails --pre

อย่างไรก็ตามเมื่อฉันรันคำสั่งสุดท้ายฉันได้รับข้อผิดพลาดนี้:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /usr/bin directory.

ฉันคิดว่ามันต้องการให้ฉันเรียกใช้คำสั่งด้วยsudoเพื่อให้สามารถเขียนทับ/usr/bin/railsได้ แต่ถ้าฉันทำเช่นนั้นฉันจะไม่เขียนทับไฟล์ปฏิบัติการ Rails 2.3.5 ของฉันหรือไม่? ฉันไม่อยากทำแบบนั้น แต่ฉันต้องการเก็บ Rails ทั้งสองเวอร์ชันไว้แทน ฉันจะทำอย่างไร?


6
ฉันได้รับข้อผิดพลาดเดียวกันกับคำสั่งแรกให้ใช้คำสั่งนี้sudo gem update --system -n /usr/local/bin
nitish005

1
-n คืออะไร?
Scott Romack

แค่จะใส่มันออกมาที่นี่การรีสตาร์ทเทอร์มินัลก็แก้ปัญหานี้ให้ฉันได้
ashwood

คำตอบ:


14

ฉันขอแนะนำให้ใช้RVM เพื่อให้คุณสามารถติดตั้ง Ruby / Rails ได้หลายเวอร์ชันพร้อมกับโปรไฟล์อัญมณีและโดยพื้นฐานแล้วจะเก็บอัญมณีทั้งหมดของคุณไว้จากกัน คุณอาจต้องการดูโพสต์ที่คล้ายกันฉันจะติดตั้ง Ruby บน Rails 3 บน OSX ได้อย่างไร


การทำเช่นนั้นเท่านั้นที่ช่วยแก้ปัญหาที่คล้ายกันกับฉันด้วยข้อความแสดงข้อผิดพลาดเดียวกัน
Rich Stone

483

ใช้-nพารามิเตอร์เพื่อติดตั้งเช่น cocoapods:

sudo gem install cocoapods -n /usr/local/bin

7
ทำไมเราถึงต้องการสิ่งนี้?
nenchev

29
ล้มเหลวบน MacOS เว้นแต่คุณจะระบุ -n / usr / local / bin ขอบคุณสำหรับการแก้ปัญหา
Sacky San

3
-n หมายถึงอะไร?
allenlinli

7
อ้างอิงจากguide.rubygems.org/command-reference/#gem-install -n ระบุไดเร็กทอรีที่เป็นที่ตั้งของไบนารี ฉันต้องการ-n /usr/local/binบน Mac ของฉันด้วย ฉันวิ่งwhich podเพื่อระบุตำแหน่งที่มีอยู่ก่อนที่จะใช้ตัวเลือก -n ซึ่งแท้จริงแล้วคือ / usr / local / bin
mwu

4
ฉันแน่ใจว่า RVM นั้นยอดเยี่ยม แต่นี่เป็นคำตอบที่ดีกว่าที่ช่วยแก้ปัญหาเฉพาะหน้าได้โดยตรงโดยไม่ต้องส่งฉันลงไปในโพรงกระต่าย
Wayne

63

การใช้แฟล็ก -n / usr / local / binใช้งานได้ แต่ฉันต้องกลับมาที่หน้านี้ทุกครั้งที่ต้องการอัปเดตแพ็คเกจอีกครั้ง ฉันจึงคิดหาวิธีแก้ไขแบบถาวรสำหรับสิ่งนี้

สำหรับผู้ที่สนใจแก้ไขปัญหานี้อย่างถาวร :

สร้างไฟล์ ~ / .gemrc

vim .gemrc

โดยมีเนื้อหาดังนี้

:gemdir:
   - ~/.gem/ruby
install: -n /usr/local/bin

ตอนนี้คุณสามารถรันคำสั่งของคุณได้ตามปกติโดยไม่ต้องใช้แฟล็ก -n

สนุก!


vim .gemrcวิธีการเขียน cmd นี้
Chandni

ฉันไม่แน่ใจว่าสิ่งนี้จะใช้ได้ใน Window $ แต่ฉันเดาว่าคุณสามารถใช้ Notepad ได้
Francois Nadeau

ขอบคุณเช่นเดียวกับคุณฉันเบื่อที่จะมองหาคำต่อท้ายนี้ทุกครั้งที่ต้องอัปเดต!
Paul-Etienne

52
sudo gem install cocoapods --pre -n /usr/local/bin

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


ฉันมีปัญหานี้และคำตอบนี้ใช้ได้กับฉัน! ฉันแทนที่cocoapodsด้วยการพึ่งพาที่ฉันต้องการ
chris

34

คุณสามารถใช้ได้ sudo gem install -n /usr/local/bin cocoapods

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


6

ในการแก้ไขข้อผิดพลาดเฉพาะของคุณคุณต้องเรียกใช้คำสั่งนั้นเป็น sudo เช่น:

sudo gem install rails --pre

1
NO ใช้ rvm หรือ rbenv ... อย่าเพิ่ง sudo
doublejosh

5

ข้อผิดพลาดนี้เกิดขึ้นหลังจากติดตั้ง RVM อย่างถูกต้อง วิธีแก้ไข: รีบูต Terminal

อ้างอิงบทแนะนำการติดตั้ง RVM ของ RailsCast


ไม่ใช่ 7 ปีต่อมา แต่จะใช้ได้เช่นกันหากคุณกำลังทำงานกับระบบย่อย windows bash เพียงแค่ออกจากทุบตีและเปิดใช้งานอีกครั้ง ขอบคุณ.
Pedro Madrid

0

สำหรับฉันมีบางอย่างที่ได้ผลซึ่งฉันพบในคำตอบนี้จากคำถามที่คล้ายกัน อาจจะไม่ช่วย OP แต่อาจมีคนอย่างฉันที่มีปัญหาคล้ายกัน

คุณควรใช้ rvm จริง ๆแต่เนื่องจากไม่มีใครอธิบายให้คุณทราบถึงวิธีการทำสิ่งนี้โดยไม่ใช้ rvmคุณไปที่นี่:

sudo gem install tzinfo builder memcache-client rack rack-test rack-mount \
  abstract erubis activesupport mime-types mail text-hyphen text-format   \
  thor i18n rake bundler arel railties rails --prerelease --force

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