รับ“ คำเตือน! PATH ไม่ได้ตั้งค่าอย่างถูกต้อง” เมื่อใช้ rvm ใช้ 2.0.0 - ค่าเริ่มต้น


115

ข้างต้นไม่ทำงานครั้งแรกทำงานครั้งที่ 2

ลองตั้งค่าเวอร์ชัน Ruby เป็น 2.0.0 สำหรับหน้าต่างเชลล์ใหม่

การทำ

$ rvm use 2.0.0 --default

จะช่วยให้

Warning! PATH is not properly set up, '/home/durrantm/.rvm/gems/ruby-1.9.3-p125/
bin' is not at first place,
         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 --au
to-dotfiles',
         to fix temporarily in this shell session run: 'rvm use ruby-1.9.3-p125'
.
Using /home/durrantm/.rvm/gems/ruby-2.0.0-p247

จากนั้นทำเช่นเดียวกัน

$ rvm use 2.0.0 --default

ตอนนี้ให้ไม่มีข้อผิดพลาดกล่าวคือ

$ rvm use 2.0.0 --default
Using /home/durrantm/.rvm/gems/ruby-2.0.0-p247
durrantm.../durrantm$ 

แต่ windows ใหม่ยังคงให้ทับทิม 1.9.3 ไม่ใช่ 2.0.0

.bashrcไฟล์ของฉันมีอยู่:

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
[[ -s "/home/durrantm/.rvm/scripts/rvm" ]] && . "/home/durrantm/.rvm/scripts/rvm"

.bash_profile ของฉันมี:

source ~/.profile
case $- in *i*) . ~/.bashrc;; esac

พยายาม

rvm get stable

ดูเหมือนจะใช้งานได้ แต่ในตอนท้ายของเอาต์พุตสีเขียวจำนวนมากจะแสดง:

Could not update RVM, get some help at #rvm IRC channel at freenode servers.

หน้าต่างเทอร์มินัลใหม่พร้อมrvm list rubiesแสดงสิ่งนี้:

$ rvm list rubies
Warning! PATH is not properly set up, '/home/durrantm/.rvm/gems/ruby-1.9.3-p125/bin' is not at first place,
         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-1.9.3-p125'.

rvm rubies

=> ruby-1.9.3-p125 [ x86_64 ]
   ruby-1.9.3-p194 [ x86_64 ]
 * ruby-2.0.0-p247 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

คำตอบ:


177

ฉันติดอยู่หลังจากถอนการติดตั้ง rvm ด้วย

rvm implode

หลังจากติดตั้ง rvm ใหม่ก็ได้รับข้อความแสดงข้อผิดพลาดเดียวกัน หลังจากดูหน้า git hub ของ wayne seguin เขาแสดงรายการเครื่องมือบนหน้าของเขาและแนะนำให้ใช้

rvm reset 

หลังการติดตั้ง สิ่งนี้แก้ไขข้อความแสดงข้อผิดพลาดของฉัน ไม่จำเป็นต้องแก้ไข PATH


13
หลังจากการตรวจสอบและการตรวจสอบอีกครั้งของฉัน~/.bashrc, ~/.bash_profileวิ่งrvm get stable --auto-dotfilesอีกครั้งการตรวจสอบ~/.bashrc, ~/.bash_profileและ~/.profileหลายต่อหลายครั้ง ... คำตอบนี้คงจนมัน! Ran: rvm resetและมันก็กำจัดคำเตือน! (IMHO ... RVM เป็นวิธีที่จู้จี้จุกจิกเกินไปในการเป็นคนแรกในเส้นทาง ... ถ้าฉันตั้งอย่างอื่นก่อนในเส้นทางของฉันฉันรู้ว่าฉันกำลังทำอะไร)
TrinitronX

11
: tu:rvm reset
JBird

18
สิ่งนี้ได้ผลสำหรับฉัน! ไม่จำเป็นต้องแก้ไข PATH เพียงแค่rvm reset(ข้อความจะแสดงครั้งสุดท้าย) ตอนนี้เมื่อใดก็ตามที่ฉันออกคำสั่ง rvm ไม่มีคำเตือน PATH อีกต่อไป
JohnRDOrazio

