我可以用几种方法检查运行我的Ruby代码的平台的操作系统:
RUBY_PLATFORM
: https : RUBY_PLATFORM
RbConfig::CONFIG['host_os']
: https : RbConfig::CONFIG['host_os']
是否有可能知道什么Linux发行版正在运行? 例如基于Debian或基于Red Hat的发行版。
正如在评论部分所指出的,似乎没有确定的“每一个分配的作品”这样做的方式。 以下是我用来检测脚本正在运行的环境类型:
def linux_variant r = { :distro => nil, :family => nil } if File.exists?('/etc/lsb-release') File.open('/etc/lsb-release', 'r').read.each_line do |line| r = { :distro => $1 } if line =~ /^DISTRIB_ID=(.*)/ end end if File.exists?('/etc/debian_version') r[:distro] = 'Debian' if r[:distro].nil? r[:family] = 'Debian' if r[:variant].nil? elsif File.exists?('/etc/redhat-release') or File.exists?('/etc/centos-release') r[:family] = 'RedHat' if r[:family].nil? r[:distro] = 'CentOS' if File.exists?('/etc/centos-release') elsif File.exists?('/etc/SuSE-release') r[:distro] = 'SLES' if r[:distro].nil? end return r end
这不是处理地球上每个GNU / Linux发行版的完整解决方案。 实际上远非如此。 例如,OpenSUSE和SUSE Linux Enterprise server没有区别,尽管它们是两个完全不同的野兽。 另外,即使只有几个发行版,也是相当意大利面。 但它可能是一个可能能够建立的东西。
您可以从Facter的源代码中找到一个更完整的分发检测示例,其中包括将事实提供给配置管理系统Puppet 。