Solaris 라이브 업그레이드를 사용하고 새 부트 환경을 작성할 때 다음 지침을 따라 문제를 방지하십시오.
패키지 절차 스크립트는 현재 활성 운영 환경에서 독립적이어야 합니다. 절차 스크립트는 패키지 설치 및 제거 동안 특정 지점에서 발생하는 작업을 정의합니다. 미리 지정된 이름으로 작성될 수 있는 절차 스크립트는 다음 4개입니다. preinstall, postinstall, preremove 및 postremove. 패키지 절차 스크립트는 대체 부트 환경이 Solaris 라이브 업그레이드를 사용하여 전환될 수 있기 때문에 현재 활성 운영 환경에서 독립적이어야 합니다.
이러한 스크립트는 모든 프로세스를 시작 또는 정지하지 말아야 하며 또는 운영 체제 종속적이고 현재 실행중인 시스템에 대한 정보를 보고하는 ps 또는 truss와 같은 명령의 출력에 의존하지 말아야 합니다.
절차 스크립트는 expr, cp, ls 및 셸 스크립트 작성을 용이하게 하는 다른 명령과 같은 다른 표준 UNIX 명령을 자유롭게 사용합니다. 그러나 현재 대체 루트(/)는 이 절, "사용자 정의 JumpStart 프로그램 및 Solaris 라이브 업그레이드 대체 루트(/) 요구 사항"에서 약술된 규칙 내부를 제외하고는 수정하지 말아야 합니다.
모든 스크립트는 본 셸(/bin/sh )에서 작성되어야 합니다. 본 셸은 절차 스크립트를 실행하기 위해 pkgadd 명령이 사용하는 인터프리터입니다.
패키지 절차 스크립트는 2.6 릴리스 이전 릴리스에 없는 명령을 호출하지 말아야 합니다. 예를 들어, 패키지는 pgrep 명령을 호출할 수 없습니다. 2.6 릴리스 이후로 많은 명령에 추가 기능이 추가되었습니다. 패키지 절차 스크립트는 2.6 릴리스에 존재하지 않았던 모든 명령 옵션을 사용하지 말아야 합니다. 예를 들어, -f 옵션은 umount 명령에 새 옵션입니다.
모든 패키지는 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 명령은 런타임 패키지 설치 적합성을 테스트할 수 있지만 모든 상황에서 작동하지 않을 수 있습니다. 다음 예제에서, truss 명령은 모든 읽기 전용, 비$BASEDIR 액세스를 제거하고 지정된 대체 루트(/) 내에 있지 않는 경로에 대한 비읽기 전용 액세스만 보여줍니다.
# BASEDIR=/a; export BASEDIR # truss -t open /usr/sbin/pkgadd -R ${BASEDIR} SUNWvxvm \ 2>&1> /dev/null | grep -v O_RDONLY | grep -v \ 'open("'${BASEDIR} |
이 절에서 참조되는 명령에 대한 자세한 내용은 설명서 페이지, dircmp(1), fssnap(1M), ps(1) 또는 truss(1)를 참조하십시오.