rvm安装:Ruby安装错误

10

我想在我的Linux Mint 12上安装Ruby。

我正在按照这个教程这个教程操作。

当我运行rvm install 1.9.3时,我看到了这个错误:

Installing Ruby from source to: /usr/share/ruby-rvm/rubies/ruby-1.9.3, this may take a while depending on your cpu(s)...

ruby-1.9.3 - #fetching 
ruby-1.9.3 - #extracting ruby-1.9.3- to /usr/share/ruby-rvm/src/ruby-1.9.3
ERROR: Error running 'bunzip2 < '/usr/share/ruby-rvm/archives/ruby-1.9.3-.tar.bz2' | tar xf - -C /usr/share/ruby-rvm/tmp/rvm_src_4428', please read /usr/share/ruby-rvm/log/ruby-1.9.3/extract.log
ERROR: There has been an error while trying to extract the source.  
Halting the installation.
ERROR: There has been an error fetching the ruby interpreter. Halting the installation.

如何修复它?

编辑:@ka8725

bunzip2已安装。 当我运行cat /usr/share/ruby-rvm/log/ruby-1.9.3/extract.log时,我看到:

[2012-02-25 01:11:55] bunzip2 < '/usr/share/ruby-rvm/archives/ruby-1.9.3-.tar.bz2' | tar xf - -C /usr/share/ruby-rvm/tmp/rvm_src_32604
bunzip2: (stdin) is not a bzip2 file.
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
[2012-02-25 01:12:16] bunzip2 < '/usr/share/ruby-rvm/archives/ruby-1.9.3-.tar.bz2' | tar xf - -C /usr/share/ruby-rvm/tmp/rvm_src_32740
bunzip2: (stdin) is not a bzip2 file.
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
[2012-02-25 01:13:50] bunzip2 < '/usr/share/ruby-rvm/archives/ruby-1.9.3-.tar.bz2' | tar xf - -C /usr/share/ruby-rvm/tmp/rvm_src_383
bunzip2: (stdin) is not a bzip2 file.
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
[2012-02-25 01:13:52] bunzip2 < '/usr/share/ruby-rvm/archives/ruby-1.9.3-.tar.bz2' | tar xf - -C /usr/share/ruby-rvm/tmp/rvm_src_474
bunzip2: (stdin) is not a bzip2 file.
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
[2012-02-25 01:13:58] bunzip2 < '/usr/share/ruby-rvm/archives/ruby-1.9.3-.tar.bz2' | tar xf - -C /usr/share/ruby-rvm/tmp/rvm_src_568
bunzip2: (stdin) is not a bzip2 file.
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
[2012-02-25 01:18:57] bunzip2 < '/usr/share/ruby-rvm/archives/ruby-1.9.3-.tar.bz2' | tar xf - -C /usr/share/ruby-rvm/tmp/rvm_src_4428
bunzip2: (stdin) is not a bzip2 file.
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors

大家好,又有更新啦 :)

下面是情况说明:

当我运行 rvm requirements 命令时,会输出 unrecognized error 等等 的错误信息。但是,当我运行 rvm notes 命令时,会显示需要安装的必备东西。但是,当我安装这些必备内容后,rvm 就被移除了,于是我又要重新安装 rvm!无论是一次、两次、还是十次、永远都是如此 :)。

以下是我需要安装的包:

 sudo apt-get install build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev

1
我们是在谈论一个全新的 rvm 安装吗? - s.m.
1
好的,因为你本来就不应该以root用户身份使用rvm。顺便说一下,我已经编辑了我的评论。 - s.m.
bunzip2 < '/usr/share/ruby-rvm/archives/ruby-1.9.3-.tar.bz2' | tar xf - -C /usr/share/ruby-rvm/tmp/rvm_src_474 的执行结果是什么? - ka8725
1
我不理解的是/usr/sharervm应该被限制在~/.rvm中。你一定做错了什么。请使用bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)卸载并重新安装rvm - s.m.
很高兴你能解决 :) 为了以防万一,我会发布一个答案。 - s.m.
显示剩余6条评论
9个回答

14

使用以下命令卸载并重新安装rvm

bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

为了纪念,我会补充一下错误信息中的那部分内容:

Installing Ruby from source to: /usr/share/...

这让我开始考虑rvm安装可能出了问题,就像我说的那样,通常情况下它完全包含在~/.rvm目录中。


10
我只需简单地执行以下操作即可解决我的问题: rvm get head rvm reload 以及rvm install 1.9.3

6

