instalasi rvm tidak berfungsi: "RVM bukan fungsi"


234

Saya baru saja menginstal RVM, tetapi tidak bisa membuatnya bekerja. Saya memiliki baris seperti itu di akhir .profilefile saya :

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"

Saya mencoba menjalankan source .profiledan memulai kembali terminal, tetapi tetap saja, ketika saya menjalankan, rvm use 1.9.2saya mendapatkan:

RVM is not a function, selecting rubies with 'rvm use ...' will not work.

Sistem saya adalah Ubuntu 11.10.


2
Saya merekomendasikan Anda rbenv sebagai alternatif untuk RVM. Tidak perlu dimuat ke dalam shell Anda.
drinor

10
Di mana pun seseorang memiliki masalah dengan teknologi tertentu, selalu ada pahlawan dalam zirah yang bersinar, dengan nasihat berharga untuk membuang teknologi itu dan memasang alternatif yang sepenuhnya, benar-benar menakjubkan yang lain tanpa punggung tarik. Seolah-olah saya mengajukan beberapa pertanyaan ruby ​​dan pahlawan itu segera muncul dengan "just install java" =)
Clergyman

Jawaban:


236

Anda tidak menggunakan shell login.

Proses mengaktifkan flag login dijelaskan di sini , juga beberapa perincian tentang apa shell login dapat ditemukan di sini .

Jadi, Anda perlu memeriksa opsi "Run as login shell" di pengaturan terminal Gnome. Diperlukan untuk membuka terminal baru setelah pengaturan bendera ini.

Terkadang diperlukan untuk mengatur perintah /bin/bash --login.


Untuk koneksi jarak jauh , penting untuk memahami perbedaan antara menjalankan sshsesi interaktif dan menjalankan perintah tunggal.

Saat menjalankan ssh serverdan kemudian bekerja dengan server secara interaktif Anda menggunakan shell login secara default dan itu semua baik-baik saja, tetapi untuk ssh server "command"Anda tidak menggunakan shell login dan itu akan diperlukan untuk menjalankannya ssh server 'bash -lc "command"'.

Doa jarak jauh mana pun dapat memiliki masalah yang sama dengan mengeksekusi perintah tunggal ssh.


4
Apa solusi yang setara pada mac?
Adam Grant

8
coba rvm get stable --autodan periksa pengaturan terminal Anda
mpapis

10
fyi: kami harus memulai terminal baru setelah mengatur ini.
oma

2
@mpapis Bagaimana cara saya mensetup gnome-terminal ke "Run command as shell login" pada server jarak jauh yang saya tidak dapat meneruskan server X ke mesin saya?
Waseem

12
Untuk mengikuti saran @ mpapis, --autosudah tidak digunakan lagi --auto-dotfilessehingga perintahnya sekarang adalah rvm get stable --auto-dotfiles
Mart Van de Ven

432

Anda perlu menjalankan yang berikut ini

$ source ~/.rvm/scripts/rvm

kemudian jalankan ini

$ type rvm | head -n 1

dan jika Anda mendapatkannya

rvm is a function

Masalah terpecahkan.

Anda juga perlu menjalankan user$ rvm requirementsuntuk melihat persyaratan ketergantungan untuk sistem operasi Anda

Sumber: https://rvm.io/rvm/install/

Saya lupa menyebutkan bahwa Anda perlu memasukkan kode ini ke dalam file ~ / .bashrc atau ~ / .zshrc Anda dan Anda tidak perlu menulis kode ini lagi. Bersulang!


2
Terima kasih. Bekerja untuk saya di ubuntu 10.04.
vekozlov

19
Solusi ini hanya berfungsi di sesi shell saat ini. Jika Anda mengikuti solusi ini, Anda harus mengulangi langkah-langkah ini setiap kali Anda masuk ke konsol lagi. Solusi yang lebih permanen adalah menambahkan berikut ini ke file ~ / .bashrc: if test -f ~ / .rvm / scripts / rvm; lalu ["$ (ketik -t rvm)" = "function"] || source ~ / .rvm / scripts / rvm fi
Stanley

Ini benar-benar harus di halaman integrasi gnome RVM, jauh lebih ringkas dan bekerja seperti pesona pada mint nadia menjalankan KDE & Cinammon
k4t434sis

1
Dan bagaimana jika itu masih bukan fungsi setelah Anda melakukan semua ini?
Br.Bill

