linux安装ruby、gem、bundler

AffettoIris 2023-12-18 2,974 12/18

 

起源

使用WhatWeb网安工具需要具备ruby环境。yum install ruby安装的不是最新版本的ruby,而是ruby 2.0,后续可能会导致使用WhatWeb报错,ruby -v 查看版本,WhatWeb需要ruby2.5以上版本。

卸载已安装的Ruby

我的第一个ruby是yum install ruby安装的。

ruby -v 已安装的ruby查看版本,先gem uninstall ruby卸载Ruby gem,然后sudo yum remove ruby卸载整个Ruby

源码安装Ruby

ruby安装包下载网下载某版本ruby,例如ruby-2.2.3.tgz,然后tar -xvzf ruby-2.2.3.tgz ,然后cd ruby-2.2.3, 然后./configure,然后make,然后sudo make install。此时./ruby -v有效,ruby -v会报错找不到命令/usr/bin/ruby: No such file or directory

注意到系统环境目录虽然有好几个(echo $PATH查看),但是这里指明了ruby要在/usr/bin/ruby这个位置。

我们建立个软连接,我的ruby安装在/root/ruby-2.7.8/ruby,我们执行ln -s /root/ruby-2.7.8/ruby /usr/bin/ruby,完毕。

linux安装ruby、gem、bundler

多个版本的Ruby并存

简单,无非删掉旧软连接,建立新软连接。

Gem

ruby的gem是什么?

包管理器。类似php的composer、Python的pip或Java的Maven。它允许您轻松地安装、卸载和查找Ruby应用程序和库。

  1. 安装gem:好像源码安装完ruby,gem也安装完了,如果gem -v没反应,那就再yum install rubygems安装。

    注意,yum install rubygems会顺带安装ruby2.0,并重新更替软链接/usr/bin/ruby,此时你执行ruby -v会显示ruby 2.0.0p648 (2015-12-16) [x86_64-linux],可我自己安装的是ruby2.7。那还能怎么办,手动替换软链接呗。

    每个gem都属于自己版本的ruby,就像pip -V会显示pip 22.3.1 from D:\Anaconda2\envs\Anaconda3.9\lib\site-packages\pip (python 3.9)说明该pip属于python 3.9。

    我还没找到显示gem对应的ruby版本的方法。但确实存在对应关系:因为我ruby -v显示ruby 2.0.0时gem -v显示2.0.14.1,当我ruby -v显示ruby 2.7.8时gem -v显示3.1.6。

    ruby 2.0.0的gem安装的库如iconv不能被ruby 2.7.8调用,就像pip一样。

  2. gem source查看gem源。

    gem有换源的操作,但是我执行gem install iconv也没等太久,就没管。

  3. gem list查看gem安装的库。

linux安装ruby、gem、bundler

Bundler

Ruby的Bundler是一个用于管理Ruby项目的依赖关系的工具(安装、卸载、锁定和管理项目的依赖库)。

ruby的bundler和gem有什么关系和区别?

Bundler 是用于管项目的依赖(安装、卸载、锁定和管理项目的依赖库)。而 Gem 单纯地安装库,就像pip。

  1. 安装:gem install bundler,一般会报错,因为你没有指定安装的bundler版本,报错附带提示你可用于你的ruby的最高bundler版本如2.7.8,然后执行gem install bundler-2.4.22 -v 2.7.8

  2. bundler -v # 查看该版本

  3. 根据我的观察,在项目里使用bundler install安装项目依赖时,库源就是gem sources显示的网址,下载速度略慢,还能接受。

 

- THE END -

AffettoIris

12月18日04:42

最后修改:2023年12月18日
1

非特殊说明,本博所有文章均为博主原创。

共有 2 条评论

  1. Ruby是啥语言啊,没听过,和Python比起来如何? ?

    1. AffettoIris

      AffettoIris博主

      @棋: ruby语言太小众啦,但好像也是世界上编程语言使用率TOP前20,有庞大的使用人群和社区。我学计算机学了四年,这次还是我第一次上手ruby,也只是简单搭个ruby解释器。
      肯定还是python简单、库多,python可是TOP前三呀 ?