Cara mengatur Ruby GEM_HOME dan GEM_PATH

10

Saya adalah pengguna NOVICE dari Linux dan menggunakan Linux mint 17.1

Saya telah menginstal ulang Linux Mint 20 kali dalam 3 hari terakhir untuk masalah itu tetapi tidak dapat memperbaikinya

Saya mencoba untuk menginstal ruby ​​on rails menggunakan rvm yang terjadi adalah jika memulai instalasi Linux baru dan mencoba menginstal permata dan ruby ​​dan barang-barang dalam satu sesi terminal itu berhasil diinstal segera setelah saya menutup sesi terminal saya tidak bisa mendapatkan permata itu .

Dengan menginstal ulang lebih dari 20 kali dalam 3 hari terakhir saya sudah mencari di web juga. Saya telah diberitahu untuk memasukkan variabel lingkungan di /etc/environmentjalur yang saya gema di sesi itu dan menempelkannya di /etc/environmentfile.

bahkan sekarang saya tidak mendapatkan permata yang terpasang

ketika saya mengetik rvm -vsaya mendapatkan kesalahan berikut

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 <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/]

Saya orang yang sangat pemula dalam hal bekerja dengan terminal, saya dapat menjalankan beberapa perintah dasar untuk bekerja dengan ruby.

Saya ingin tahu

  1. Cara mengatur PATH
  2. Cara mengatur GEM_HOME
  3. Cara mengatur GEM_PATH

Di bawah ini adalah jalur lengkap saya

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
Amjad
sumber
mr @mohsen pahlevanzades bolehkah saya bertanya apa gunanya menghapus dua baris itu, jika Anda tidak keberatan saya memberi tahu, salam
Amjad
Jika saya ingat benar, Anda menulis salam atau terima kasih,
PersianGulf
1
Mengenai hasil edit: Haruskah 'Hai', 'terima kasih,' tagline, dan salam dihapus dari posting?
Gilles 'SO- berhenti menjadi jahat'

Jawaban:

18

Kedengarannya seperti Anda menginginkan perintah exportuntuk mengatur variabel lingkungan:

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

Itu hanya akan berlaku untuk sesi saat ini. Untuk membuatnya lebih permanen, tambahkan baris-baris itu ke blog Anda ~/.bashrc.

Jonathan
sumber
3

Biasanya ini berarti bahwa rvm tidak diatur dengan benar. Kesalahan yang biasa terjadi adalah Anda tidak memodifikasi dengan .bashrcbenar (atau serupa) atau Anda tidak memuat ulang terminal Anda.

Anda tidak boleh mengatur GEM_HOME atau GEM_PATH secara manual saat menggunakan rvm.

Anda dapat mencoba source ~/.rvm/scripts/rvmdan melihat apakah itu berhasil.

Bisa juga Anda belum membangun permata. Jangan gunakan rvm dan sudo. Rvm berfungsi paling baik saat diinstal di akun Anda dan tidak di seluruh sistem.

kapas
sumber
Anda juga dapat menambahkan source ~/.rvm/scripts/rvmke Anda ~/.bashrcuntuk memastikan itu dimuat setiap kali Anda memulai shell baru.
Niel de Wet
2

Inilah yang saya pelajari dan bagaimana saya menyelesaikan masalah yang tampaknya umum ini dari variabel lingkungan GEM_HOME dan GEM_PATH tidak membuat kesalahan.


Latar Belakang

Pemasangan RVM seharusnya membuat GEM_HOME dan GEM_PATH env vars untuk setiap RVM yang telah diatur dan melakukan itu. Tetapi ada bug yang tampaknya sedemikian rupa sehingga dalam beberapa kasus env vars hanya diset sementara, dan untuk mengaturnya lagi Anda harus mengaturnya dengan baris perintah. Saya menemukan solusi untuk membuat env vars bertahan untuk RVM.

Penanganan masalah

  1. Temukan versi Ruby Anda yang aktif (dalam RVM): Di server produksi Anda, buka direktori dan jenis aplikasi Anda $rvm list. Ini akan menghasilkan daftar versi Ruby yang diinstal dan mana yang aktif untuk RVM. Contoh respon:

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

Jadi, saya tahu bahwa RVM saat ini menggunakan versi ruby-1.9.3-p551. Anda memerlukan info ini untuk langkah selanjutnya.

  1. Dapatkan jalur untuk GEM_PATH dan GEM_HOME : Anda melakukan ini dengan mengeksekusi dari baris perintah $rvm use ruby-1.9.3-p551. Kemudian masih dari baris comman menunjukkan semua pengaturan lingkungan menggunakan perintah env. Telusuri GEM_PATH dan GEM_HOME dan salin semuanya secara keseluruhan ke ruang kerja.

    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. Tetapkan variabel lingkungan GEM_HOME dan GEM_PATH: Sekarang atur variabel lingkungan ini di salah satu dari banyak file profil. Saya ingin mempertahankan struktur isolasi versi RVM, jadi saya memperbarui /profile.d/appspecific.sh dengan dua baris ini:

    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

Va As
sumber
ternyata GEM_HOME dan GEM_PATH tidak spesifik untuk RVM?
barlop
2

Saya menemukan bahwa. Profil dimuat terakhir dan menempatkan ~ / .local / bin dan ~ / bin di depan jalan. Saya pindah /etc/profile.d/rvm.sh ke ~ / .rvm dan di akhir profil. Saya menambahkan "source ~ / .rvm / rvm.sh" dan kesalahannya hilang. Saya menggunakan Linux Mint 18.3. Saya memiliki pyenv, rvm dan sdkman diinstal dan mereka semua ingin menjadi yang terakhir. Mereka semua bekerja dengan baik sekarang. :)

Jika itu adalah sistem yang dibagikan, cukup pindahkan rvm.sh ke suatu tempat keluar dari jalur dan pengguna lain dapat mengambilnya, seperti dari /opt/rvm/rvm.sh misalnya.

RandyB
sumber
1

Seperti @coteyr yang disebutkan, Anda seharusnya tidak mengatur GEM_HOME dan GEM_PATH secara manual saat menggunakan rvm. Jika Anda memeriksa variabel lingkungan PATH Anda, dengan menjalankan $ echo $PATHdan $ HOME / .rvm / bin adalah bagian darinya, maka Anda perlu memastikan terminal Anda menjalankan perintah sebagai shell login. Misalnya jika Anda menggunakan mesin Ubuntu, Anda membuka terminal Anda kemudian pergi ke: menu> Edit> Preferensi Profil> Perintah kemudian pilih "Jalankan perintah sebagai shell login"

Ini tampaknya menjadi masalah lama rvmyang saya anggap tidak sepele untuk diperbaiki karena sudah ada untuk sementara waktu.

Lym
sumber
1

Untuk mengisi $GEM_PATHdengan sistem saya (Manjaro / Arch) gemssaya menambahkan ke .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
Tom Hale
sumber