ChatGPT解决这个技术问题 Extra ChatGPT

How to remove RVM (Ruby Version Manager) from my system

How can I remove RVM (Ruby Version Manager) from my system?

Not sure about your intentions to remove rvm -- it could be its 'obtrusiveness' -- but rbenv is a a worthwhile alternative.You can still manage multiple Ruby versions on your system, but it doesn't override shell commands, doesn't manage gemsets (Bundler is more than sufficient), and doesn't need to be loaded in the shell.

t
tadman

There's a simple command built-in that will pull it:

rvm implode

This will remove the rvm/ directory and all the rubies built within it. In order to remove the final trace of rvm, you need to remove the rvm gem, too, if you installed that:

gem uninstall rvm

There may be elements left over from a Homebrew, Apt or DNF install of it that require removal as well. This depends on how you installed it in the first place. That clean-up step is optional, as RVM will no longer be involved in Ruby, but can help keep things organized.

If you've made modifications to your PATH you might want to pull those, too. Check your .bashrc, .profile and .bash_profile files, among other things.

You may also have an /etc/rvmrc file, or one in your home directory ~/.rvmrc that may need to be removed as well.


+1 for noting the profile settings and the gem uninstall, if you didn't listen to Wayne in the first place and installed it as a gem. :)
If you -like me- have rvm configured in passenger, make sure to reinstall passenger afterwards too.
It may break it temporarily until you create a new shell, as that's just how things like bash behave when you yank executables out of the PATH.
I also had a reference to RVM in ~/.zshrc
Anyone else feel like uninstalling rvm should be easier than this? Good gravy.
R
Rory O'Kane

If the other answers don’t remove RVM throughly enough for you, RVM’s Troubleshooting page contains this section:

How do I completely clean out all traces of RVM from my system, including for system wide installs? Here is a custom script which we name as cleanout-rvm. While you can definitely use rvm implode as a regular user or rvmsudo rvm implode for a system wide install, this script is useful as it steps completely outside of RVM and cleans out RVM without using RVM itself, leaving no traces. #!/bin/bash /usr/bin/sudo rm -rf $HOME/.rvm $HOME/.rvmrc /etc/rvmrc /etc/profile.d/rvm.sh /usr/local/rvm /usr/local/bin/rvm /usr/bin/sudo /usr/sbin/groupdel rvm /bin/echo "RVM is removed. Please check all .bashrc|.bash_profile|.profile|.zshrc for RVM source lines and delete or comment out if this was a Per-User installation."


t
the Tin Man

When using implode and you see:

Psychologist intervened, cancelling implosion, crisis avoided :)

Then you may want to use --force

rvm implode --force

Then remove RVM from the following locations:

rm -rf /usr/local/rvm
sudo rm /etc/profile.d/rvm.sh
sudo rm /etc/rvmrc
sudo rm ~/.rvmrc

Check the following files and remove or comment out references to RVM:

~/.bashrc 
~/.bash_profile 
~/.profile 
~/.zshrc
~/.zlogin

Comment-out/remove the following lines from /etc/profile:

 source /etc/profile.d/sm.sh
 source /etc/profile.d/rvm.sh

/etc/profile is a read-only file so use:

sudo vim /etc/profile

And after making the change write using a bang!

:w!

Finally re-login/restart your terminal.


What makes that initial message appear?
If RVM was installed for a single user, it shouldn't have been done using sudo initially, so none of its files will be in the /etc or /usr paths. Only when it was installed using the multi-user or with sudo will you see that, and their existence are strong hints that the RVM installation documentation was NOT followed to install it in the first place.
M
MrYoshiji

In addition to @tadman's answer I removed the wrappers in /usr/local/bin as well as the file /etc/profile.d/rvm.

The wrappers include:

erb
gem
irb
rake
rdoc
ri
ruby
testrb

Note: it’s /usr/local/bin, not /user/local/bin.
C
Caffeine Coder

A lot of people do a common mistake of thinking that 'rvm implode' does it . You need to delete all traces of any .rm files . Also , it will take some manual deletions from root . Make sure , it gets deleted and also all the ruby versions u installed using it .


t
the Tin Man

Remove the RVM load script from /.bash_rc or /.zsh_rc, then use:

rm -rf /.rvm

Or:

rvm implode

Is it rvm rm -rf /.rvm or rm -rf ~/.rvm ?
t
the Tin Man

Run:

rvm implode

Now you need to uninstall the RVM gem using:

gem uninstall rvm

Check if there are any remaining RVM files in your home directory, if yes remove them.

Go to the home directory and list all hidden files:

ls -a

rm  .rvm
rm  .rvmrc

Note: RVM isn't a gem so gem uninstall rvm will fail.
C
Community

Note that if you installed RVM via apt-get, you have to run some further steps than rvm implode or apt-get remove ruby-rvm to get it to really uninstall.

See "Installing RVM on Ubuntu".


c
chbrown

If you're still getting a env: ruby_executable_hooks: No such file or directory when calling some Ruby package, that means RVM left a little gift for you in your $PATH.

Run the following to find the offending scripts:

grep '#!/usr/bin/env ruby_executable_hooks' /usr/local/bin/*

Then rm all the matches. You'll have to reinstall all of those libraries with an RVM-free gem, of course.


l
leenyburger

For other shell newbies trying to fix the PATH variable

After following instructions in accepted answer, check and modify your PATH variable if necessary :

env | grep PATH 

if you see "rvm" anywhere, you need to figure out where you are setting PATH and modify. I was setting it in 3 files - so check all the following files:

vim .bashrc  

Delete the lines in the file referencing rvm using the dd command. :wq to save and exit.
source .bashrc to "reload"

Repeat this process (starting with the vim command) for .profile and .bash_profile


t
the Tin Man

Per RVM's troubleshooting documentation "How do I completely clean out all traces of RVM from my system, including for system wide installs?":

Here is a custom script which we name as 'cleanout-rvm'. While you can definitely use rvm implode as a regular user or rvmsudo rvm implode for a system wide install, this script is useful as it steps completely outside of RVM and cleans out RVM without using RVM itself, leaving no traces. #!/bin/bash /usr/bin/sudo rm -rf $HOME/.rvm $HOME/.rvmrc /etc/rvmrc /etc/profile.d/rvm.sh /usr/local/rvm /usr/local/bin/rvm /usr/bin/sudo /usr/sbin/groupdel rvm /bin/echo "RVM is removed. Please check all .bashrc|.bash_profile|.profile|.zshrc for RVM source lines and delete or comment out if this was a Per-User installation."


t
the Tin Man

I am running Ubuntu 19.04 and followed all the instructions above and then some. Finally, what worked for me was to run

sudo apt autoremove rvm

and now when I try and reinstall RVM it's actually gone. RVM is invasive, to say the least.


There are numerous attempts to explain how to install RVM across the internet, and most are very out-of-date and quite wrong because the application has grown a lot in the years since it was released. RVM's site is the definitive source for information about installing, deleting, or using it. There are many pages because it's flexible tool, but if you follow the basic installation you'll find it's not at all invasive and quite easy to manage or remove.
t
the Tin Man

Complementing @Kingsley Ijomah answer...

It may be necessary to fix the PATH so that the rvm command also disappears from the terminal.

To check your PATH:

env | grep PATH

To fix your PATH removing RVM directories:

dir_to_remove=/home/user/.rvm/bin
PATH=:$PATH:
PATH=${PATH//:$dir_to_remove:/:}
PATH=${PATH#:}; PATH=${PATH%:}

In this case, if you have more than one directory, change dir_to_remove one at a time.

I needed to remove some rvm and rbenv directories as I am now using asdf.

Be careful.