如何在 Ubuntu 16.04 LTS 上安装 Ruby?

2024年10月17日 | 7 分钟阅读

引言

Ruby 是一种动态的、通用的编程语言。它由 Yukihiro Matsumoto 在 20 世纪 90 年代中期设计和开发。

它是跨平台的,并支持多种编程范式来开发应用程序,其文件扩展名为 .rb。

Ruby 的开发重点是编程的简洁性和生产力。 每件事都是一个对象,例如 Ruby 中的基本数据类型。 它是一种动态类型语言,并使用即时编译器和垃圾回收。 它支持多种编程语言,例如函数式、面向对象和过程式编程。 根据开发人员的说法,Ruby 的灵感来自 Lisp、Java、BASIC、Ada、Eiffel、Smalltalk 和 Perl。

Ruby 的历史

早期概念

Yukihiro "Matz" Matsumoto 曾表示,Ruby 在 1993 年被接受。 他在 1999 年的 ruby-talk 邮件列表帖子中定义了他的一些关于该语言的计划。 Matsumoto 将 Ruby 的结构定义为与其基础上的基本 Lisp 语言相同,对象系统与 Smalltalk 相同,块受高阶函数的影响,可能的实用程序与 Perl 相同。

"Ruby" 这个词是在 Keiju 和 Matsumoto 于 1993 年 2 月 24 日在线聊天期间产生的,当时该语言的代码尚未指定。 最初提出了两个名称:“Ruby”和“Coral”。 在给 Ishitsuka 的最新电子邮件中,Matsumoto 选择了后者。 后来,Matsumoto 注意到选择“Ruby”名称的一个方面 - 它是他一位同事的诞生石。

早期版本

Ruby 的 0.95 版本的第一个公开发布于 1995 年 12 月 21 日在日本国内的新闻组中发布。 随后两天内又发布了三个 Ruby 版本。 该版本与日语启动相对应,即 ruby-list 邮件列表。 对于这门新语言来说,这是最初的邮件列表。

在此开发阶段已经有几个在最新的 Ruby 版本中熟悉的方面,例如垃圾回收、异常处理、闭包、迭代器、混入、使用继承的类和面向对象的设计。
1995 年,在发布 Ruby 的 0.95 版本之后,在这些年中发布了许多稳定的 Ruby 版本

  • 1996 年 12 月 25 日:Ruby 1.0
  • 1998 年 12 月:Ruby 1.2
  • 1999 年 8 月:Ruby 1.4
  • 2000 年 9 月:Ruby 1.6

第一篇 Ruby 文章于 1997 年在网络上发布。 Matsumoto 受雇于 netlab.jp 作为一名全职开发人员,负责该语言的开发。 Ruby 应用程序存档由 Matsumoto 于 1998 年发布,同时发布了 Ruby 的基本英语语言的主页。

最初的英语 ruby-talk 邮件列表于 1999 年启动,这表明日本以外的语言兴趣日益浓厚。 到 2000 年,Ruby 在日本比 Python 更受欢迎。 第一本英语语言书籍,即 Programming Ruby,于 2000 年 9 月印刷,后来免费向公众发布,进一步传播了 Ruby 在英语使用者中的接受度。

英语邮件列表,即 ruby-talk,在 2002 年初获得了比日语 ruby-list 更多的通知,代表了 Ruby 在非日语世界中日益普及。

1. Ruby 版本 1.8 和 1.9

Ruby 的 1.8 版本最初于 2003 年 8 月发布,持续了很长时间,并于 2013 年 6 月停止工作。 Ruby 的 1.8 版本仅与 Ruby 的 1.9 版本部分兼容。
Ruby 的 1.8 版本对各种行业标准负有责任。

  • 对于 Ruby,语言规范由信息技术促进机构的开放标准促进中心设计,以提交给 JISC(日本工业标准委员会),然后提交给 ISO(国际标准化组织)。
  • 2011 年,它被采纳为日本工业标准,并在 2012 年成为国际标准。
  • 从 2011 年 10 月 31 日发布的 Ruby 的 1.9.3 版本开始,Ruby 从在 GPL 和 Ruby 许可证上获得双重许可转变为在两条款 BSD 许可证和 Ruby 许可证上获得双重许可。

1.9 版本的采用因 1.8 版本的修改而放缓,这需要重新指定许多著名的第三方 gem。 Ruby 版本 9 宣布了对 1.8 系列的各种重要修改。 一些例子是

  • 块局部变量
  • 额外的 lambda 语法
  • 带有冒号的额外哈希文字语法
  • 支持每个字符串的字符编码
  • 新的套接字 API(支持 IPv6)
  • 导入安全性,即 require_relative。

Ruby 版本 2

Ruby 的 2.0 版本应该与 Ruby 的 1.9.3 版本完全向后兼容。 截至 2013 年 2 月 24 日的 2.0.0 官方版本,只有轻微的(已知的)不兼容性。

  • Ruby 的 2.0 版本添加了各种新功能,例如
  • 方法关键字的参数,
  • Module#prepend 新方法扩展类,
  • 用于创建符号数组的文字,
  • Enumerable 的惰性求值 API,以及
  • 使用 #to_h 将对象转换为哈希的新对话。

