Mendapatkan "Peringatan! PATH tidak diatur dengan benar ”saat melakukan rvm gunakan 2.0.0 - default


115

Di atas tidak berfungsi pertama kali, berfungsi untuk kedua kalinya.

Coba atur versi ruby ​​ke 2.0.0 untuk jendela shell baru.

Perbuatan

$ rvm use 2.0.0 --default

memberi

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

Lalu lakukan hal yang sama

$ rvm use 2.0.0 --default

sekarang tidak memberikan kesalahan, yaitu

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

tetapi jendela baru masih memberi saya ruby ​​1.9.3, bukan 2.0.0

.bashrcFile saya ada di dalamnya:

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

Profil .bash_ saya memiliki:

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

Mencoba

rvm get stable

tampaknya berfungsi tetapi di akhir banyak output hijau menunjukkan:

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

Jendela terminal baru dengan rvm list rubiesmenunjukkan ini:

$ 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

Jawaban:


176

Saya macet setelah saya mencopot pemasangan rvm dengan

rvm implode

kemudian setelah menginstal ulang rvm menerima pesan kesalahan yang sama. Setelah melihat-lihat halaman git hub wayne seguin. Dia mencantumkan alat di halamannya dan merekomendasikan penggunaan

rvm reset 

setelah instalasi. Ini memperbaiki pesan kesalahan saya. Tidak perlu pengeditan PATH.


13
Setelah memeriksa & re-memeriksa saya ~/.bashrc, ~/.bash_profile, berlari rvm get stable --auto-dotfiles, re-checking ~/.bashrc, ~/.bash_profiledan ~/.profilebanyak kali ... jawaban ini akhirnya tetap itu! Ran: rvm resetdan itu menghilangkan peringatan! (IMHO ... RVM terlalu rewel tentang menjadi yang pertama di jalur ... Jika saya menetapkan sesuatu yang lain terlebih dahulu di jalur saya, saya tahu apa yang saya lakukan)
TrinitronX

11
: tu:rvm reset
JBird

18
ini berhasil untuk saya! tidak perlu mengedit PATH, hanya rvm reset(pesan akan ditampilkan untuk terakhir kalinya), sekarang kapan saja saya mengeluarkan perintah rvm tidak ada lagi peringatan PATH.
JohnRDOrazio

1
Ketika saya menggunakan rvm reset masalah di terminal tempat saya menjalankan reset rvm teratasi. Namun, ketika saya pindah ke terminal baru, kesalahan / peringatan tetap ada kecuali saya tidak menjalankan reset rvm lagi
Apurva Mayank

rvm helpmengembalikan petunjuk yang cukup menakutkan untuk rvm reset: hapus semua pengaturan default dan sistem 😄
Muhamed Huseinbašić

171

Jawabannya adalah seperti ini:

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

** di BAWAH ** (baris terakhir - penting!) dari file .bashrc saya. Saya memilikinya di file .bash_profile saya (saya menggunakan Ubuntu) dan itu hanya berfungsi sebagian yang mengarah ke kesalahan yang membingungkan.


1
Sepertinya kontra-intuitif untuk pindah ke bawah jika RVM ingin berada di puncak rantai?
reneruiz

9
rvm harus berada di bagian bawah file jika ada baris lain di. [ba | z] shrc yang mendefinisikan ulang jalur. export PATH="/usr/local/bin:/usr/local/sbin:$PATH"untuk Homebrew mungkin adalah salah satu yang umum yang bertentangan dengan rvm.
TimeEmit

4
Saya meletakkannya di bagian bawah .bash_profile saya karena saya telah mendefinisikan ulang jalur beberapa kali. Ini juga berhasil.
Kyle Suss

1
ini bekerja dengan baik untuk saya setelah memulai ulang terminal
NSTJ

24
ini jelas merupakan solusi yang tepat, tetapi jika Anda hanya melakukannya rvm resetakan melakukannya untuk Anda secara otomatis ...
Ralph Callaway

34

Mungkin bukan cara terbaik untuk menyelesaikan ini, tetapi saya menambahkan baris ini di bagian bawah .zshrc saya (ini juga akan berfungsi di .bashrc!)

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

Ini adalah solusi yang lebih bersih, IMO, dengan pembaruan pada RVM.
Dan L

Saya tidak setuju, saya pikir ini adalah cara terbaik untuk menyelesaikan ini :) Saya harus meletakkan ini sebagai baris terakhir .bash_profile saya karena berjalan terakhir dan memiliki deklarasi jalur lain di dalamnya.
applejack42

Ini benar-benar salah satu solusi terbaik untuk menyelesaikan masalah ini. Menghabiskan waktu hampir 3 jam dan akhirnya mau menyerah: D you the man. :)

Saya menambahkan milik saya ke ~ / .profil saya, yang dimuat oleh baris terakhir ~ / bash_profile dan memastikan tidak ada referensi ke $ PATH di file lain. Dengan cara ini, ini akan bekerja di Bash dan diambil oleh cangkang lain.
Dmitri

