Solaris Live Upgrade를 사용하고 새 부트 환경을 작성할 때 다음 지침을 따라 문제를 방지합니다.
package procedure 스크립트는 현재 활성 운영 환경에서 독립적이어야 합니다. procedure 스크립트는 패키지 설치 및 제거 동안 특정 지점에서 발생하는 작업을 정의합니다. 이러한 미리 지정된 이름으로 작성될 수 있는 procedure 스크립트는 preinstall, postinstall, preremove 및 postremove 등 4개입니다. package procedure 스크립트는 비활성 부트 환경이 Solaris Live Upgrade를 사용하여 전환될 수 있기 때문에 현재 활성 운영 환경에서 독립적이어야 합니다.
이러한 스크립트는 어떤 프로세스도 시작 또는 정지하지 말아야 합니다. 또는 운영 체제 종속적이고 현재 실행 중인 시스템에 대한 정보를 보고하는 ps 또는 truss와 같은 명령의 출력에 의존하지 말아야 합니다.
procedure 스크립트는 expr, cp, ls 및 shell 스크립트 작성을 용이하게 하는 기타 명령과 같은 기타 표준 UNIX 명령을 자유롭게 사용합니다. 그러나 비활성 부트 환경은 사용자 정의 JumpStart 프로그램 및 Solaris Live Upgrade 비활성 부트 환경 요구 사항 절에 요약된 규칙을 제외하고 수정할 수 없습니다.
모든 스크립트는 Bourne 셸(/bin/sh)에서 작성되어야 합니다. Bourne 셸은 procedure 스크립트를 실행하기 위해 pkgadd 명령이 사용하는 인터프리터입니다.
package procedure 스크립트는 2.6 이상 릴리스에 추가된 명령을 호출할 수 없습니다. 예를 들어, package procedure 스크립트는 pgrep 명령을 호출할 수 없습니다. 2.6 릴리스 이후로 많은 명령에 추가 기능이 추가되었습니다. package procedure 스크립트에서는 2.6 릴리스에 없던 어떤 명령 옵션도 사용해서는 안 됩니다. 예를 들어, umount 명령의 -f 옵션이 Solaris 7 릴리스에서 추가되었습니다. 특정 명령이나 옵션이 Solaris 2.6 릴리스에서 지원되는지 확인하려면 http://docs.sun.com에서 Solaris 2.6 Reference Manual AnswerBook을 참조하십시오.
모든 패키지는 pkgchk 검증을 통과해야 합니다. 패키지가 작성되면 설치되기 전에 다음 명령으로 검사해야 합니다.
# pkgchk -d dir_name pkg_name |
dir_name |
패키지가 상주하는 디렉토리의 이름을 지정합니다. |
pkg_name |
패키지의 이름을 지정합니다. |
예를 들어, 패키지가 /export/SUNWvxvm에 있는 경우 다음 명령을 내려야 합니다.
# pkgchk -d /export SUNWvxvm |
오류가 표시되어서는 안 됩니다.
패키지가 작성된 후 pkgadd에 -R dir_name 옵션을 사용하여 비활성 부트 환경 위치에 패키지를 설치하여 테스트해야 합니다. 패키지가 설치된 후 다음 예에서와 같이 pkgchk를 사용하여 정확성을 검사해야 합니다.
# pkgadd -d . -R /a SUNWvxvm # pkgchk -R /a SUNWvxvm |
오류가 표시되어서는 안 됩니다.
또한 패키지는 패키지 자체가 제공하는 명령을 실행하지 말아야 합니다. 이것은 디스크 없는 호환성을 유지하고 아직 설치되지 않은 공유 라이브러리를 필요로 할 수 있는 명령 실행을 방지합니다.
파일 작성, 수정 및 삭제를 위한 이러한 요구 사항은 다양한 명령을 사용하여 검증할 수 있습니다. 예를 들어, dircmp 또는 fssnap 명령은 패키지가 제대로 작동하는지 검증하는 데 사용할 수 있습니다. 또한 ps 명령은 데몬이 패키지에 의해 정지 또는 시작되지 않았음을 확인하여 데몬 적합성을 테스트하기 위해 사용될 수 있습니다. truss, pkgadd -v 및 pkgrm 명령은 런타임 패키지 설치 적합성을 테스트할 수 있지만 모든 상황에서 작동하지는 않을 수 있습니다. - 다음 예에서, truss 명령은 모든 읽기 전용, 비$BASEDIR 액세스를 제거하고 지정된 비활성 부트 환경 내에 있지 않는 경로에 대한 비읽기 전용 액세스만 보여줍니다.
# TEMPDIR=/a; export TEMPDIR # truss -t open /usr/sbin/pkgadd -R ${TEMPDIR} SUNWvxvm \ 2>&1> /dev/null | grep -v O_RDONLY | grep -v \ 'open("'${TEMPDIR} |
이 절에서 참조된 명령에 대한 자세한 내용은dircmp(1), fssnap(1M), ps(1), truss(1), pkgadd(1M), pkgchk(1M) 또는 pkgrm(1M) 설명서 페이지를 참조하십시오.