Solaris 11의 POSIX Awk?

Solaris 11의 POSIX Awk?

이는 다음 두 질문에 대한 후속 질문입니다.

Solaris 10(SunOS 5.10)에서 다음과 같은 결과를 얻었습니다.

$ type -a awk
awk is /usr/bin/awk
$ PATH="$(getconf PATH)" type -a awk
awk is /usr/xpg4/bin/awk
awk is /usr/bin/awk
$

예를 들어 Solaris 10에서는 /usr/bin/awkPOSIX 표준 Awk 구문이 허용되지 않지만 '!x[$0]++'허용 /usr/xpg4/bin/awk됩니다. 지금까지는 충분합니다.

/usr/bin/awk그러나 솔라리스 11에는 Even 과 is 만 있습니다 getconf PATH. 비록 is nawkoawkis 도 있지만 /usr/bin분명히 이것들은 어디에서도 심볼릭 링크로 지정되지 않습니다.

저는 Solaris가 POSIX 인증을 받았다는 사실을 알고 놀랐습니다.

다른 POSIX 호환 시스템에서도 실행되는 이식 가능한 코드를 사용하여 Solaris 11에서 POSIX 호환 Awk 표준을 얻으려면 어떻게 해야 합니까? (또는 nawk또는 존재하는지 확인하고 존재하는 경우 그 중 하나를 사용하는 유일한 옵션입니까 oawk?)

그 문제에 관해서는, 뭐 nawk그리고 oawk?

답변1

전체 설치 또는 데스크탑 Solaris 11 설치에는 다음이 있습니다. awk사용 가능한 구현 및 일부 변형:

    /usr/bin/awk 패키지:/시스템/[이메일 보호됨]
    /usr/빈/노크          패키지:/시스템/[이메일 보호됨]
    /usr/빈/오박          패키지:/시스템/[이메일 보호됨]

    /usr/gnu/bin/awk 패키지:/text/[이메일 보호됨]
    /usr/빈/멍하니          래퍼:/텍스트/[이메일 보호됨]
    /usr/bin/igawk 패키지:/text/[이메일 보호됨]
    /usr/bin/pgawk 패키지:/text/[이메일 보호됨]

    /usr/xpg4/bin/awk      패키지: /system/xopen/[이메일 보호됨]

서로 다른 표준을 준수하지만 모두 "표준 준수"입니다.

  • /usr/bin/awkawk1977년에 출시된 이전 UNIX 구현을 준수합니다 . awk후속 버전에서 호환성이 중단되는 경우 기존 스크립트가 중단되는 것을 방지하기 위해 먼저 기본 시스템 PATH에 보관됩니다 . oawk예의 동의어awk

  • /usr/bin/nawk예, "새" 버전은 awk1986년 SVR3.1에서 처음 출시되었습니다. POSIX Awk표준은 이 구현을 기반으로 합니다. /usr/xpg4/bin/awk전자와 거의 동일하지만 후자는 공식적으로 POSIX 적합성 검증 테스트를 통해 확인됩니다.

  • /usr/gnu/bin/awk, /usr/bin/gawk또한 awk. POSIXLY_CORRECT환경에서 환경 변수를 설정하거나 옵션을 사용하여 호출할 때 대부분 또는 모든 POSIX 표준을 따르도록 설계되었지만 -W posix그 외에는 자체적으로 많은 특정 확장을 추가합니다. 확장 자체 igawk이며 첫 번째는 포함 파일을 지원하고 두 번째는 분석을 지원합니다.pgawkgawk

또한보십시오GNU awk역사 장유용한 정보를 많이 얻으세요.

core-os패키지는 일반 Solaris 11 설치에만 존재하도록 보장 되므로 oawk/awknawk. 특히, 생성할 때새로운 비전역 영역, 기본적으로 다음을 포함합니다.solaris-small-server그룹 패키지따라서 xpg4바이너리를 사용할 수 없습니다 gnu awk. 이것은 의도적으로 설계된 것입니다. 이 solaris-small-server그룹은 애플리케이션이 제대로 작동하는 데 필요한 패키지를 추가할 수 있는 최소한의 시작점입니다. 이는 전역 영역에 설치된 모든 항목이 비전역 영역에도 설치되는 이전(Solaris 10) 방식보다 더 안전하고 효율적이므로 영역을 최소화하려면 사용하지 않는 패키지를 제거해야 합니다.

awk이러한 "소형 서버" 설치에서 이식 가능한 방식으로 POSIX 지원을 받으려면 패키지를 설치 하고 xcu4PATH를 POSIX 호환 패키지로 설정해야 합니다.

pkg install xcu4
PATH=$(getconf PATH):$PATH

어떤 이유로 패키지를 설치하지 않으려는 경우 해결 방법은 as 를 PATH포함하는 nawk"custom"을 사용하는 것입니다 awk. 예를 들면 다음과 같습니다.

mkdir -p /opt/posix/bin
cp /usr/bin/nawk /opt/posix/bin/awk
PATH=/opt/posix/bin:$PATH

또는 먼저 설치 GNU awk하고 설정하여 PATH얻을 수도 있습니다.

pkg install gawk
PATH=/usr/gnu/bin:$PATH

이는 Solaris 11에만 해당되는 것이 아닙니다.유사한 패키지 그룹화Solaris 10 및 이전 버전에 이미 존재하는 POSIX 호환 유틸리티는 최종 사용자, 개발자 및 전체 설치 메타클러스터에만 설치됩니다. 시스템이나 영역에 "코어" 또는 "네트워크 지원" 메타클러스터가 설치된 경우 동일한 xpg4누락 문제가 발생합니다.

또한 Solaris 11 시스템의 부재는 /usr/xpg4/bin/awkPOSIX 규정 준수 실패가 아닙니다. Oracle과 ISV가 수행한 대부분의 테스트에서는 다음을 포함하여 전체 Solaris 설치만 사용했습니다.공개그룹 인증프로그램. 감소된 설치량은지원됨하지만자격 있는.

Solaris 11용 셸 스크립트(또는 셸 스크립트를 포함하거나 셸 명령을 호출하는 응용 프로그램)를 배포하는 경우 /system/xopen/xcu4이를 종속성으로 정의하기 만 하면 됩니다.IPS패키지와 설치 프로그램은 스크립트가 제대로 작동하는 데 필요한 작업을 자동으로 수행합니다.

depend fmri=pkg:/system/xopen/xcu4 type=require

바라보다https://docs.oracle.com/cd/E53394_01/html/E54820/dependenttypes.html

관련 정보