1
เมื่อฉันใช้ rvm รีเซ็ตปัญหาในเทอร์มินัลที่ฉันรันการรีเซ็ต rvm ได้รับการแก้ไข อย่างไรก็ตามเมื่อฉันย้ายไปที่เทอร์มินัลใหม่ข้อผิดพลาด / คำเตือนยังคงมีอยู่เว้นแต่ฉันจะไม่เรียกใช้ rvm รีเซ็ตอีกครั้ง
Apurva Mayank

rvm helpกลับคำใบ้ที่ค่อนข้างน่ากลัวสำหรับrvm reset: ลบค่าเริ่มต้นและการตั้งค่าระบบทั้งหมด 😄
Muhamed Huseinbašić

171

คำตอบคือใส่สิ่งนี้:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 
# Load RVM into a shell session *as a function*

** ที่ BOTTOM ** (บรรทัดสุดท้าย - สำคัญ!) ของไฟล์. bashrc ของฉัน ฉันมีในไฟล์. bash_profile ของฉัน (ฉันใช้ Ubuntu) และทำงานได้เพียงบางส่วนเท่านั้นที่นำไปสู่ข้อผิดพลาดที่สับสน


1
ดูเหมือนจะสวนทางกับการย้ายไปที่ด้านล่างหาก RVM ต้องการอยู่ที่ด้านบนสุดของห่วงโซ่?
reneruiz

9
rvm ต้องอยู่ที่ด้านล่างของไฟล์ในกรณีที่มีบรรทัดอื่น ๆ อยู่ใน. [ba | z] shrc ที่กำหนดเส้นทางใหม่ export PATH="/usr/local/bin:/usr/local/sbin:$PATH"สำหรับ Homebrew อาจเป็นเรื่องธรรมดาที่ขัดแย้งกับ rvm
TimeEmit

4
ฉันวางไว้ที่ด้านล่างของ. bash_profile ของฉันเนื่องจากฉันได้กำหนดเส้นทางใหม่หลายครั้ง นี้ยังได้ผล
Kyle Suss

1
สิ่งนี้ใช้ได้ดีสำหรับฉันหลังจากรีสตาร์ทเทอร์มินัล
NSTJ

24
นี่เป็นทางออกที่ถูกต้องแน่นอน แต่ถ้าคุณทำrvm resetมันจะทำเพื่อคุณโดยอัตโนมัติ ...
Ralph Callaway

34

อาจไม่ใช่วิธีที่ดีที่สุดในการแก้ไขปัญหานี้ แต่ฉันเพิ่มบรรทัดนี้ที่ปุ่มของ. zshrc ของฉัน (มันจะใช้งานได้ใน. bashrc ด้วย!)

export PATH="$GEM_HOME/bin:$PATH"

นี่เป็นวิธีแก้ปัญหาที่สะอาดกว่า IMO พร้อมการอัปเดต RVM
Dan L

ฉันไม่เห็นด้วยฉันคิดว่านี่เป็นวิธีที่ดีที่สุดในการแก้ไขปัญหานี้ :) ฉันต้องวางสิ่งนี้เป็นบรรทัดสุดท้ายของ. bash_profile ของฉันเนื่องจากมันทำงานล่าสุดและมีการประกาศพา ธ อื่นอยู่ในนั้น
applejack42

นี่เป็นหนึ่งในทางออกที่ดีที่สุดในการแก้ไขปัญหานี้ ใช้เวลาเกือบ 3 ชั่วโมงและในที่สุดก็ยอมแพ้: D คุณผู้ชาย :)

ฉันเพิ่มของฉันลงใน ~ / .profile ของฉันซึ่งโหลดโดยบรรทัดสุดท้ายของ ~ / bash_profile และตรวจสอบให้แน่ใจว่าไม่มีการอ้างอิงถึง $ PATH ในไฟล์อื่น ๆ วิธีนี้จะได้ผลใน Bash และถูกเลือกโดยเปลือกหอยอื่น ๆ
Dmitri

ใช่นี่เป็นทางออกที่ดีที่สุดเพราะมีความชัดเจนและระบุตำแหน่งที่จะส่งออก ขอบคุณ !!!
Albert Català

23

ฉันลองใช้วิธีแก้ปัญหาของ Michael Durrant แล้ว แต่ก็ไม่ได้ผลสำหรับฉัน แต่ฉันวิ่งrvm get stable --auto-dotfilesและมันก็เริ่มทำงานตามที่ต้องการ

หวังว่าจะช่วยได้