Jika solusi @ Stanley tidak berfungsi, lakukan juga ini: stackoverflow.com/questions/820517/bashrc-at-ssh-login
Adam Grant

105

Untuk menyelesaikan secara permanen ini cukup potong / rekatkan baris berikut:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

Dari: ~/.bash_profile file

Untuk: ~/.bashrc file

Alasan ini berfungsi adalah yang .bashrcdieksekusi setiap kali Anda memasuki terminal, dan .bash_profilesetiap kali Anda login. Itulah sebabnya solusi /bin/bash --loginbekerja, tetapi Anda harus melakukannya setiap kali Anda memasuki terminal. Dengan cara ini Anda diatur hingga format berikutnya, dan Anda akan melupakan semua ini saat itu :)


Sebagai pengguna layar, saya selalu harus meletakkan baris ini ~/.bashrcsebagai gantinya ~/.bash_profile.
ryenus

2
Terima kasih! Saya sangat terganggu oleh keterlambatan dua detik yang diperlukan untuk gnome untuk masuk. Ini akan mencegah penundaan itu.
justinpage

6
Mengapa instalasi rvm tidak melakukan ini secara otomatis?
balki

@mpapis adalah manajer rilis untuk rvm dan dia mengatakan melakukannya dengan cara ini "dapat gagal sesi X (Fedora 17 jika saya ingat dengan benar), gagal sesi rsync ... dan lebih banyak alasan saya tidak dapat mengingat sekarang". Saya pikir saya akan tetap dengan `/ bin / bash --login.
kimbaudi

29

Saya juga menghadapi masalah ini. Akhirnya saya mengeksekusi baris ini di terminal.

source ~/.rvm/scripts/rvm

Masalah sudah diperbaiki. Karena baris ini akan membuat instance RVM berfungsi untuk waktu tertentu.


2
Jawaban paling sederhana dari semuanya. cukup masukkan baris itu ke ~ / .bashrc Anda dan Anda bisa menggunakan emulator terminal apa pun.
Nikkolasg

1
Hai - walaupun perintah ini 'memperbaiki' hal-hal untuk sesi istilah saya, hasilnya tidak lengket dan tidak membantu sesi istilah baru (atau lainnya). Dan tampaknya desktop juga tidak mengetahui perubahan. Saya "anti-" masalah login juga karena per sesi / berbasis login. Secara pribadi saya ingin kemampuan untuk membandingkan program yang sama dengan berbagai Ruby dan versi.
akan

1
Anda mvp yang asli. Tidak ada yang berhasil sampai saya mencoba ini. Saya tidak peduli jika ini sementara saya hanya perlu perbaikan.
ian-campbell

Di mana file instal untuk rvm, jadi ketika Anda menginstalnya, ini menangani masalah ini dan lainnya? Saya menggunakan proses yang dijelaskan di halaman rumah mereka, dan telah menghabiskan waktu berjam-jam untuk membuatnya "hanya bekerja". Seharusnya seperti "yum install rvm" dan semuanya sudah selesai dan siap untuk digunakan.
JosephK

21

RVM terbaru (rvm 1.11.6 (stable)) berhenti bekerja di Ubuntu (10.10 - 64 bit - nerdy gnat atau apa pun) - Saya terus mendapatkan

"RVM bukan fungsi, memilih rubi dengan 'penggunaan rvm ...' tidak akan berfungsi."

Sebelumnya, saya mendapat pesan, tetapi 'rvm 1.9.3-p0@rails321' akan berfungsi. Sekarang, itu tidak akan berhasil - Anda tidak dapat mengubah permata sama sekali.

Tidak ada yang berhasil, sampai saya menemukan ini - jadikan ini sebagai jalur TERAKHIR di /home/your-name/.bashrc

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"


2
"rvm get stable --auto" ditambahkan ke .bash_login [[-s "$ HOME / .rvm / scripts / rvm"]] && source "$ HOME / .rvm / scripts / rvm" dan menghapusnya dari .bashrc - I menambahkan sumber ~ / .bash_login di akhir .bashrc dan di MULAI skrip apa pun yang mengubah permata di tengah jalan
Rod McLaughlin

9

Seperti yang Anda katakan, kesalahan yang ditampilkan bisa menjadi yang berikut.

RVM is not a function, selecting rubies with 'rvm use ...' will not work.

You need to change your terminal emulator preferences to allow login shell.
Sometimes it is required to use `/bin/bash --login` as the command. 
Please visit https://rvm.io/integration/gnome-terminal/ for a example.

Seperti dikatakan di atas, cukup ketik ' / bin / bash --login ' di terminal Anda (setelah me-restart terminal Anda), kemudian ketik perintah 'rvm use 1.9.3' (untuk misalnya) dan akan mulai menggunakan versi yang sama.

Cukup jalankan perintah 'ruby -v' untuk mengonfirmasi bahwa RVM menggunakan versi Ruby yang diperbarui.


8

Saya punya masalah ini juga pada instalasi rvm baru, dan tidak ada jawaban di sini yang memperbaikinya. Pergi ke situs rvm resmi, pada bagian dasar, mereka memiliki perintah ini:

# dari http://rvm.io/rvm/basics

sumber $ (rvm 1.9.3 do rvm env --path)

Anda harus mengubah 1.9.3 untuk versi ruby ​​yang sebenarnya Anda inginkan, dan itu akan membuat fungsi rvm terlepas dari jenis shell.


7

meskipun Anda menerima jawaban, saya ingin menyarankan cara lain .. ~ / .bashrc dimuat sebelum shell apa pun dibuka. Tambahkan baris itu di akhir itu, dan Anda tidak perlu hal shell login itu


"itu hal shell login" ada karena suatu alasan, saya telah melakukan banyak tes dengan sumber RVM dan itu satu-satunya cara yang menjamin bekerja tanpa terdeteksi dan sulit untuk memecahkan kesalahan
mpapis

@mpapis Bisakah Anda menjelaskan alasannya? Dari jawaban lain, sepertinya sebagian besar baik-baik saja dengan memindahkan baris ke file rc
balki

misalnya bisa gagal sesi X (Fedora 17 jika saya ingat dengan benar), gagal sesi rsync ... dan lebih banyak alasan saya tidak bisa mengingat sekarang
mpapis

7

Mungkin Anda dapat mencoba di bawah ini:

  • Terminal Anda ->
  • Edit ->
  • Preferensi Profil ->
  • Judul dan Perintah ->
  • Periksa "Jalankan perintah sebagai shell login"
  • Selesai

Ini adalah solusi termudah dan yang benar, seperti shell normal yang melompati .profile, menggunakan opsi ini akan membuatnya memuat dan tidak perlu mengedit .bashrc sama sekali.
DWils


4

Buka Terminal dan kemudian Pergi ke Edit> Preferensi Profil dan kemudian pergi ke Tab " Judul dan Perintah " dan Periksa " Jalankan Perintah sebagai Login Shell ".

Boot Up a Bash dan Sekarang Anda dapat menginstal Permata langsung dari terminal tanpa menggunakan sudo dan kesalahan " RVM bukan fungsi, memilih rubi dengan 'penggunaan rvm ...' tidak akan berfungsi. " Akan dihilangkan.

Bersulang.


4

Semua jawaban di atas valid. Tetapi ketika saya menghadapi masalah yang sama, solusinya adalah sebagai berikut:

  • Perbarui ZSH. (Mencoba untuk memperbarui secara langsung tidak berfungsi karena suatu alasan. Jadi dihapus dan instal ulang versi yang diperbarui dari sini )
  • Tetapkan shell default sebagai zsh (yaitu jika Anda lebih suka zsh) menggunakansudo chsh -s $(which zsh) $USER
  • Pastikan kode berikut ada di bagian bawah Anda .zshrcsetelah Anda menginstal RVM terbaru yang mungkin menggunakan CURL dari situs RVM resmi

    [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
    source ~/.profile
  • TITIK PALING PENTING: Pastikan bahwa dalam .zshrcfile Anda setiap ekspor PATHditambahkan dengan :$PATH. Yang saya percaya adalah akar masalah saya bahkan setelah mengikuti langkah-langkah di atas.

  • posting ini semua masalah saya RVM Tidak menjadi fungsi hilang. Jika masih tidak berhasil, berikan beberapa jejak kesalahan di sini. Setelah beberapa jam berjuang untuk menyelesaikan masalah ini, saya yakin saya pasti telah melihat semua kesalahan terkait.

Semoga ini bisa membantu. Bersulang!


ya pak. Itu berhasil bagi saya. Tidak mengerti bagian POINT PALING PENTING tapi, itu berhasil.
Ricbermo

Ketika Anda mencoba menginstal RVM, itu akan memberi peringatan jika Anda memilikinya export PATH="/usr/bin:". Itu akan meminta Anda untuk menambahkannya $PATH. Ini adalah penyebab salah satu masalah saya. Oleh karena itu, setiap orang export PATHharus $PATHmenambahkan sehingga sebelum ekspor, apa pun PATHvariabel yang ditambahkan. Bagaimanapun, bagus bahwa ini sangat membantu.
Wisnu Narang

3

Prosedur untuk menginstal Ruby 1.9.3-p125 di Mac OSX 10.8 Mountain Lion

  1. Anda telah menginstal XCode terbaru (> = 4.3) dan dan baris perintah Objective-C compiler "clang".
  2. Anda harus menjalankan shell "bash" agar prosedur ini berfungsi.
  3. Pergi ke System Preferences
  4. Klik pada "Pengguna & Grup"
  5. Klik kunci di kiri bawah panel dan masukkan kata sandi Anda untuk membukanya.
  6. "Ctrl-Klik" pada ikon pengguna Anda di panel kiri panel dan pilih "Opsi Lanjutan ..."
  7. Ubah Shell Login menjadi "/ bin / bash"
  8. Tutup preferensi
  9. Buka jendela terminal (tekan perintah + bilah spasi dan ketik "terminal")
  10. Ikuti instruksi di:

http://www.frederico-araujo.com/2011/07/30/installing-rails-on-os-x-lion-with-homebrew-rvm-and-mysql/

Catatan:

  • Untuk menginstal ruby, Anda mungkin perlu menentukan kompilasi dentang:

    $ rvm instal 1.9.3p125 --with-gcc = dentang

  • Jika RVM mengeluh tentang / usr / local / rvm tidak ditemukan, Anda perlu membuat tautan:

    $ ln -s / Users / [nama pengguna Anda] /. rvm / usr / local / rvm


Saya pikir mereka hingga P194 sekarang. Jika Anda menginstal rvm 1.9.3 --with-gcc = clang, Anda akan mendapatkan versi terbaru 1.9.3 secara otomatis.
George Campbell


1

Saya mendapat kesalahan yang sama karena saya pernah menginstal versi lama rvm ruby-rvm dengan perintah apt-get.

Saya memecahkan masalah dengan menghapus baris skrip untuk mengkonfigurasi rvm lama dalam file .bashrc.

Periksa skrip konfigurasi rvm lama lalu jalankan source .profile



1

Saya memperbaikinya dengan menambahkan baris ini ke .bash_profile:

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

0

Saya memiliki kesalahan yang sama, tetapi tidak ada solusi di halaman ini yang tampaknya berhasil. Bagi saya itu sudah cukup untuk menambahkan rvmexecutable ke jalur saya:

PATH=$PATH:/usr/local/rvm/bin/

Et voila!


0

Saya memiliki masalah yang sama dan saya melakukan ini di .bash_profile saya dan berhasil. source "$HOME/.rvm/scripts/rvm".


0

Bagi mereka yang memiliki masalah yang sama dan mereka menggunakan lubuntu seperti saya, saya mengikuti tautan ini :

Anda memulai terminal Anda dengan

lxterminal -e "bash -il"

Terima kasih kepada @mpapsis yang mengarahkan saya ke arah yang benar


Karena tautan terkadang bersifat sementara, mungkin ide yang bagus untuk menempelkan sinopsis kecil dalam jawaban Anda, untuk anak cucu.
Marcel Wilson

0

Cara kotor saya untuk mengubah versi ruby ​​adalah

rvm alias create default ruby-2.2.3 && source ~/.bashrc && rvm list

ini bekerja karena saya memiliki baris di bawah di ~ / .bashrc saya tetapi anehnya itu tidak melakukan pekerjaan secara otomatis.

[[ -s "/usr/local/rvm/bin/rvm" ]] && source "/usr/local/rvm/bin/rvm"

Saya mencoba terhubung dengan --log ke wadah buruh pelabuhan saya

docker run -it imagename `/bin/bash --login`

tetapi dalam hal ini wadah tetap terbuka di latar belakang dan saya tidak bisa memasukkan perintah.

Saya mencoba zhc dan terminal dengan opsi "buka dengan /bin/bash --login"

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.