从 2.1.0 版本开始,Ruby 的版本控制策略被修改为与语义版本控制更相同。 Ruby 的 2.2.0 版本包含速度提升、库和错误修复更新,并删除了一些已弃用的 API。 此版本解决了对内存处理的修改,这是一种额外的垃圾收集器,它支持直接针对 jemalloc 编译的选项和符号的垃圾收集。 此外,它还支持带有 spawn() 和 system() 的 vfork(2),并支持 Unicode 7.0 规范。

在 Power64 上,自 2.2.1 版本以来,Ruby MRI 的性能得到了升级。 已过时或删除的功能包括 Logger::Application、GServer、lib.complex.rb、lib/rational.rb、Digest::HMAC、DB 库、callcc 以及几个 C API 函数。

Ruby 的 2.3.0 版本包含一些性能改进、错误修复和改进,例如对 Proc#call、IO 和 Socket 异常关键字用法、默认 Net::FTP 连接、Thread#name 处理的修改以及从 stdlib 中删除 Rake。 一些其他重要的修改是

  • 默认情况下,考虑将每个字符串文字冻结的功能,从而在字符串操作中添加了大量性能。
  • 哈希比较允许直接检查值/键对,而不仅仅是键。
  • 默认情况下,gem,即 did_you_mean,现在已捆绑并在启动时需要自动在 NoMethodError 或 NameError 上推荐相同的名称匹配。
  • 一个安全导航运算符,即 &,使 nil 处理更容易。
  • Array#dig 和 Hash#dig 可以轻松获取嵌套值。
  • .grep_v(regexp) 匹配提供的正则表达式的每个负例子的其他功能。

Ruby 的 2.4.0 版本包含对实例变量访问、Array#min、Array#max 和哈希表的性能改进。 一些其他重要的修改是

  • Binding#irb:启动一个 REPL 会话,该会话与 binding.pry 相同。
  • 字符串支持 Unicode 大小写映射,但仅支持 ASCII。
  • 将 Bignum 和 Fixnum 统一到一个整数类中。
  • Regexp#match? 新方法,它是一个更快的布尔 Regexp#match 版本。
  • 现在,线程死锁检测会显示具有其依赖关系和回溯的线程。

Ruby 的 2.5.0 版本中的一些值得注意的修改包括确保和救援语句自动利用相邻的 do-end 块,支持方法覆盖和分支覆盖测量,方法链以及 yield_self,以及使用 Hash#transform_keys 和 Hash#slice 进行方便的哈希转换。 除此之外,还出现了一些性能增强,例如更快的 ERB 模板、更快的 Mutex、快速块传递以及对一些连接方法的增强。

Ruby 的 2.6.0 版本中的一些重要修改包括 RubyVM::AbstractSyntaxTree 和一个完整的 JIT(即时)。 Ruby 的 2.7.0 版本中的一些重要修改包括关键字参数和位置参数的分离、压缩 GC、REPL 改进和实验性模式匹配。

Ruby 版本 3

Ruby 的 3.0.0 版本于 2020 年圣诞节发布。 它被称为 Ruby 3*3,这意味着程序在 Ruby 的 3.0 版本中的执行速度将比在 Ruby 的 2.0 版本中快三倍,并且在从 2 版本到 3 版本的过程中,一些程序已经在中间版本中实现。

为了实现 3*3,Ruby 版本 3 提供了 MJIT 和 YJIT,稍后,Just-In-Time Compilers,以提高程序的性能。 但是,它们被定义为实验性的,并且默认情况下保持禁用状态。

  • Ruby 的 3.0 版本的另一个目标是增强并发性和其他实用程序,包括实验性 Ractor 和 Fibre Scheduler 提供该目标。
  • Ruby 的 3.0 版本解决了 RBS 语言,以定义用于静态分析的 Ruby 程序类型。 它与基本的 Ruby 程序不同。
  • Ruby 的 3.0 版本中还有一些库更改和语法增强。
  • Ruby 的 3.1 版本于 2021 年圣诞节发布。
  • 它包含 YJIT,这是一个由 Shopify 设计的实验性的新型 Just-In-Time Compiler,旨在提高现实世界企业应用程序的性能。
  • 还包括一个新的调试器。
  • 此版本中还有一些语法增强和其他增强。
  • POP、IMAP、SMTP 和 FTP 的网络库从默认 gem 转移到分组 gem。

Ruby 的 3.2 版本于 2022 年圣诞节发布。 它支持通过 WASI 接口在 WebAssembly 环境中执行。 此外,正则表达式获得了一些增强,例如记忆化和更快的匹配算法,以避免可能的 ReDOS 攻击。

此外,此版本还添加了额外的语法和调试功能,其中包含语法建议和错误突出显示。 MJIT 编译器已重新应用为标准库模块,另一方面,YJIT,这是一个基于 Rust 的 Just-In-Time 编译器,现在支持更多 Linux 架构。

前提条件

  • Ubuntu
  • 以 root 用户身份登录终端

Ruby安装

我们可以使用 APT 管理器安装 ruby。 以下命令在我们的系统中安装所有必需的软件包。


Software Ruby 1

验证 Ruby

此命令显示 ruby 版本,表明 ruby 已成功安装。


Software Ruby 2

好了,我们已经在 Ubuntu 操作系统上成功安装了 Ruby。