이 부록은 사용자 정의 JumpStart 프로그램 또는 Solaris 라이브 업그레이드를 사용하여 패키지, 특히 협력업체 패키지를 설치 또는 제거해야 하는 시스템 관리자를 대상으로 합니다. 이러한 패키지화 요구 사항에 따르면 Solaris 라이브 업그레이드로 업그레이드할 수 있도록 사용자 정의 JumpStart 설치가 비대화형으로 유지되고 현재 실행중인 시스템을 수정하지 못하게 됩니다.
대체 루트(/)는 현재 실행중인 시스템이 아닌 운영 환경의 복사본입니다.
사용자 정의 JumpStart 프로그램과 Solaris 라이브 업그레이드가 제대로 작동하려면 패키지가 SvR4 패키지화 요구 사항을 준수해야 합니다. Application Packaging Developer's Guide는 패키지화 요구 사항과 용어 정의에 대한 보다 특정적 정보를 제공합니다. 특히 다음 장을 참조하십시오. "Advanced Package Creation Techniques" in Application Packaging Developer's Guide
패키지 및 설치 관리 파일의 추가 및 제거에 대한 기본 정보를 보려면 "Managing Software (Overview)" in System Administration Guide: Basic Administration를 참조하십시오. 특정 설명서 페이지도 참조하십시오.
이 부록에서 참조되는 명령에 대한 자세한 내용은 설명서 페이지, dircmp(1), fssnap(1M), ps(1) 또는 truss(1)를 참조하십시오.
표 C-1은 Solaris 라이브 업그레이드 또는 사용자 정의 JumpStart 프로그램에 적용되는 정보를 나열합니다.
표 C-1 요구 사항 정보
설치 방법 |
문서화된 요구 사항 |
---|---|
Solaris 라이브 업그레이드 |
|
사용자 정의 JumpStart 프로그램 |
|
대체 루트(/)는 현재 실행중인 시스템이 아닌 운영 환경의 복사본입니다. 라이브 업그레이드 또는 사용자 정의 JumpStart 프로그램이 사용할 패키지는 다음 요구 사항을 따라야 합니다.
사용자 상호작용 없이 사용자 정의 JumpStart 설치 또는 업그레이드를 활성화합니다.
Solaris 라이브 업그레이드 사용시에 필요한, 현재 실행중인 시스템의 수정이 없습니다.
다음 목록은 대체 루트( /) 적합성에 대한 요구 사항을 설명합니다.
운영 체제의 설치가 성공하려면 패키지는 대체 루트(/ ) 지정자를 인식하고 정확하게 준수해야 합니다.
패키지는 pkgmap 파일(패키지 맵)에 절대 경로를 포함할 수 있습니다. 이러한 파일이 존재하면 pkgadd 명령의 -R 옵션과 상대적으로 작성됩니다. 절대 및 상대(다시 찾을 수 있는) 경로 모두를 포함하는 패키지는 대체 루트(/)로도 설치될 수 있습니다. $PKG_INSTALL_ROOT는 절대 및 다시 찾을 수 있는 파일 모두에 대해 미리 결정되므로 모든 경로는 pkgadd로 설치될 때 제대로 해결됩니다.
pkgadd -R 옵션을 사용하여 설치되거나 pkgrm -R 옵션을 사용하여 제거되는 패키지는 현재 실행중인 시스템을 변경하지 말아야 합니다.
pkgadd 명령 -R 옵션으로 설치되거나 pkgrm 명령 -R 옵션을 사용하여 제거되는 모든 패키지는 현재 실행중인 시스템을 변경하지 말아야 합니다. 사용자가 제공하는 모든 설치 스크립트는 접두어가 $PKG_INSTALL_ROOT 변수인 모든 디렉토리 또는 파일을 참조해야 합니다. 패키지는 $PKG_INSTALL_ROOT 접두어를 가진 모든 디렉토리 및 파일을 작성해야 합니다. 패키지는 $PKG_INSTALL_ROOT 접두어 없이 디렉토리를 제거하지 말아야 합니다. 표 C-2는 올바른 스크립트 구문의 예제를 제공합니다.
표 C-2 설치 스크립트 구문의 예제
$PKG_INSTALL_ROOT는 패키지를 추가할 시스템의 루트( /)파일 시스템의 위치입니다. 이것은 pkgadd 명령에 대한 -R 인자로 설정됩니다. 예를 들어, 다음 명령이 호출된 경우
# pkgadd -R /a SUNWvxvm |
$PKG_INSTALL_ROOT가 패키지의 설치 동안 /a로 미리 결정됩니다.
$BASEDIR은 다시 찾을 수 있는 패키지 객체가 설치된 다시 찾을 수 있는 기본 디렉토리를 가리킵니다. 다시 찾을 수 있는 객체만 여기에 설치됩니다. 다시 찾을 수 없는 객체(pkgmap 파일의 절대 경로를 가진 객체)는 항상 대체 루트(/)에 상대적으로 설치되지만 실제로 $BASEDIR에 상대적이지 않습니다. 패키지가 다시 찾을 수 있는 객체가 아니면 패키지는 절대 패키지(또는 다시 찾을 수 없는)라고 하며 $BASEDIR은 정의되지 않고 패키지 절차 스크립트에 사용할 수 없습니다.
예를 들어, 패키지의 pkgmap 파일은 다음 두 항목을 갖는다고 가정합니다.
1 f none sbin/ls 0555 root sys 3541 12322 1002918510 1 f none /sbin/ls2 0555 root sys 3541 12322 2342423332 |
그리고 pkginfo 파일은 $BASEDIR에 대한 다음 사양을 갖습니다.
BASEDIR=/opt |
이 패키지가 다음 명령으로 설치된 경우
# pkgadd -R /a SUNWtest |
ls는 /a/opt/sbin/ls에 설치되지만 ls2는 /a/sbin/ls2 로 설치됩니다.
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)를 참조하십시오.
사용자 정의 JumpStart 프로그램 적합성은 패키지가 다음과 같이 전통적인 Solaris 설치 유틸리티의 일부인 채로 추가 및 제거될 수 있도록 합니다.
사용자 정의 JumpStart 프로그램
Solaris suninstall program
Solaris Web Start 설치 방법
사용자 정의 JumpStart 프로그램 적합성은 또한 패키지가 Solaris 업그레이드에 참가할 수 있도록 합니다. 사용자 정의 JumpStart 프로그램을 준수하기 위해서 패키지는 "사용자 정의 JumpStart 프로그램 및 Solaris 라이브 업그레이드 대체 루트(/) 요구 사항"에 약술된 대체 루트 (/)를 따라야 합니다.
사용자 정의 JumpStart 프로그램을 효과적으로 사용할 수 있으려면 패키지가 사용자에게 정보를 묻는 프롬프트를 표시하지 않고 추가 또는 제거되어야 합니다. 사용자 상호 작용을 방지하려면 pkgadd 명령 -a 옵션으로 새 관리 파일을 설정합니다. -a 옵션은 기본 관리 파일 대신 사용될 설치 관리 파일을 정의합니다. 기본 파일을 사용하면 사용자에게 추가 정보를 묻는 메시지가 표시될 수 있습니다. 이들 검사를 무시하고 사용자 확인과 함께 패키지를 설치해야 함을 pkgadd에게 알려주는 관리 파일을 작성할 수 있습니다. 다음 예제는 pkgadd 관리 파일 사용 방법을 보여줍니다.
관리 파일이 제공되지 않으면 pkgadd는 /var/sadm/install/admin/default를 사용합니다. 이 파일을 사용하면 사용자 상호 작용이 생길 수 있습니다.
# pkgadd |
상대 관리 파일이 명령줄에 제공되면 pkgadd는 /var/sadm/install/admin에서 파일 이름을 찾아 사용합니다. 이 예제에서, 상대 관리 파일의 이름은 확인되지 않고 pkgadd는 /var/sadm/install/admin/nocheck를 찾습니다.
# pkgadd -a nocheck |
절대 파일이 제공되면 pkgadd이 해당 파일을 사용합니다. 이 예제에서, pkgadd는 /tmp/nocheck를 찾습니다.
# pkgadd -a /tmp/nocheck |
다음은 pkgadd가 패키지를 설치하기 전에 사용자에게 확인을 요청하는 프롬프트를 표시하지 않도록 하는 설치 관리 파일의 예입니다.
mail= instance=overwrite partial=nocheck runlevel=nocheck idepend=nocheck space=nocheck setuid=nocheck confiict=nocheck action=nocheck basedir=default
자세한 내용은 설명서 페이지, admin( 4) 또는 pkgadd( 1M)를 참조하십시오.