Nhận được “Cảnh báo! PATH không được thiết lập đúng cách ”khi sử dụng rvm 2.0.0 - mặc định


115

Ở trên không hoạt động lần đầu, hoạt động lần thứ hai.

Cố gắng đặt phiên bản ruby ​​thành 2.0.0 cho bất kỳ cửa sổ shell mới nào.

Đang làm

$ rvm use 2.0.0 --default

cho

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

Sau đó làm tương tự

$ rvm use 2.0.0 --default

bây giờ không có lỗi, tức là

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

nhưng các cửa sổ mới vẫn cung cấp cho tôi ruby ​​1.9.3, không phải 2.0.0

.bashrcTệp của tôi có trong đó:

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

.Bash_profile của tôi có:

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

Cố gắng

rvm get stable

có vẻ hoạt động nhưng ở phần cuối của rất nhiều kết quả màu xanh lá cây cho thấy:

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

Một cửa sổ đầu cuối mới với rvm list rubieshiển thị điều này:

$ 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

Câu trả lời:


176

Tôi đã bị mắc kẹt sau khi gỡ cài đặt rvm với

rvm implode

thì sau khi cài đặt lại rvm nó nhận được thông báo lỗi tương tự. Sau khi xem qua trang trung tâm git của wayne seguin. Anh ấy liệt kê các công cụ trên trang của mình và đề xuất sử dụng

rvm reset 

sau khi cài đặt. Điều này đã sửa thông báo lỗi của tôi. Không cần chỉnh sửa PATH.


13
Sau khi kiểm tra và tái kiểm tra của tôi ~/.bashrc, ~/.bash_profilechạy rvm get stable --auto-dotfiles, kiểm tra lại ~/.bashrc, ~/.bash_profile~/.profilenhiều lần ... câu trả lời này cuối cùng đã cố định nó! Ran: rvm resetvà nó đã thoát khỏi cảnh báo! (IMHO ... RVM là cách quá khó tính về việc đầu tiên trong con đường ... Nếu tôi đặt cái gì khác đầu tiên trong con đường của tôi, tôi biết những gì tôi đang làm)
TrinitronX

11
: tu:rvm reset
JBird

18
điều này đã làm việc cho tôi! không cần chỉnh sửa PATH, chỉ cần rvm reset(thông báo sẽ hiển thị lần cuối), bây giờ bất cứ lúc nào tôi đưa ra lệnh rvm không còn cảnh báo PATH nữa.
JohnRDOrazio

1
Khi tôi sử dụng rvm đặt lại, vấn đề trong thiết bị đầu cuối mà tôi đã chạy đặt lại rvm đã được giải quyết. Tuy nhiên, khi tôi chuyển sang nhà ga mới lỗi / cảnh báo vẫn tồn tại, trừ khi tôi không chạy reset RVM một lần nữa
Apurva Mayank

rvm helptrả về gợi ý khá đáng sợ cho rvm reset: xóa tất cả cài đặt mặc định và hệ thống 😄
Muhamed Huseinbašić

171

Câu trả lời là đặt điều này:

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

** ở BOTTOM ** (dòng cuối cùng - quan trọng!) của tệp .bashrc của tôi. Tôi đã có nó trong tệp .bash_profile của mình (tôi đang sử dụng Ubuntu) và điều đó chỉ hoạt động một phần dẫn đến các lỗi khó hiểu.


1
Có vẻ hơi phản trực quan khi di chuyển xuống cuối nếu RVM muốn đứng đầu chuỗi?
Reneruiz

9
rvm cần phải ở cuối tệp trong trường hợp có các dòng khác trong. [ba | z] shrc xác định lại đường dẫn. export PATH="/usr/local/bin:/usr/local/sbin:$PATH"cho Homebrew có lẽ là một phổ biến xung đột với rvm.
TimeEmit

4
Tôi đặt nó ở cuối tệp .bash_profile của mình vì tôi đã xác định lại đường dẫn nhiều lần. Điều này cũng đã hoạt động.
Kyle Suss

1
điều này hoạt động tốt đối với tôi sau khi khởi động lại thiết bị đầu cuối
NSTJ 12/09/15

