2014-01-13 2 views
1

나는 이것이 어떻게 행해지는지에 대한 해답을 찾고자 노력했지만 나는 찾을 수없는 것 같다. 나는 그냥 솔라리스 또는 리눅스 중 반환에 펄의 OS 이름은 당신이 상관없이 어떤 OS 버전, 그러나 리눅스와 솔라리스에Perl에서 OS 이름을 특정 버전으로 어떻게 검색합니까?

$^O 

을 사용할 수 없습니다 찾을 수 있음을 알고 있습니다. Solaris10 또는 Solaris11으로 표시하고 싶습니다. 이것을 얻을 수있는 방법이 있습니까? 입력하면 알 수 있습니다.

uname -r 

버전 번호 (예 : Solaris의 경우 5.10)를 얻을 수 있습니다. 이것이 어떻게 수행 될 수 있었는지에 대한 생각은 무엇입니까?

perldoc Config에서

답변

4

펄의 POSIX 모듈은 그래서,은 uname 호출을 제공합니다 : 이것은하지 Config 결과가 오는 곳이다 (빌드를 수행하여 시스템에서 실행중인 시스템에서 정보를 제공

use POSIX qw(uname); 
my @uname = uname(); 
print $uname[0] . " " . $uname[2]; 

에서).

그러나 일반적으로이 정보는 제품의 마케팅 버전이 아니기 때문에 kernel이며, 예를 들어 Linux Mint 시스템인지 여부는 알 수 없습니다. 3.2.foo 커널.

lsb 기반 Linux 시스템의 경우 lsb_release 명령은이 정보를 제공 할 수 있습니다. 리눅스 시스템에서 나는 가지고있다 :

natsu ~> lsb_release -r 
Release: 12.04 
natsu ~> lsb_release -i 
Distributor ID: Ubuntu 

이 정보는 /etc/lsb-release 파일에있다.

Solaris의 경우 릴리스 정보는 /etc/release 파일에 있습니다. 첫 번째 줄에는 운영 체제의 이름이 들어 있습니다. Solaris 10 9/10. 이 파일에는 여러 줄이 있으며 더 많은 자유 형식의 텍스트 필드가 있습니다.

+0

대단히 감사합니다! :) – user974873

3
use Config; 
print "$_\n" for @Config{qw(myuname osname osvers)}; 

,

설정은 환경 설정 모듈은 시간을 구축 펄에서 구성 프로그램에 사용할 수있었습니다 모든 정보를 포함) = 감사합니다.

myuname

UNAME -a의 출력을 사용할 수있는 경우, 그렇지 않으면 호스트. 그런 다음 전체가 소문자로 처리되고 슬래시와 작은 따옴표가 제거됩니다.

OSNAME

이 변수는 운영체제 이름 (예를 들어, SunOS의 솔라리스, HPUX 등)를 포함한다. 나중에 기본값을 설정하는 데 유용 할 수 있습니다. 모든 공백은 밑줄로 대체됩니다. 우리가 알아낼 수없는 경우 null 문자열로 설정됩니다.

osvers

이 변수는 운영 체제 버전 (예 : 4.1.3, 5.2 등)을 포함한다. 이것은 주로 적절한 힌트 파일을 선택하는 데 사용되지만 기본값을 설정하는 데 유용 할 수 있습니다. 우리가 알아 내지 못하면 ''로 설정됩니다. 얼마나 많은 버전 번호를 유지할지에 대해 유연하게하려고합니다. 4.1.1, 4.1.2 및 4.1.3이 본 패키지와 본질적으로 동일하면 힌트 파일은 각 작은 릴리스마다 별도의 파일을 보관하지 않고 os_4.0 또는 os_4.1 등일 수 있습니다.

+0

코드 설명을 제공하는 것이 좋습니다 – codeling

+0

@RandolphCarter 확인 업데이트 –

+5

주석 달기 : 구성 모듈에는 * Perl 빌드 타임 *에서 구성 프로그램에서 사용할 수있는 모든 정보가 들어 있습니다. 이것은 런타임 정보가 아닙니다. 이것은 빌드 타임 정보입니다. – Petesh

관련 문제