สิ่งนี้ใช้ได้กับ Mavericks ต้องรีสตาร์ทเทอร์มินัลเพื่อทำการแก้ไข
Brett Bim

1
บน Mac 10.12.3 พร้อม iTerm2 3.0.15, fish 2.5.0 และrvm defaultที่ด้านล่างของconfig.fishไฟล์ของฉัน คำสั่งrvm resetไม่ได้ช่วยเมื่อเปิดหน้าต่างเทอร์มินัลไว้ คำสั่งนี้ใช้งานได้ ผลลัพธ์ของฉัน: pastebin.com/1jUCSGnP
Pysis

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

ไม่มันยังคงใช้งานไม่ได้ในหน้าต่างเทอร์มินัลอื่น ๆ แม้ว่าจะรีสตาร์ท iTerm แล้วก็ตามและการตรวจสอบสคริปต์โปรไฟล์ใด ๆ ก็ไม่ได้ช่วยอะไรดังนั้นฉันจึงลบบรรทัดการกำหนดค่าทั้งหมดรีสตาร์ทคอมพิวเตอร์ติดตั้ง RVM ใหม่ด้วยการรวมฟังก์ชัน fish และเปิดใช้งาน หนึ่งrvm defaultบรรทัด ตอนนี้ดีขึ้นแล้ว ..
Pysis

8

นี่ไม่ใช่คำตอบสำหรับคำถามที่ถาม แต่เป็นคำถามที่เกี่ยวข้องซึ่งผู้แสดงความคิดเห็น / ผู้ตอบส่วนใหญ่ถาม - ทำไมคุณต้องใส่บรรทัด rvm ที่ด้านล่างของไฟล์ shell rc

คำตอบนั้นง่ายมาก

  1. รหัส rvm ที่โหลดจะทำให้ rvm Ruby binary ไดเร็กทอรีที่ "front" ของ$PATHและ
  2. .bashrc (หรือเทียบเท่าสำหรับเชลล์เริ่มต้นของคุณ) จะอ่านและตีความทีละบรรทัดจากบนลงล่าง

ลองนึกภาพสถานการณ์ต่อไปนี้:

$ echo $PATH
  /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin 

$ [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
  /Users/sankalp/.rvm/gems/ruby-1.9.3-p547/bin:/Users/sankalp/.rvm/gems/ruby-1.9.3-p547@global/bin:/Users/sankalp/.rvm/rubies/ruby-1.9.3-p547/bin:/Users/sankalp/bin:/usr/texbin/:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin

$ export PATH=<something>:$PATH
$ echo $PATH
  <something>:/Users/sankalp/.rvm/gems/ruby-1.9.3-p547/bin:/Users/sankalp/.rvm/gems/ruby-1.9.3-p547@global/bin:/Users/sankalp/.rvm/rubies/ruby-1.9.3-p547/bin:/Users/sankalp/bin:/usr/texbin/:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin

เห็นได้ชัดว่ามีบางสิ่งอยู่ในไฟล์ shell init หลังบรรทัด RVM และทำการเปลี่ยนแปลงใด ๆ กับ $ PATH โดยเฉพาะอย่างยิ่งถ้ามันนำหน้าไดเรกทอรีไป$PATHการเปลี่ยนแปลงเหล่านั้นจะผลักไดเร็กทอรีที่เพิ่มโดย rvm ลงจากตำแหน่งแรก RVM เมื่อเรียกใช้จะพบว่าไดเรกทอรีไบนารีทับทิมไม่ได้อยู่ที่จุดเริ่มต้น$PATHและ BAM! คุณจะได้รับคำเตือน :)

ฉันหวังว่าจะทำให้สิ่งต่างๆชัดเจน


6

เพียงแค่เพิ่มประสบการณ์ของผม: ถ้าคุณกำลังใช้.bash_profileการตรวจสอบถ้า.bashrcไม่ได้รบกวน การฆ่าเพื่อ.bashrcสนับสนุนการกำหนดค่า Bash เดียวโดย.bash_profileวิธีนี้ได้ผล


1
สิ่งนี้ช่วยแก้ปัญหาของฉันได้ ฉันไม่แน่ใจด้วยซ้ำว่า. bashrc ไปถึงที่นั่นได้อย่างไรเนื่องจากการกำหนดค่าทั้งหมดของฉันอยู่ใน. bash_profile rvm ใส่บางอย่างใน bashrc เมื่อติดตั้งหรือไม่? ฉันจะถือว่าเมื่อพิจารณาว่า bashrc มีเพียงบรรทัดเดียวในนั้นและเกี่ยวข้องกับ rvm
kevindeleon