24
điều này chắc chắn là giải pháp đúng, nhưng nếu bạn chỉ cần rvm resetnó sẽ làm việc này cho bạn tự động ...
Ralph Callaway

34

Có thể không phải là cách tốt nhất để giải quyết vấn đề này, nhưng tôi đã thêm dòng này vào cuối tệp .zshrc của mình (nó cũng sẽ hoạt động trong .bashrc!)

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

Đây là một giải pháp sạch hơn, IMO, với các bản cập nhật cho RVM.
Dan L

Tôi không đồng ý, tôi nghĩ đây là cách tốt nhất để giải quyết vấn đề này :) Tôi đã phải đặt đây là dòng cuối cùng của .bash_profile của tôi vì nó chạy cuối cùng và có các khai báo đường dẫn khác trong đó.
applejack42

Đây thực sự là một trong những giải pháp tốt nhất để giải quyết vấn đề này. Bỏ ra gần 3 tiếng và cuối cùng cũng sắp bỏ cuộc: D you the man. :)

Tôi đã thêm tệp của mình vào ~ / .profile của tôi, được tải bởi dòng cuối cùng của ~ / bash_profile và đảm bảo rằng không có tham chiếu nào đến $ PATH trong bất kỳ tệp nào khác. Bằng cách này, nó sẽ hoạt động trong Bash và được các vỏ khác nhặt.
Dmitri

Có đây là giải pháp tốt nhất, vì rõ ràng và chỉ định nơi xuất khẩu. Cảm ơn!!!
Albert Català

23

Tôi đã thử giải pháp của Michael Durrant và nó không hiệu quả với tôi. nhưng tôi đã chạy rvm get stable --auto-dotfilesvà nó bắt đầu hoạt động như mong muốn.

Hy vọng nó giúp


Điều này đã hoạt động trên Mavericks, phải khởi động lại thiết bị đầu cuối để hoàn thành việc sửa chữa.
Brett Bim

1
Trên Mac 10.12.3 với iTerm2 3.0.15, fish 2.5.0 và rvm defaultở cuối config.fishtệp của tôi . lệnh rvm resetkhông hữu ích khi giữ cửa sổ đầu cuối mở. Lệnh này đã hoạt động. Đầu ra của tôi: pastebin.com/1jUCSGnP
Pysis

À, có lẽ khi tôi đang chạy các lệnh, chúng đang sử dụng trình bashthông dịch, và tôi cũng nên kiểm tra các tệp cấu hình đó ..
Plysis

Không, nó vẫn bị hỏng trong các cửa sổ đầu cuối khác, ngay cả sau khi khởi động lại iTerm và kiểm tra bất kỳ số tập lệnh cấu hình nào cũng không giúp được gì, vì vậy tôi đã giải mã loại bỏ tất cả các dòng cấu hình, khởi động lại máy tính của mình, cài đặt lại RVM với tích hợp chức năng cá và bật một rvm defaultdòng. Bây giờ đã tốt hơn ..
Lọc máu

8

Đây không phải là câu trả lời cho câu hỏi được hỏi, mà là câu hỏi liên quan mà hầu hết người bình luận / người trả lời đã hỏi - Tại sao bạn cần đặt dòng rvm ở cuối tệp shell rc?

Đáp án đơn giản.

  1. Mã rvm được tải sẽ đặt các thư mục nhị phân rvm ruby ​​ở "phía trước" $PATH
  2. .bashrc (hoặc tương đương cho trình bao mặc định của bạn) được đọc và diễn giải từng dòng từ trên xuống dưới.

Vì vậy, hãy tưởng tượng tình huống sau:

$ 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

Rõ ràng là nếu có thứ gì đó trong tệp shell init sau dòng RVM và thực hiện bất kỳ thay đổi nào đối với $ PATH, cụ thể hơn nếu nó thêm trước các thư mục vào $PATH, thì những thay đổi đó sẽ đẩy các thư mục được thêm bởi rvm xuống từ vị trí đầu tiên của chúng. RVM, khi được gọi ra, sẽ thấy rằng các thư mục nhị phân ruby ​​của nó không ở đầu $PATHvà BAM! bạn sẽ nhận được cảnh báo :).

