Solaris Live Upgrade를 사용하여 새 부트 환경을 작성할 경우 다음 지침을 따라 문제를 방지합니다.
package procedure 스크립트는 현재 활성 운영 환경에서 독립적이어야 합니다. procedure 스크립트는 패키지 설치 및 제거 동안 특정 지점에서 발생하는 작업을 정의합니다. 이러한 미리 지정된 이름으로 작성될 수 있는 procedure 스크립트는 preinstall, postinstall, preremove 및 postremove 등 4개입니다. package procedure 스크립트는 비활성 부트 환경이 Solaris Live Upgrade를 사용하여 전환될 수 있기 때문에 현재 활성 운영 환경에서 독립적이어야 합니다.
이러한 스크립트는 모든 프로세스를 시작 또는 정지하지 말아야 하며 또는 운영 체제 종속적이고 현재 실행중인 시스템에 대한 정보를 보고하는 ps 또는 truss 와 같은 명령의 출력에 의존하지 말아야 합니다.
procedure 스크립트는 expr, cp, ls 및 셸 스크립트 작성을 용이하게 하는 기타 명령과 같은 기타 표준 UNIX 명령을 자유롭게 사용합니다. 그러나 비활성 부트 환경은 사용자 정의 JumpStart 프로그램 및 Solaris Live Upgrade 비활성 부트 환경 요구 사항 절에 요약된 규칙을 제외하고 수정할 수 없습니다.
모든 스크립트는 Bourne 셸(/bin/sh)에서 작성되어야 합니다. Bourne 셸은 절차 스크립트를 실행하기 위해 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 |
패키지가 상주하는 디렉토리의 이름을 지정합니다.
패키지의 이름을 지정합니다.
예를 들어, 패키지가 /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) 설명서 페이지를 참조하십시오.