当前位置: 首页 > news >正文

在 Ubuntu 新装系统中安装 ruby 的几点注意

在这里插入图片描述

用 apt 管理器安装

  1. 首先,新安装的 Ubuntu 系统需要更新apt仓库:
apt update
  1. 接着可以直接用以下命令安装 ruby:
apt install ruby

不过,安装的是比较老的 ruby 2.3 版本。

所以,还是得用 rvm 来安装最新的 ruby 3.0+

用 rvm 安装

  1. 首先,导入密钥:
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

如果,上面密钥服务器 hkp://keys.gnupg.net 无法连接,请更换为如下服务器地址:

hkp://pgp.mit.edu
  1. 安装CA证书:
apt install ca-certificates
  1. 可以选择安装稳定或开发版的rvm:
# 安装稳定版
curl -sSL https://get.rvm.io | bash -s stable

# 安装开发版
curl -sSL https://get.rvm.io | bash

如果出现如下错误:

curl: (60) Issuer certificate is invalid.
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

需要在调用 cur l时添加 -k 参数:

curl -skSL https://get.rvm.io | bash -s stable
  1. 安装完 rvm 之后,需要用 source 指令更新一下当前 shell 环境;然后我们可以查询当前所有可用的 ruby 版本:
root@ubuntu:/# rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.10]
[ruby-]2.3[.8]
[ruby-]2.4[.10]
[ruby-]2.5[.8]
[ruby-]2.6[.6]
[ruby-]2.7[.2]
[ruby-]3[.0.0]
  1. 最后,我们可以选择安装最新版的 ruby 啦:
rvm install ruby-3

确认 ruby 安装无误:

hopy@ubuntu:/# ruby -v
ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-linux]

打完收工,棒棒哒!😎

相关文章:

  • 按行分块和按列分块
  • 【Vue3】穿梭框 -- 思路与实现分析
  • SpringBoot读取yml配置文件
  • 制胜充电桩下半场,特来电、星星充电们要靠运营?
  • 使用Keras Tuner进行自动超参数调优的实用教程
  • Vue2.0到3.0的过渡,setup,ref函数,reactive函数,计算属性computed、监听属性watch
  • Springboot毕设项目基于Springboot的手机电商网站lmo47(java+VUE+Mybatis+Maven+Mysql)
  • springboot-rabbitmq-reply 消息直接回复模式
  • “查找”学习提纲(二)——树型查找和散列查找
  • 5-8 uni-app 全端离线本地存储方案
  • 三维感知/三维生成与重建讲座笔记( GAMES Webinar 246期)
  • EarlyStopping
  • 北京十大律师事务所排名前十名更新(2022最新发布)
  • 马克思主义基本原理
  • 七、JavaScript:DOM对象、元素选择器
  • Centos6.8 使用rpm安装mysql5.7
  • es的写入过程
  • JS专题之继承
  • react 代码优化(一) ——事件处理
  • 从PHP迁移至Golang - 基础篇
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 翻译--Thinking in React
  • 分布式熔断降级平台aegis
  • 分布式事物理论与实践
  • 服务器之间,相同帐号,实现免密钥登录
  • 使用docker-compose进行多节点部署
  • 系统认识JavaScript正则表达式
  • 源码安装memcached和php memcache扩展
  • 再谈express与koa的对比
  • No resource identifier found for attribute,RxJava之zip操作符
  • Java总结 - String - 这篇请使劲喷我
  • 第二十章:异步和文件I/O.(二十三)
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​插件化DPI在商用WIFI中的价值
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • # 飞书APP集成平台-数字化落地
  • #QT(智能家居界面-界面切换)
  • $(selector).each()和$.each()的区别
  • (2015)JS ES6 必知的十个 特性
  • (vue)页面文件上传获取:action地址
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (学习日记)2024.01.19
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)http-server应用
  • (转)setTimeout 和 setInterval 的区别
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • **python多态
  • ./和../以及/和~之间的区别
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .NET 8.0 中有哪些新的变化?
  • .net core 6 集成和使用 mongodb
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .sh
  • .vue文件怎么使用_vue调试工具vue-devtools的安装