【问题标题】:Check if OS is Solaris检查操作系统是否为 Solaris
【发布时间】:2014-05-24 01:46:03
【问题描述】:

我需要从逻辑上检查计算机的操作系统是否为 Solaris。换句话说,我需要一种方法来检查操作系统是否是 Solaris,如果是则返回 TRUE,如果不是则返回 FALSE。我可以轻松检查操作系统是否是 Windows、Mac、Linux,因为我可以访问这些系统 type(例如,“unix”、“windows”)要搜索的内容,因为这些信息通常可以通过 google 搜索。大致如下:

.Platform$OS.type == "unix"
.Platform$OS.type == "windows"

有效,并且在 SO 上还有其他方法有据可查(例如,Sys.info()["sysname"] == "Windows")。在我搜索 SO 和 Google 时,我遇到了很多关于 Windows、Mac、Linux 的问题,但没有办法专门确定操作系统是否是 Solaris。例如,这个链接会导致它重复的其他类似问题,它解决了确定操作系统的问题,但不是 Solaris 的逻辑检查。

How to check the OS within R

如何以编程方式确定计算机的操作系统是否为 Solaris?

我可能需要更具体地了解我感兴趣的 Solaris 操作系统(我不确定,因为我对操作系统知之甚少)。特别感兴趣的是 CRAN 检查中使用的 Solaris 系统:

  1. r-patched-solaris-x86
  2. r-patched-solaris-sparc

【问题讨论】:

  • 您是否暗示Sys.info()['sysname'] 为不同风格的 Solaris 提供了不同的值?还是给出的信息过于笼统?
  • 不,基本上我需要检查 Solaris 是否是操作系统并给出 TRUEFALSE 答案。
  • 所以你问Sys.info()['sysname']返回的确切字符串对应solaris
  • @merlin2011 没错。

标签: r


【解决方案1】:

深入研究Sys.info 使用的C 代码,最终会调用sys/utsname.h,它应该为大多数类Unix 系统(and is indeed part of the standard) 定义。

查看this website,似乎 Solaris 使用 SunOS 作为utsname。这是一个副本,以防链接失效:

The utsname macro
We've already seen one macro in use on a Solaris 2 system, utsname. 
As a refresher, here is how we called the utsname macro ...
Figure 12-1 Using the utsname macro

...
utsname:        sys  SunOS 

另外,Wikipedia article on uname 明确指出所有 Solaris 系统的系统名称是 SunOS

因此,为了完整起见,您可以在函数中轻松地 grep 对此:

is.solaris<-function()
  grepl('SunOS',Sys.info()['sysname'])

【讨论】:

  • 我认为是这样,但没有办法测试。我看看能不能得到 Solaris for Virtual box。
  • 我在 VirtualBox 上安装了 Solaris 11,可以确认 Sys.info()['sysname'] 返回 "SunOS"
  • CRAN 描述中使用的字符串 (cran.r-project.org/web/checks/check_flavors.html) 似乎是 R.Version()$platform 的一部分。该文档将其描述为“ CPU-VENDOR-OS 形式的三元组,由配置脚本确定。”。我想知道是否有其他方法可以访问供应商部分。
  • @Ben 我查找了您的联系信息以讨论列表问题,但找不到。如果您可以给我发电子邮件(请参阅qdap maintainer 信息),我将不胜感激。我在 Win 7 机器上的虚拟机上构建了 Solaris 11,但无法让 R 运行。任何有关您如何做到这一点的指导将不胜感激。
  • 嗨,泰勒,我已经发布了详细信息 here (this is me)
猜你喜欢
  • 2012-08-16
  • 2021-08-02
  • 1970-01-01
  • 2016-03-22
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 2012-12-03
相关资源
最近更新 更多