Sta*_*low 4 perl operating-system
我想使用Perl来检测操作系统类型.
例如:
假设我有一个安装程序,以便知道安装程序需要运行哪些命令.我将不得不检测安装的操作系统,例如Linux.让我们说它是Linux.现在哪种类型的Linux?
我该怎么做?
第一步是检查$^O变量的输出.
如果输出是例如
Linux的
您需要更多处理来检测使用的分布.
见perldoc perlvar.
到目前为止,您可以运行lsb_release -a以查看使用的分布.
如果此命令不存在,您可以测试文件的存在,如:
/etc/debian_version # debian or debian based
/etc/redhat-release # rpm like distro
Run Code Online (Sandbox Code Playgroud)
其他文件测试示例:检测基础Linux发行版
考虑xaxes的解决方案,使用Linux::Distribution模块来检查分发.
如果要检测包管理器,可以尝试以下方法:
if ($^O eq "linux") {
my $pm;
do{
if (-x qx(type -p $_ | tr -d "\n")) {
$pm = $_;
last;
}
} for qw/apt-get aptitude yum emerge pacman urpmi zypper/;
print $pm;
}
Run Code Online (Sandbox Code Playgroud)
此外,您可以使用Config(它是核心模块).这是一个例子:
use Config;
print "$Config{osname}\n";
print "$Config{archname}\n";
Run Code Online (Sandbox Code Playgroud)
在我的Mac OS X上,它打印:
darwin
darwin-2level
Run Code Online (Sandbox Code Playgroud)