1
พระเจ้ารู้ดีว่าตัวติดตั้งบรรทัดคำสั่งประเภทใดที่ผลักดันมันพวกเขามักจะก่อให้เกิดมลพิษ :(
Ain Tohvri

2
นี่ไม่ใช่วิธีแก้ปัญหาทั่วไป FWIW .bashrcจะดำเนินการสำหรับทุกเชลล์แบบโต้ตอบที่ซ้อนกัน .bash_profileจะดำเนินการเฉพาะกับ bash shell แรกที่ป้อนเท่านั้นคือล็อกอินเชลล์ ตัวแปรโดยทั่วไปควรจะตั้งอยู่ใน.bash_profileขณะที่ฟังก์ชั่นนามแฝง ฯลฯ (สิ่งที่ไม่ได้รับการส่งไปกับสภาพแวดล้อมที่ได้รับการถ่ายทอดปกติ) .bashrcควรจะตั้งอยู่ใน
Barry Kelly

5

ฉันมีคำถามติดตามสำหรับเรื่องนี้ (หวังว่าจะสามารถเพิ่มความคิดเห็นได้ แต่ฉันมีเครดิตไม่เพียงพอ) ฉันมีปัญหาเดียวกันนี้ - และเมื่อฉันทำตามสคริปต์ rvm ที่แนะนำให้ใช้--auto-dotfilesฉันพบปัญหาเนื่องจากเชลล์สคริปต์ลบไฟล์. bashrc_profileของฉัน

อย่างไรก็ตามในที่สุดฉันก็มาถึงคำตอบเดียวกันที่ระบุไว้ด้านบนโดยวางบรรทัดนี้ไว้ที่ด้านล่างของไฟล์. bashrc[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

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


ไม่มันได้ผลและฉันก็เดินต่อไป :) มีปลาที่น่าสนใจมากมายให้ทอด :)
Michael Durrant

5

ฉันประสบปัญหาเดียวกัน ฉันพบว่าในไฟล์ bashrc

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
export PATH=$HOME/local/bin:$PATH

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting

หลายรายการสำหรับ rvm ฉันแสดงความคิดเห็นหนึ่งรายการและทำงานได้ดี

#export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
#export PATH=$HOME/local/bin:$PATH

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting

3

ฉันทำความสะอาดทุกอย่างที่มี. rvm อยู่ในนั้นจาก PATH = line ใน. zshrc ของฉัน

นั่นช่วยแก้ปัญหาให้ฉันโดยที่คำตอบอื่น ๆ ที่นี่ (การจัดหาสคริปต์ rvm หรือการทำให้เสถียรด้วย dotfiles อัตโนมัติ) ไม่ได้


2

ฉันพบว่าคำสั่งนี้มีประโยชน์มาก มันแก้ปัญหาของฉัน ดังนั้นหากใครกำลังมีปัญหาเดียวกันลองดู: rvm get stable --auto-dotfiles


1

rvm install ruby-head แก้ไขปัญหาสำหรับฉัน - ใช้เวลาน้อย แต่ได้เคล็ดลับ ไม่แน่ใจว่าเป็นการอัปเดตไฟล์ bash ที่ไม่ได้ประกาศหรือไม่


1

ฉันสิ้นสุดการลบ~/.profile, และ~/.bashrc~/.zshrc

โดยทั่วไปฉันจะเก็บไว้~/.bash_profileในเครื่อง mac เท่านั้น และมันได้ผล

ฉันคิดว่าในกรณีของฉันมี:

ส่งออก PATH = "$ PATH: $ HOME / .rvm / bin"
[[-s "$ HOME / .rvm / scripts / rvm"]] && source "$ HOME / .rvm / scripts / rvm" # โหลด RVM ลงในเชลล์เซสชัน * เป็นฟังก์ชัน *

ในไฟล์เหล่านี้และการตั้งค่าที่ซ้ำกันเหล่านั้นสับสน rvm


1

คำปฏิเสธ

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

พื้นหลัง

