如何在 Ruby 中获取 OS 和 OS ARCH 信息?

Posted

技术标签:

【中文标题】如何在 Ruby 中获取 OS 和 OS ARCH 信息?【英文标题】:How can I get OS and OS ARCH information in Ruby? 【发布时间】:2015-12-14 06:33:52 【问题描述】:

在 Ruby 脚本中,我想获取操作系统信息,不仅是 Linux,还包括 32 位或 64 位。

那是因为我的程序将在多个 Linux 平台上运行。它调用了第三方工具,该工具有子文件夹:lin32lin64,我需要根据操作系统信息调用正确的版本。

【问题讨论】:

How can I find which operating system my Ruby program is running on?的可能重复 @Зелёный:这是一个非常有希望的副本,但是其中包含的答案不包括“架构”(x86/x64)部分。如果有任何实际尝试,他们大多会讲述与此处无关的 Ruby 编译版本(您可以在 64 位操作系统上运行 32 位 ruby​​,在这种情况下,OP 需要获得 '64' 响应) 我想向您指出RbConfig 的文档,但不幸的是,它似乎完全没有文档。不过,使用RbConfig 是正确的答案,前提是您可以弄清楚如何 使用它。 【参考方案1】:

在 Ruby 中,您可以使用 RUBY_PLATFORM 常量。此常量生成操作系统和内核位级别的基本名称。 例如。在 irb 中:

1.9.3-p392 :001 > RUBY_PLATFORM
=> "x86_64-linux" - Linux based OS with 64-bit
=> "i686-linux" - Linux based OS with 32-bit

【讨论】:

【参考方案2】:

另外,您可以尝试以下方法:

ver = `getconf LONG_BIT`

ver = `arch`

【讨论】:

【参考方案3】:

您可以使用 RUBY_PLATFORM 常量

irb(main):001:0> RUBY_PLATFORM
=> "i686-linux"

【讨论】:

这不会告诉他操作系统版本是什么,但会告诉他Ruby是在什么模式下编译的。对于 OS=x86 没有区别,但是在 OS=x64 上,您可以运行 x86 Ruby,并且 sn-p 将返回 x86 而不是 x64【参考方案4】:

由于您指的是 linux,请使用uname -m,如下所述:How to determine whether a given Linux is 32 bit or 64 bit?

忽略底部的“CPU”部分。因为要运行程序,所以需要内核架构:

irb:(main):001:0> `uname -m`
=> "x86_64"

x86_64 ==> 64-bit kernel
i686   ==> 32-bit kernel

【讨论】:

以上是关于如何在 Ruby 中获取 OS 和 OS ARCH 信息?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Mac OS X上安装 Ruby运行环境

ARM、MIPS、x86 的 Android os.arch 输出?

如何在Mac OS X上安装 Ruby运行环境

Mac OS X 如何升级系统自带的 Ruby ?

原因:java.lang.Exception:没有为 os.name=Mac 和 os.arch=aarch64 找到本机库。路径=/org/sqlite/native/Mac/aarch64

在 iPhone OS 应用程序中使用 Ruby/Python 代码?