Ya ini adalah solusi terbaik, karena sudah jelas dan tentukan kemana harus meletakkan ekspor. Terima kasih!!!
Albert Català

23

Saya mencoba solusi Michael Durrant dan tidak berhasil untuk saya. tapi saya berlari rvm get stable --auto-dotfilesdan itu mulai bekerja sesuai keinginan.

Semoga membantu


Ini berfungsi pada Mavericks, harus memulai ulang terminal untuk menyelesaikan perbaikan.
Brett Bim

1
Di Mac 10.12.3 dengan iTerm2 3.0.15, ikan 2.5.0, dan rvm defaultdi bagian bawah config.fishfile saya . perintah rvm resettidak membantu saat membuka jendela terminal. Perintah ini berhasil. Keluaran saya: pastebin.com/1jUCSGnP
Pysis

Ah, mungkin ketika saya menjalankan perintah, mereka menggunakan bashinterpreter, dan saya harus memeriksa file konfigurasi itu juga ..
Pysis

Tidak, itu masih rusak di jendela terminal lain, bahkan setelah me-restart iTerm, dan memeriksa sejumlah skrip profil tidak membantu, jadi saya menghapus semua baris konfigurasi, memulai ulang komputer saya, menginstal ulang RVM dengan integrasi fungsi ikan, dan mengaktifkan satu rvm defaultbaris. Lebih baik sekarang ..
Pysis

8

Ini bukanlah jawaban atas pertanyaan yang diajukan, tetapi untuk pertanyaan terkait yang ditanyakan oleh sebagian besar pemberi komentar / responden - Mengapa Anda perlu meletakkan baris rvm di bagian bawah file shell rc?

Jawabannya sederhana.

  1. Kode rvm yang dimuat menempatkan direktori biner rvm ruby ​​di "depan" dari $PATH, dan
  2. .bashrc (atau setara untuk shell default Anda) dibaca dan ditafsirkan baris demi baris dari atas ke bawah.

Jadi bayangkan skenario berikut:

$ 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

Jelas jika ada sesuatu di file shell init setelah baris RVM dan membuat perubahan apa pun ke $ PATH, lebih khusus lagi jika ia menambahkan direktori ke $PATH, maka perubahan itu akan mendorong direktori yang ditambahkan oleh rvm ke bawah dari posisi pertama. RVM, saat dipanggil, akan menemukan bahwa direktori biner rubynya tidak berada di awal $PATHdan BAM! Anda akan mendapatkan peringatan :).

Saya harap itu membuat semuanya menjadi jelas.


6

Hanya menambahkan pengalaman saya: jika Anda menggunakan .bash_profile, periksa apakah .bashrctidak mengganggu . Membunuh .bashrcdemi konfigurasi Bash tunggal dengan .bash_profileberhasil dalam kasus ini.


1
Ini memecahkan masalah saya. Saya bahkan tidak yakin bagaimana .bashrc sampai di sana karena semua konfigurasi saya ada di .bash_profile. Apakah rvm meletakkan sesuatu di bashrc saat menginstal? Saya akan berasumsi begitu mengingat bahwa bashrc hanya memiliki satu baris di dalamnya dan itu berkaitan dengan rvm.
kevindeleon

1
Entahlah jenis pemasang baris perintah yang mendorongnya. Mereka cenderung mencemari :(
Ain Tohvri

2
Ini bukan solusi umum, FWIW. .bashrcdijalankan untuk setiap shell interaktif bersarang; .bash_profilehanya dijalankan pada shell bash pertama yang dimasukkan, yaitu shell login. Variabel umumnya harus disetel .bash_profile, sedangkan fungsi, alias, dll. (Hal-hal yang tidak ditransmisikan dengan lingkungan bawaan normal) harus disetel .bashrc.
Barry Kelly

5

Saya memiliki pertanyaan lanjutan untuk ini (saya harap saya dapat menambahkan komentar - tetapi saya tidak memiliki cukup kredit). Saya mengalami masalah yang sama - dan ketika saya mengikuti skrip rvm yang disarankan untuk digunakan --auto-dotfiles, saya mendapat masalah karena entah bagaimana skrip shell menghapus .bashrc_profile saya file .

Bagaimanapun, saya akhirnya menemukan jawaban yang sama yang tercantum di atas, meletakkan baris ini di bagian bawah file .bashrc . [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

Apakah Anda kebetulan menemukan mengapa itu berfungsi seperti itu, dan bukan dengan garis di tengah file .bashrc? Apakah Anda memiliki kejelasan tentang cara Unix memuat variabel lingkungan yang membuat RVM berfungsi di satu contoh dan tidak di yang lain?


Tidak. Berhasil dan saya melanjutkan :) Banyak ikan yang lebih menarik untuk digoreng :)
Michael Durrant

5