ในกรณีของฉันฉันติดตั้งrvmก่อนแล้วจึงติดตั้งในpyenvภายหลัง การกำหนดค่าสำหรับทั้งคู่จะเปลี่ยน$PATHไป จากคำเตือนดูเหมือนว่า rvm จะต้องการเป็นที่หนึ่งในเส้นทางเสมอ

$ echo $PATH

$HOME/.rvm/gems/ruby-2.6.3/bin: ......

แต่ถ้าคุณเพิ่มeval "$(pyenv init -)"ตามต้องการpyenvมันจะเปลี่ยน$PATHเป็น

$ echo $PATH

$HOME/.pyenv/shims:$HOME/.rvm/gems/ruby-2.6.3/bin: ......

วิธีแก้ปัญหาของฉัน

$ rvm use system # เปลี่ยนกลับไปใช้ทับทิมระบบ

$ rvm use ruby-2.6.3 # เปลี่ยนไปใช้เวอร์ชันที่คุณต้องใช้

rvm จะเปลี่ยนเส้นทางไปสู่สิ่งที่ชอบจากนั้นคุณจะไม่เห็นคำเตือนที่น่ารำคาญอีก


0

ใช้งานได้หลังจากแสดงความคิดเห็น 2 บรรทัดบนที่ซ้ำกันและเพิ่มที่ด้านล่าง อย่าลืมรีสตาร์ทเทอร์มินัลเพื่อให้ใช้งานได้

#[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile
#[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
export PATH="/usr/local/opt/postgresql@9.6/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/postgresql@9.6/lib"

[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

0

คุณสามารถเพิ่ม

rvm_silence_path_mismatch_check_flag=1

ไปยัง~/.rvmrcไฟล์ของคุณ นั่นคือสิ่งที่ข้อความเตือนแนะนำในตอนนี้


1
นี่เป็นเพียงการเพิกเฉยต่อข้อความไม่ได้แก้ไขซึ่งเป็นสิ่งที่ผู้ใช้ร้องขอ นอกจากนี้สำหรับโครงการใหม่ปัญหาจะปรากฏขึ้นอีกครั้ง
ma3x

@ ma3x อันที่จริง OP ระบุปัญหาโดยไม่ต้องระบุคำถามดังนั้นฉันจึงถือว่า 'เพิกเฉย' ข้อความเตือนเป็นคำแนะนำที่ถูกต้อง นอกจากนี้ฉันไม่เข้าใจส่วนที่เกี่ยวกับโครงการใหม่
AkaZecik

1
แม้ว่าจะไม่มีเครื่องหมายคำถาม แต่คุณก็สามารถเข้าใจได้อย่างแน่นอนจากบริบทที่เขาพยายามแก้ไขข้อผิดพลาด แต่อย่าซ่อน :) นอกจากนี้คำตอบของคุณยังไม่สมบูรณ์เพราะนั่นเป็นเพียงส่วนหนึ่งจากสิ่งที่ข้อความเตือนแนะนำ ในขั้นต้นขอแนะนำให้รับ RVM ที่เสถียรล่าสุดและบันทึกไฟล์ของคุณโดยอัตโนมัติ สำหรับโปรเจ็กต์ใหม่นั่นเป็นความผิดพลาดของฉันเพราะฉันต้องการอ้างถึงอัญมณีใหม่
ma3x

@ ma3x ขอบคุณสำหรับข้อมูลเชิงลึก :) บางทีวิธีการให้เหตุผลของเราแตกต่างกันไป แต่หลังจากอ่านคำถามและคำตอบอื่น ๆ แล้วฉันก็ได้ข้อสรุปว่า OP เพียงต้องการกำจัดคำเตือนนี้ ผมอยากจะเน้นอีกครั้งว่านี้ไม่ได้เป็นข้อผิดพลาดก็เป็นคำเตือน และเนื่องจากการบังคับใช้คำสั่งของเส้นทางจึงPATHฟังดูล่วงล้ำสำหรับฉันและอย่างป้องกันที่สุดฉันจึงตัดสินใจโพสต์คำตอบนี้ ฉันจะใช้เวลาคิดทบทวนคำตอบของฉันและปรับปรุงตามความคิดเห็นของคุณ :)
AkaZecik

-3

ฉันแก้ไขปัญหานี้แล้ว ลองใช้คำสั่งเช่นนี้:

rvm use 2.0.0-p353

เพิ่ม -p353 หรือรายละเอียดเวอร์ชันอื่น ๆ ของคุณไปที่ปลายบรรทัด


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