如何从 /usr/local 卸载 Ruby?

Posted

技术标签:

【中文标题】如何从 /usr/local 卸载 Ruby?【英文标题】:How to uninstall Ruby from /usr/local? 【发布时间】:2011-02-05 04:44:23 【问题描述】:

一切都运行良好,直到我们决定将 ruby​​ 从 1.8.6 升级到 1.8.7,然后一切都崩溃了。当我们从源代码编译 Ruby 1.8.7 时,它安装到 /usr/local/bin 中,而 Ruby 1.8.6 保留在 /usr/bin 中。 目前,我们已经卸载了 ruby​​ 1.8.6,并且我们从 /usr/local 中删除了 ruby​​ 1.8.7 文件。

当我们尝试“which ruby​​”时,它指向/usr/local。 如果有人可以帮助我们回到正轨,我们将不胜感激。并且知道如何从 /usr/local 卸载 ruby​​。 我们尝试了 yum remove ruby​​ ,它从 /usr/bin 中删除了 ruby​​。谢谢和干杯!

【问题讨论】:

对于 Mac OS 用户,> brew uninstall ruby​​ 应该可以工作 【参考方案1】:

编辑:正如 cmets 中所建议的那样。此解决方案适用于 Linux 操作系统。如果您从包管理器手动安装了 ruby​​,那也是如此。

如果你想拥有多个 ruby​​ 版本,最好拥有RVM。在这种情况下,您不需要删除 ruby​​ 旧版本。

如果要删除,请按照以下步骤操作:

首先你应该找到 Ruby 在哪里:

whereis ruby

将列出它在您的系统上存在的所有位置,然后您可以显式删除它们。或者你可以使用这样的东西:

rm -rf /usr/local/lib/ruby
rm -rf /usr/lib/ruby
rm -f /usr/local/bin/ruby
rm -f /usr/bin/ruby
rm -f /usr/local/bin/irb
rm -f /usr/bin/irb
rm -f /usr/local/bin/gem
rm -f /usr/bin/gem

【讨论】:

在建议某人从 /usr 中删除 Ruby 之前,找出它运行的操作系统和版本真的很重要。 Apple 在 Snow Leopard 中包含 Ruby,并有代码从应用程序中调用它。删除这些将静默地破坏应用程序。如果它是 Linux 系统,并且 Ruby 是通过包管理器安装的,那么应该使用它来删除文件。而且,在任何一种情况下,使用 RVM 之类的东西都可以完全消除删除预安装 Ruby 的需要。 如果有人复制/粘贴了 rm 命令的那块,就会感到悲伤。不要在没有阅读孩子的情况下复制/粘贴。 在删除 ruby​​ 时,不要忘记删除其他与 ruby​​ 相关的内容,例如 erbgemirbrakerdocri、@987654331 @(对我来说,/usr/local/bin)。【参考方案2】:

如果 1.8.6 在 /usr/bin 中,卸载它不是一个好主意。它归操作系统所有,预计会存在。

如果您将/usr/local/bin 放在您的PATH 中/usr/bin 之前,那么您在/usr/local/bin 中安装的东西将在/usr/bin 中任何同名的东西之前找到,有效地覆盖或更新它们,而实际上并没有这样做。您仍然可以通过在您的 #! 中明确使用 /usr/bin 来联系他们。代码顶部的解释器调用行。

@Anurag 推荐使用 RVM,我将支持它。除了操作系统的 1.8.6 之外,我还使用它来管理 1.8.7 和 1.9.1。

【讨论】:

【参考方案3】:

在 /usr/bin 中创建一个名为“ruby”的symlink,并将其指向最新安装的 ruby​​。

你可以使用ln -s /usr/bin/ruby /to/the/installed/ruby/binary之类的东西

希望这会有所帮助。

【讨论】:

您的意思是 /etc/bin/ruby 还是 /usr/bin/ruby?此外,还有一些额外的与 ruby​​ 相关的名称需要链接,例如 irb、rdoc 等。 Greg,我的错...你指出的正确,它是 /usr/bin/ruby,就像第一行一样。我会纠正它。谢谢:-) 如果操作系统默认将 Ruby 安装在 /usr/bin 中,我建议不要在 /usr/bin 中链接到其他版本的 Ruby。在 Apple 的 Snow Leopard 上,Apple 现在正在安装使用预装在 /usr/bin 中的 Ruby 1.8.7 的代码。弄乱它可能会导致该应用程序或以后出现的任何细微错误/故障。我认为最好使用 RVM 来管理沙盒红宝石或安装到 /usr/local/bin 或可能在 /opt/ 下的某个地方并调整您的路径;把它放在系统不会看到的地方。【参考方案4】:

如果 ruby​​ 是按以下方式安装的:

./configure --prefix=/usr/local
make
sudo make install

您可以通过以下方式卸载它:

检查已安装的 ruby​​ 版本;让我们假设 2.1.2

wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.bz2
bunzip ...
tar xfv ...
cd ruby-2.1.2
./configure --prefix=/usr/local
make
sudo checkinstall
  # will build deb or rpm package and try to install it

安装后,您现在可以删除软件包,它将删除目录/文件/等。

sudo rpm -e ruby # or dpkg -P ruby (for Debian-like systems)

可能还有一些工件:

Removing ruby ...
  warning: while removing ruby, directory '/usr/local/lib/ruby/gems/2.1.0/gems' not empty so not removed.
  ...

手动删除它们。

【讨论】:

【参考方案5】:

sudo make uninstall 使用官方下载页面中的 Ruby 2.4 tar 为我解决了问题。

【讨论】:

【参考方案6】:

这样做:

sudo apt purge ruby

【讨论】:

以上是关于如何从 /usr/local 卸载 Ruby?的主要内容,如果未能解决你的问题,请参考以下文章

macbook 怎么卸载brew

mac之brew安装卸载使用

如何删除node

如何卸载scons?

Mac 下 彻底卸载Node 终端命令

从 rbenv 卸载 ruby​​ 版本