Saya menghadapi masalah yang sama. Saya menemukan itu di file 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

beberapa entri untuk rvm. Saya mengomentari satu entri dan berfungsi dengan baik.

#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

Saya membersihkan semua yang memiliki .rvm di dalamnya dari baris PATH = saya di .zshrc saya

Itu memperbaiki masalah untuk saya, di mana jawaban lain di sini (sumber skrip rvm, atau menjadi stabil dengan auto dotfiles) tidak.


2

Saya telah menemukan perintah ini sangat berguna. Ini menyelesaikan kasus saya. Jadi, jika ada yang mengalami masalah yang sama, cobalah ini: rvm get stable --auto-dotfiles


1

rvm install ruby-head Memperbaiki masalah untuk saya - memakan sedikit waktu tetapi berhasil. Tidak yakin apakah itu membuat pembaruan yang tidak diumumkan ke file bash saya.


1

Saya akhirnya menghapus ~/.profile, ~/.bashrcdan ~/.zshrc.

Pada dasarnya saya hanya menyimpan ~/.bash_profileMac saya. Dan itu berhasil.

Saya pikir dalam kasus saya, ada:

ekspor PATH = "$ PATH: $ HOME / .rvm / bin"
[[-s "$ HOME / .rvm / scripts / rvm"]] && source "$ HOME / .rvm / scripts / rvm" # Muat RVM ke sesi shell * sebagai fungsi *

dalam file ini, dan pengaturan duplikat tersebut membingungkan rvm


1

Penolakan

Karena saya terutama mengembangkan menggunakan python, jadi saya tidak yakin solusi ini akan memberi Anda ruby ​​env yang benar atau hanya mengubah jalur dan menyingkirkan peringatan

Latar Belakang

Dalam kasus saya, saya menginstal rvmterlebih dahulu, lalu pyenvnanti. Konfigurasi untuk keduanya akan berubah $PATH. Dari peringatan tersebut, tampaknya rvm selalu ingin menjadi yang pertama di jalurnya

$ echo $PATH

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

Tetapi jika Anda menambahkan eval "$(pyenv init -)"seperti yang diminta oleh pyenv, itu akan mengubah Anda $PATHmenjadi

$ echo $PATH

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

Solusi saya

$ rvm use system # Beralih kembali ke ruby ​​sistem

$ rvm use ruby-2.6.3 # Beralih ke versi yang perlu Anda gunakan

rvm akan mengubah jalur menjadi apa yang disukainya maka Anda tidak akan melihat peringatan yang mengganggu lagi.


0

Ini berfungsi setelah mengomentari 2 baris duplikat teratas dan menambahkannya di bagian bawah. Jangan lupa untuk merestart terminal agar bisa bekerja.

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

Anda dapat menambahkan

rvm_silence_path_mismatch_check_flag=1

ke ~/.rvmrcfile Anda . Itulah yang disarankan pesan peringatan sekarang.


1
Ini hanya mengabaikan pesan, bukan memperbaikinya, yang diminta oleh pengguna. Plus, untuk proyek baru, masalahnya akan muncul kembali.
ma3x

@ ma3x Sebenarnya, OP hanya menyatakan masalah tanpa menyatakan pertanyaan, jadi saya menganggap 'mengabaikan' pesan peringatan sebagai saran yang valid. Juga, saya tidak mengerti bagian tentang proyek baru.
AkaZecik

1
Meskipun tidak ada tanda tanya, Anda pasti dapat memahami dari konteksnya bahwa dia mencoba untuk memperbaiki kesalahan, bukan menyembunyikannya :) Ditambah, jawaban Anda tidak lengkap karena itu hanya sebagian dari pesan peringatan. Awalnya, ini menyarankan untuk mendapatkan RVM stabil terbaru dan autodot file Anda. Untuk proyek baru itu adalah kesalahan saya karena saya ingin merujuk ke kumpulan permata baru.
ma3x

@ ma3x Terima kasih atas wawasan Anda :) Mungkin hanya cara penalaran kami yang berbeda, tetapi setelah membaca pertanyaan dan jawaban lainnya, saya sampai pada kesimpulan bahwa OP hanya ingin menyingkirkan peringatan ini. Saya ingin tegaskan lagi bahwa ini bukan kesalahan , ini peringatan . Dan karena menegakkan urutan jalur PATHterdengar mengganggu saya, dan paling protektif , saya memutuskan untuk memposting jawaban ini. Saya akan meluangkan waktu untuk memikirkan kembali jawaban saya dan memperbaikinya berdasarkan komentar Anda :)
AkaZecik

-3

SAYA MEMPERBAIKI MASALAH INI. COBA GUNAKAN PERINTAH SEPERTI INI:

rvm use 2.0.0-p353

TAMBAH -p353 atau detail versi lainnya ke baris akhir


6
Ini hanya menyelesaikan masalah untuk sesi shell saat ini, jadi ini bukan jawaban terbaik.
IIllIIll
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.