วิธีตั้งค่า Ruby GEM_HOME และ GEM_PATH


10

ฉันเป็นผู้ใช้ NOVICE ของ Linux และใช้ Linux mint 17.1

ฉันติดตั้ง Linux Mint 20 ครั้งใน 3 วันล่าสุดสำหรับปัญหานั้น แต่ไม่สามารถแก้ไขได้

ฉันพยายามติดตั้ง ruby ​​บนรางโดยใช้ rvm สิ่งที่เกิดขึ้นคือถ้าเริ่มการติดตั้ง Linux ใหม่และลองติดตั้ง gem และ ruby ​​และสิ่งต่าง ๆ ในเซสชันเทอร์มินัลหนึ่งติดตั้งสำเร็จแล้วทันทีที่ฉันปิดเซสชันเทอร์มินัล .

ด้วยการติดตั้งใหม่มากกว่า 20 ครั้งในช่วง 3 วันที่ผ่านมาฉันได้ค้นหาบนเว็บด้วย ฉันได้รับคำสั่งให้ใส่ตัวแปรสภาพแวดล้อมใน/etc/environmentพา ธ echoed ในเซสชันนั้นและวาง/etc/environmentไฟล์นั้นไว้ในไฟล์

แม้ตอนนี้ฉันไม่ได้รับอัญมณีที่ติดตั้ง

เมื่อฉันพิมพ์rvm -vฉันได้รับข้อผิดพลาดดังต่อไปนี้

Warning: PATH set to RVM ruby but GEM_HOME and/or GEM_PATH not set, see:
    https://github.com/wayneeseguin/rvm/issues/3212

Warning! PATH is not properly set up, $GEM_HOME is not set,
         usually this is caused by shell initialization files - check them for 'PATH=...' entries,
         it might also help to re-add RVM to your dotfiles: 'rvm get stable --auto-dotfiles',
         to fix temporarily in this shell session run: 'rvm use ruby-2.2.2'.
rvm 1.26.11 (latest) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

ฉันเป็นมือใหม่มากเมื่อพูดถึงการทำงานกับเทอร์มินัลฉันสามารถรันคำสั่งพื้นฐานสองสามข้อเพื่อทำงานกับทับทิม

ผมอยากจะรู้ว่า

  1. วิธีการตั้งค่า PATH
  2. วิธีตั้งค่า GEM_HOME
  3. วิธีตั้งค่า GEM_PATH

ด้านล่างเป็นเส้นทางเต็มของฉัน

echo $PATH
/home/sharif/.rvm/gems/ruby-2.2.2/bin:/home/sharif/.rvm/gems/ruby-2.2.2@global/bin:/home/sharif/.rvm/rubies/ruby-2.2.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/sharif/.rvm/bin

mr @mohsen pahlevanzades ฉันขอถามว่าอะไรคือจุดของการลบสองบรรทัดถ้าคุณไม่รังเกียจที่จะบอกฉันขอแสดงความนับถือ
Amjad

ถ้าฉันจำได้ถูกต้องคุณเขียนถึงหรือขอบคุณ
PersianGulf

คำตอบ:


18

ดูเหมือนว่าคุณต้องการคำสั่งexportสำหรับการตั้งค่าตัวแปรสภาพแวดล้อม:

export PATH=$PATH':/path/to/add'
export GEM_HOME=$HOME/.gem
export GEM_PATH=$HOME/.gem

แม้ว่าจะมีผลสำหรับเซสชันปัจจุบันเท่านั้น ~/.bashrcจะทำให้พวกเขาอย่างถาวรมากขึ้นเพิ่มบรรทัดเหล่านั้นให้กับคุณ


3

โดยทั่วไปนี่หมายความว่า rvm ไม่ได้ตั้งค่าอย่างถูกต้อง ข้อผิดพลาดทั่วไปคือคุณไม่ได้แก้ไข.bashrcอย่างถูกต้อง (หรือคล้ายกัน) หรือคุณไม่ได้โหลดเทอร์มินัลใหม่

คุณไม่ควรตั้งค่า GEM_HOME หรือ GEM_PATH ด้วยตนเองเมื่อใช้ rvm

คุณสามารถลองsource ~/.rvm/scripts/rvmดูว่าใช้งานได้หรือไม่

อาจเป็นไปได้ว่าคุณยังไม่ได้สร้าง gemset อย่าใช้ rvm และ sudo Rvm ทำงานได้ดีที่สุดเมื่อติดตั้งในบัญชีของคุณไม่ระบบกว้าง


คุณสามารถเพิ่มลงsource ~/.rvm/scripts/rvmในของคุณ~/.bashrcเพื่อให้แน่ใจว่าโหลดทุกครั้งที่คุณเริ่มเชลล์ใหม่
Niel de Wet

2

นี่คือสิ่งที่ฉันเรียนรู้และวิธีแก้ไขปัญหาที่พบบ่อยของ GEM_HOME และ GEM_PATH ตัวแปรสภาพแวดล้อมไม่ได้ตั้งข้อผิดพลาด


พื้นหลัง