Tôi hy vọng điều đó làm cho mọi thứ rõ ràng.


6

Chỉ thêm kinh nghiệm của tôi: nếu bạn đang sử dụng .bash_profile, hãy kiểm tra xem có .bashrcbị ảnh hưởng không . Việc giết người có .bashrclợi cho cấu hình Bash duy nhất bằng cách .bash_profilehoạt động trong trường hợp này.


1
Điều này đã giải quyết vấn đề của tôi. Tôi thậm chí không chắc bằng cách nào .bashrc đến đó vì tất cả các cấu hình của tôi đều nằm trong .bash_profile. Rvm có cài đặt thứ gì đó trong bashrc không? Tôi sẽ giả sử như vậy khi xem xét rằng bashrc chỉ có một dòng trong đó và nó phải làm với rvm.
kevindeleon

1
Chúa mới biết những loại dòng cài đặt lệnh đẩy nó trong Họ có xu hướng gây ô nhiễm nó :(.
Ain Tohvri

2
Đây không phải là một giải pháp chung, FWIW. .bashrcđược thực thi cho mọi trình bao tương tác lồng nhau; .bash_profilechỉ được thực thi trên bash shell đầu tiên được nhập, tức là shell đăng nhập. Các biến thường phải được đặt trong .bash_profile, trong khi các hàm, bí danh, v.v. (những thứ không được truyền với môi trường kế thừa thông thường) nên được đặt trong .bashrc.
Barry Kelly

5

Tôi có một câu hỏi tiếp theo cho điều này (ước gì tôi có thể chỉ cần thêm nhận xét - nhưng tôi không có đủ tín dụng). Tôi cũng gặp phải vấn đề này - và khi tôi làm theo tập lệnh rvm được đề xuất sử dụng --auto-dotfiles, tôi đã gặp rắc rối vì bằng cách nào đó, tập lệnh shell đã xóa tệp .bashrc_profile của tôi .

Dù sao, cuối cùng tôi cũng đi đến cùng một câu trả lời được liệt kê ở trên, đặt dòng này ở cuối tệp .bashrc . [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

Bạn có tình cờ tìm ra lý do tại sao điều đó lại hoạt động theo cách của nó mà không phải với dòng ở giữa tệp .bashrc không? Bạn có hiểu rõ về cách Unix tải biến môi trường làm cho RVM hoạt động trong một trường hợp không?


Số Nó làm việc và tôi di chuyển trên :) Rất nhiều cá thú vị hơn để chiên :)
Michael Durrant

5

Tôi đã phải đối mặt với cùng một vấn đề. Tôi tìm thấy điều đó trong tệp 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

nhiều mục nhập cho rvm. Tôi đã nhận xét một mục nhập và nó hoạt động tốt.

#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

Tôi đã xóa mọi thứ có .rvm trong đó khỏi dòng PATH = trong .zshrc của tôi

Điều đó đã khắc phục sự cố cho tôi, trong đó các câu trả lời khác ở đây (tìm nguồn cung cấp tập lệnh rvm hoặc ổn định với các tệp chấm tự động) không.


2

Tôi thấy lệnh này rất hữu ích. Nó giải quyết trường hợp của tôi. Vì vậy, nếu có ai đang gặp vấn đề tương tự, hãy thử cách này: rvm get stable --auto-dotfiles


1

rvm install ruby-head Đã khắc phục sự cố cho tôi - tốn ít thời gian nhưng đã thành công. Không chắc liệu điều đó có thực hiện bất kỳ cập nhật không được công bố nào đối với các tệp bash của tôi hay không.


1

Tôi đã kết thúc việc loại bỏ ~/.profile, ~/.bashrc~/.zshrc.

Về cơ bản tôi chỉ giữ ~/.bash_profiletrên máy mac của mình. Và nó hoạt động.

Tôi nghĩ trong trường hợp của tôi, có:

xuất PATH = "$ PATH: $ HOME / .rvm / bin"
[[-s "$ HOME / .rvm / scripts / rvm"]] && source "$ HOME / .rvm / scripts / rvm" # Tải RVM vào phiên shell * dưới dạng một hàm *