在评论中建议的执行rvm更新操作后,我得到了一些有关如何解决问题的良好错误提示。按照错误提示建议,我使用curl卸载了apt-get ruby-rvm并重新安装。效果很好。查看文件名,apt-get版本的rvm似乎缺少了版本的最后一部分。应该是ruby-1.9.3-p327.tar.bz2或类似的东西,而不是ruby-1.9.3-.tar.bz2。

以下是我所做的和rvm更新后错误提示建议的内容:

  sudo apt-get --purge remove ruby-rvm
  sudo rm -rf /usr/share/ruby-rvm /etc/rvmrc /etc/profile.d/rvm.sh

  open new terminal and validate environment is clean from old rvm settings:

  env | GREP_OPTIONS= \grep rvm

install RVM:

  curl -L https://get.rvm.io | bash -s stable

fix some more screwed up stuff from apt-get ruby-gem

   make ~/.bash_profile look like this(it loads rvm as a function in bash):

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

update RVM:

  rvm update
  rvm reload

install ruby

  rvm install 1.9.3
  rvm use 1.9.3 --default

install current rubygems

  rvm rubygems current

install rails

  gem install rails

完成!


2
问题已解决,以下是解决方法(如果您想了解):
正如 s.m. 所说,我卸载了所有内容,然后以普通用户身份打开另一个终端会话并运行:
bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

我首先作为普通用户而非root用户运行命令source /home/my-desktop-username/.rvm/scripts/rvm,然后再以普通用户身份运行命令rvm requirements。接着我复制所需内容并关闭该会话,再打开一个root会话利用sudo安装这些要求。
然后我关闭该会话并打开一个普通用户会话,然后运行rvm install ruby-1.9.3-p125。如果你以root用户身份运行此命令,将会提示你rvm未安装,并建议你使用sudo apt-get install rvm来安装它(不要这样做!) 总之,我遇到两个问题:我遵循的教程没有说需要运行source /home/my-desktop-username/.rvm/scripts/rvm 也没有说不应该以root用户身份运行rvms.m告诉了我这些。感谢所有人,特别是s.m不要相信博客作者、YouTube用户或者论坛。只相信STACKOVERFLOW的用户!

2
如果您运行cat /usr/share/ruby-rvm/archives/ruby-1.9.3-.tar.bz2,您将会看到: <html> <head><title>404 Not Found</title></head> <body bgcolor="white"> <center><h1>404 Not Found</h1></center> <hr><center>nginx/1.2.1</center> </body> 因此,rvm不知道在哪里找到ruby-1.9.3(似乎路径被弄乱了'3-.tar')。
而且,在Ubuntu中1.9.1与1.9.3的“兼容性”是一个(并不好笑的)玩笑。
对我来说解决方法是: rvm package install openssl rvm install ruby-1.9.2 --with-openssl-dir=/usr/share/ruby-rvm/usr 因为1.9.2恰好满足了我所有的gem依赖项(例如nokogiri)。

1

我遇到了与bunzip2相同的问题。

~/.rvm/log/ruby-1.9.3-p125/extract.log上的尾部显示:

bunzip2: (stdin) is not a bzip2 file.
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors

原来下载的文件是rvm网站的HTML主页,而不是存档本身。
所以,如果像我一样之前的所有解决方案都没有奏效,请检查您的存档文件类型:
$ file ruby-1.9.3-p125.tar.bz2
ruby-1.9.3-p125.tar.bz2: HTML document, UTF-8 Unicode text, with very long lines

如果你遇到这种情况,只需删除存档文件,然后再尝试重新安装即可。

1
对于Ubuntu 18.10,我在通过APT安装后遇到了相同的错误。使用命令“rvm install 2.5.1”失败,并出现了与参考文献相同的错误。在完成github上针对Ubuntu的说明并重新启动我的VPS后,使用命令“rvm install ruby”安装了ruby v 2.6.3。由于我在vps上,所以必须先运行“source /etc/profile.d/rvm.sh”命令。 Github RVM Repo for Ubuntu

1

/usr/share/ruby-rvm - 这是RVM的非标准安装路径,由Ubuntu创建,该路径中的内容已经损坏,不仅存在您遇到的问题,还有许多其他问题。因此,我建议清理它并重新开始。 - mpapis
我按照你的答案操作了,所以我应该已经清除了我的环境,但仍然需要使用usr/share/ruby-rvm。所以如果像你说的那样我还有其他问题,那么我的问题实际上并没有得到解决,哈哈! - Lynob

0

cat /usr/share/ruby-rvm/log/ruby-1.9.3/extract.log

看起来你没有安装bunzip2。你应该安装它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接