ควรติดตั้ง RVM เพื่อสร้าง GEM_HOME และ GEM_PATH env vars สำหรับ RVM แต่ละตัวที่ติดตั้งและทำเช่นนั้น แต่มีข้อผิดพลาดที่เห็นได้ชัดเช่นในบางกรณี env vars จะถูกตั้งค่าไว้ชั่วคราวและเพื่อตั้งค่าอีกครั้งคุณต้องตั้งค่าด้วยบรรทัดคำสั่ง ฉันพบวิธีแก้ปัญหาเพื่อให้ env vars ยังคงมีอยู่สำหรับ RVM

วิธีแก้ปัญหา

  1. ค้นหาที่ใช้งาน (ใน RVM) ในรุ่นทับทิมของคุณ:$rvm listบนเซิร์ฟเวอร์การผลิตของคุณไปที่ไดเรกทอรีแอปและประเภทของคุณ สิ่งนี้จะส่งผลให้มีรายการของเวอร์ชัน Ruby ที่ติดตั้งและเวอร์ชันใดที่ใช้งานได้สำหรับ RVM ตัวอย่างของการตอบสนอง:

    rvm rubies ruby-1.9.3-p547 [ x86_64 ] => ruby-1.9.3-p551 [ x86_64 ]

ดังนั้นฉันรู้ว่า RVM กำลังใช้เวอร์ชันruby-1.9.3-p551อยู่ คุณต้องการข้อมูลนี้สำหรับขั้นตอนต่อไป

  1. รับเส้นทางสำหรับ GEM_PATH และ GEM_HOME : $rvm use ruby-1.9.3-p551คุณทำเช่นนี้โดยการดำเนินการจากบรรทัดคำสั่ง จากนั้นยังคงมาจากเส้น comman envแสดงการตั้งค่าสภาพแวดล้อมการใช้คำสั่ง ค้นหา GEM_PATH และ GEM_HOME และคัดลอกทั้งหมดไปยังพื้นที่ทำงาน

    GEM_PATH=/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global GEM_HOME=/usr/local/rvm/gems/ruby-1.9.3-p551

  2. ตั้งค่าตัวแปรสภาพแวดล้อม GEM_HOME และ GEM_PATH:ตอนนี้ตั้งค่าตัวแปรสภาพแวดล้อมเหล่านี้เป็นหนึ่งในไฟล์โปรไฟล์จำนวนมาก ฉันต้องการบำรุงรักษาโครงสร้างการแยกเวอร์ชัน RVM ดังนั้นฉันจึงอัปเดต /profile.d/appspecific.sh ด้วยสองบรรทัดนี้:

    export GEM_PATH=/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global export GEM_HOME=/usr/local/rvm/gems/ruby-1.9.3-p551


เห็นได้ชัดว่า GEM_HOME และ GEM_PATH ไม่เฉพาะเจาะจงกับ RVM ใช่หรือไม่
barlop

2

ฉันพบว่า. profile ได้รับการโหลดครั้งสุดท้ายและนั่นทำให้ ~ / .local / bin และ ~ / bin ที่ด้านหน้าของเส้นทาง ฉันย้าย /etc/profile.d/rvm.sh ไปที่ ~ / .rvm และที่ส่วนท้ายสุดของ. profile ฉันเพิ่ม "source ~ / .rvm / rvm.sh" และข้อผิดพลาดหายไป ฉันใช้ Linux Mint 18.3 ฉันมี pyenv, rvm และ sdkman ติดตั้งและพวกเขาทั้งหมดต้องการที่จะเป็นครั้งสุดท้าย พวกเขาทำงานได้ดีในตอนนี้ :)

หากเป็นระบบที่ใช้ร่วมกันให้ย้าย rvm.sh ไปที่ไหนสักแห่งนอกเส้นทางและผู้ใช้รายอื่นสามารถหาแหล่งมาได้เช่นจาก /opt/rvm/rvm.sh เป็นต้น


1

เช่นเดียวกับที่กล่าวถึง @coteyr คุณไม่ควรตั้งค่าด้วยตนเองGEM_HOMEและGEM_PATHrvmเมื่อใช้ หากคุณตรวจสอบตัวแปรสภาพแวดล้อม PATH ของคุณโดยการเรียกใช้$ echo $PATHและ $ HOME / .rvm / bin เป็นส่วนหนึ่งของมันคุณต้องแน่ใจว่าเทอร์มินัลของคุณรันคำสั่งเป็นเชลล์ล็อกอิน ตัวอย่างเช่นหากคุณอยู่บนเครื่อง Ubuntu คุณเปิดเทอร์มินัลแล้วไปที่: เมนู> แก้ไข> การตั้งค่าโปรไฟล์> คำสั่งจากนั้นเลือก "เรียกใช้คำสั่งเป็นเชลล์เข้าสู่ระบบ"

สิ่งนี้ดูเหมือนจะเป็นปัญหาเก่าrvmที่ฉันคิดว่าไม่สำคัญในการแก้ไขเนื่องจากมันมีอยู่พักหนึ่งแล้ว


1

สำหรับการเติม$GEM_PATHด้วยระบบของฉัน (Manjaro / Arch) gemsฉันเพิ่มลงใน.bashrc:

for _entry in /usr/lib/ruby/gems/*; do
  if [[ -d $_entry ]]; then
    # TODO: Add only if not there already
    export GEM_PATH=$_entry:$GEM_PATH
  fi
done
unset _entry
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.