trong các tệp này và các cài đặt trùng lặp đó làm nhầm lẫn rvm


1

Khước từ

Vì tôi chủ yếu phát triển bằng cách sử dụng python, vì vậy tôi không chắc cách giải quyết này sẽ cung cấp cho bạn một env ruby ​​chính xác hay chỉ cần thay đổi đường dẫn và loại bỏ cảnh báo

Lý lịch

Trong trường hợp của tôi, tôi đã cài đặt rvmtrước và sau đó cài đặt pyenvsau. Cấu hình cho cả hai sẽ thay đổi $PATH. Từ cảnh báo, có vẻ như rvm luôn muốn là người đi đầu trong con đường

$ echo $PATH

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

Nhưng nếu bạn thêm eval "$(pyenv init -)"theo yêu cầu pyenv, nó sẽ thay đổi $PATHthành

$ echo $PATH

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

Cách giải quyết của tôi

$ rvm use system # Chuyển về ruby ​​hệ thống

$ rvm use ruby-2.6.3 # Chuyển sang phiên bản bạn cần sử dụng

rvm sẽ thay đổi đường dẫn đến những gì nó thích sau đó bạn sẽ không thấy cảnh báo phiền phức nữa.


0

Nó hoạt động sau khi nhận xét 2 dòng trùng lặp trên cùng và thêm chúng ở dưới cùng. Đừng quên khởi động lại thiết bị đầu cuối để nó hoạt động.

#[[ -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

Bạn có thể thêm

rvm_silence_path_mismatch_check_flag=1

vào ~/.rvmrctệp của bạn . Đó là những gì mà thông báo cảnh báo bây giờ gợi ý.


1
Đây chỉ là bỏ qua thông báo, không sửa chữa nó, đó là những gì người dùng đang yêu cầu. Thêm vào đó, đối với một dự án mới, vấn đề sẽ xuất hiện trở lại.
ma3x 24-07-19

@ ma3x Trên thực tế, OP chỉ nêu một vấn đề mà không nêu câu hỏi, vì vậy tôi coi việc 'bỏ qua' thông báo cảnh báo là một gợi ý hợp lệ. Ngoài ra, tôi không hiểu phần nào về các dự án mới.
AkaZecik

1
Ngay cả khi không có dấu chấm hỏi, bạn chắc chắn có thể hiểu được từ ngữ cảnh rằng anh ấy đang cố gắng sửa lỗi chứ không phải ẩn nó :) Thêm vào đó, câu trả lời của bạn không đầy đủ vì đó chỉ là một phần từ những gì thông báo cảnh báo gợi ý. Ban đầu, nó khuyên bạn nên tải RVM ổn định mới nhất và tự động chạy các tệp của bạn. Đối với các dự án mới, đó là sai lầm của tôi vì tôi muốn đề cập đến các bộ đá quý mới.
ma3x 25-07-19

@ ma3x Cảm ơn những hiểu biết của bạn :) Có lẽ chỉ là cách lập luận của chúng tôi khác nhau, nhưng sau khi đọc câu hỏi và các câu trả lời khác, tôi đã đi đến kết luận rằng OP chỉ đơn giản là muốn loại bỏ cảnh báo này. Tôi muốn nhấn mạnh lại rằng đây không phải là một lỗi , đó là một cảnh báo . Và bởi vì việc thực thi trật tự đường dẫn PATHnghe có vẻ khó chịu đối với tôi, và ít nhất là để bảo vệ , tôi quyết định đăng câu trả lời này. Tôi sẽ dành thời gian để suy nghĩ lại câu trả lời của tôi và cải thiện nó dựa trên ý kiến của bạn :)
AkaZecik

-3

TÔI ĐÃ CỐ ĐỊNH VẤN ĐỀ NÀY. HÃY THỬ SỬ DỤNG LỆNH NHƯ NÀY:

rvm use 2.0.0-p353

ADD -p353 hoặc chi tiết phiên bản khác của bạn đến đầu dòng


6
Điều này chỉ giải quyết vấn đề cho phiên trình bao hiện tại vì vậy nó không chính xác là câu trả lời tốt nhất.
Toàn bộ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.