Oracle® Solaris 11.2의 소프트웨어 추가 및 업데이트

인쇄 보기 종료

업데이트 날짜: 2014년 7월
 
 

패키지 설치 및 업데이트 문제 해결

이 부록은 패키지를 설치하거나 업데이트할 때 발생할 수 있는 오류를 처리하는 방법을 보여줍니다. 또한 이 부록은 성능을 향상하고 저장된 메타 데이터를 최소화하기 위한 팁을 제공합니다.

초기 문제 해결 단계

설치할 패키지가 구성된 게시자에서 사용 가능하고 이 이미지에 설치할 수 있는지 여부를 확인합니다. 필요한 정보는 설치된 버전의 pkg:/entire와 이 이미지에 구성된 게시자 원본입니다. pkg:/entire 패키지를 업데이트해야 할 수 있습니다. 게시자 원본을 수정해야 할 수 있습니다.

거의 모든 패키지 설치 문제에 다음 두 가지 검사를 먼저 수행해야 합니다.

  • 어떤 버전의 pkg:/entire 통합 패키지가 설치되어 있는지 확인합니다.

  • 패키지 게시자 원본을 확인합니다.

필요한 패키지가 구성된 게시자에서 사용 가능한 것을 확인했으면 다음 단계에 따라 설치를 진행하십시오.

  • 설치 또는 업데이트를 수행할 때마다 -nv 옵션을 사용하여 적용할 변경 사항(예: 설치 또는 업데이트할 패키지의 버전 및 새 BE를 만들지 여부)을 확인하십시오. -v 옵션은 이와 같은 특정 설치 또는 업데이트 작업에 적용되는 릴리스 노트를 보여 줍니다.

  • 더 자세한 오류 메시지를 받으려면 버전이나 게시자 등 설치할 패키지의 FMRI를 더 많이 지정합니다.

설치된 버전의 pkg:/entire 확인

pkg list 명령을 사용하여 현재 설치된 pkg:/entire 통합 패키지의 버전을 확인합니다.

$ pkg list entire
NAME (PUBLISHER)                                  VERSION                    IFO
entire                                            0.5.11-0.175.2.0.0.34.0    i--
$ pkg list -Hv entire
pkg://solaris/entire@0.5.11,5.11-0.175.2.0.0.34.0:20140303T182643Z           i--

pkg:/entire 통합 패키지는 다른 많은 패키지의 버전을 제약하여 작동 중인 지원 가능한 이미지 상태가 유지되도록 도와줍니다. 통합 패키지의 제약을 받는 패키지에 대한 자세한 내용은 통합 패키지를 참조하십시오.

pkg:/entire 통합 패키지의 제약을 받는 패키지를 직접 설치하거나 업데이트할 수 없습니다. pkg:/entire의 제약을 받는 패키지를 설치하거나 업데이트하려면 pkg:/entire 패키지를 업데이트해야 합니다. 자세한 내용은 제약 조건을 충족할 수 없음을 참조하십시오. 어떤 경우 통합의 제약을 받는 패키지 업데이트에 표시된 대로 제약 조건을 제거할 수 있습니다.

구성된 게시자 원본의 내용 확인

pkg publisher 명령을 사용하여 패키지 게시자 원본을 확인합니다.

$ pkg publisher
PUBLISHER  TYPE    STATUS P LOCATION
solaris    origin  online F http://pkg.oracle.com/solaris/release/

보안 URI의 경우 필요한 키와 인증서가 올바르게 설치되었는지 확인하고, 게시자를 구성할 때 -k-c 옵션을 사용합니다.

사이트에 외부 위치용 프록시가 필요한 경우 pkg set-publisher 명령의 --proxy 옵션을 사용하여 해당 프록시를 설정합니다. 지침은 프록시 지정을 참조하십시오.

pkg publisher publisher 명령을 사용하여 키, 인증서, 프록시 등 게시자에 대한 자세한 정보를 봅니다.

사용으로 설정된 게시자의 원본 URI에 연결할 수 없으면 필요한 위치에 도달할 수 있더라도 설치/업데이트 작업을 실패합니다. 위치에 도달할 수 없는 문제를 해결할 수 없으면 pkg set-publisher -G를 사용하여 연결할 수 없는 원본을 제거하거나 pkg set-publisher --disable을 사용하여 게시자를 사용 안함으로 설정할 수 있습니다. 이 게시자가 더 이상 필요하지 않으면 pkg unset-publisher를 사용하여 게시자를 제거합니다.

패키지 게시자 원본에 필요한 패키지가 있는지 여부를 확인합니다. 예를 들어, solaris 게시자 원본이 공개 릴리스 저장소로 설정된 경우 지원 저장소에서만 제공되는 버전으로 패키지를 업데이트할 수 없습니다.

필요한 설치된 패키지가 사용 가능한지 여부 확인

설치된 패키지를 업데이트하거나 설치된 패키지에 종속된 패키지를 설치하거나 비전역 영역을 설치하려면 게시자 원본으로 설정된 저장소에는 현재 이미지에 설치된 것과 동일한 소프트웨어가 있어야 합니다. 저장소에 이전 또는 최신 소프트웨어가 포함될 수도 있지만 이미지에 설치된 것과 동일한 소프트웨어가 있어야 합니다.

설치된 패키지를 확인할 때 pkg list 명령이 아닌 pkgrepo list 명령을 사용합니다. pkg list 명령은 구성된 게시자 원본에서 패키지를 사용할 수 없더라도 항상 설치된 패키지를 보여줍니다.

다음 명령은 지정된 저장소가 이 이미지에 적절한 게시자 원본이 아님을 보여줍니다. 설치된 버전의 pkg:/entire를 원본에서 사용할 수 없기 때문입니다.

$ pkg list entire
NAME (PUBLISHER)                                  VERSION                    IFO
entire                                            0.5.11-0.175.2.0.0.34.0    i--
$ pkg publisher
PUBLISHER  TYPE    STATUS P LOCATION
solaris    origin  online F http://pkg.oracle.com/solaris/release/
$ pkgrepo list -Hs http://pkg.oracle.com/solaris/release entire@0.5.11-0.175.2.0.0.34.0
pkgrepo list: The following pattern(s) did not match any packages:
        entire@0.5.11-0.175.2.0.0.34.0

필요한 패키지가 나열되지 않으면 pkgrepo refresh 명령을 실행한 후 pkgrepo list 명령을 재시도하십시오.

다음 명령은 설치된 버전의 pkg:/entire를 지정된 저장소에서 사용할 수 있음을 보여줍니다.

$ pkgrepo list -Hs /export/IPSpkgrepos/Solaris entire@0.5.11-0.175.2.0.0.34.0
solaris   entire                   0.5.11,5.11-0.175.2.0.0.34.0:20140303T182643Z

필요한 패키지를 구성된 게시자에서 사용할 수 없지만 다른 저장소 원본에서 사용할 수 있는 경우, 다음 조치 중 하나를 취하십시오.

  • pkg set-publisher 명령의 -g 옵션을 사용하여 이 원본을 solaris 게시자에 추가합니다.

  • pkg set-publisher 명령의 -g-G 옵션을 사용하여 solaris 게시자의 원본을 변경합니다.

  • 필요한 패키지를 다른 게시자가 제공하면 pkg set-publisher 명령을 사용하여 해당 게시자를 추가합니다.

  • 설치 명령(install, uninstall, update, change-variant, change-facet)의 -g 옵션을 사용하여 검색할 저장소 목록 끝에 저장소를 일시적으로 추가합니다.

설치할 패키지가 사용 가능한지 여부 확인

다음 명령을 사용하여 설치할 패키지가 구성된 게시자에서 사용 가능한지 여부를 확인합니다. 패키지를 업데이트하는 경우 현재 설치된 패키지의 버전과 업데이트하려는 버전이 모두 사용 가능해야 합니다.

$ pkg list -af package

필요한 패키지가 나열되지 않으면 pkg refresh 명령을 실행한 후 pkg list 명령을 재시도하십시오.

필요한 패키지가 여전히 나열되지 않으면 새 게시자나 새 게시자 원본을 추가합니다.

설치할 패키지를 이 이미지에 설치할 수 있는지 여부 확인

-af 옵션을 사용할 때 원하는 패키지 버전이 나열되면 -f 옵션 없이 동일한 명령을 다시 사용합니다.

$ pkg list -a package

원하는 버전이 여전히 나열되면 이 패키지는 제약을 받지 않으므로 다른 패키지를 설치/업데이트하지 않고 이 패키지를 설치할 수 있어야 합니다.

원하는 버전이 나열되지 않으면 이 버전은 구성된 게시자에서 사용할 수 있지만 이 이미지에 설치할 수 없습니다. 패키지를 설치할 수 없는 이유는 다음과 같습니다.

  • 패키지가 변형 또는 페이싯 설정의 제약을 받습니다.

  • 패키지의 버전이 통합 패키지의 제약을 받습니다. 제약하는 패키지를 업데이트하거나, 어떤 경우 제약 조건을 완화할 수 있습니다. 자세한 내용은 제약 조건을 충족할 수 없음을 참조하십시오.

  • 패키지의 버전이 고정 작업의 제약을 받습니다. pkg freeze 명령을 실행합니다. require 종속성을 가진 패키지와 설치할 패키지를 다른 버전에 고정할 수 있으며 양쪽 버전을 동시에 설치할 수 없습니다.

설치 재시도

설치/업데이트할 패키지를 지정하고 게시자를 지정하지 않으면 패키지 FMRI 또는 패턴과 일치하는 패키지를 제공하는 게시자 중에서 검색 순서의 첫번째 게시자가 설치 소스로 사용됩니다. 해당 게시자가 이 이미지에 설치할 수 있는 패키지 버전을 제공하지 않으면 다른 사용으로 설정된 게시자가 이 이미지에 설치할 수 있는 패키지 버전을 제공하더라도 설치 작업이 실패합니다. 이 문제를 해결하려면 다음 조치 중 하나를 취하십시오.

  • 패키지 FMRI에 게시자를 지정합니다. 예를 들어, 전체 패키지 이름 앞에 pkg://solaris/를 지정합니다.

  • pkg set-publisher 명령의 -P 옵션을 사용하여 원하는 패키지 버전을 제공하는 게시자를 검색 순서의 첫번째 게시자로 설정합니다.

설치 또는 업데이트를 수행할 때마다 -nv 옵션을 사용하여 적용할 변경 사항(예: 설치 또는 업데이트할 패키지의 버전 및 새 BE를 만들지 여부)을 확인하십시오. -v 옵션은 이와 같은 특정 설치 또는 업데이트 작업에 적용되는 릴리스 노트를 보여 줍니다.

  • -nv 옵션을 사용할 때 오류 메시지가 표시되지 않으면 -n 옵션 없이 명령을 다시 실행하여 실제로 설치 또는 업데이트를 수행합니다. 새 BE에 설치를 수행하는 옵션을 지정할지 또는 새 BE나 백업 BE가 기본적으로 만들어지지 않는 경우 백업 BE를 만드는 옵션을 지정할지 고려하십시오.

  • 오류 메시지가 나타나면 다음 조치를 취하십시오.

    • 패키지 FMRI에 원하는 버전을 더 많이 지정하여 진단 및 문제 해결에 도움이 되는 자세한 정보를 얻습니다.

    • 더 많은 -v 옵션을 지정합니다(예: -nvv).

    • pkg history 명령을 사용합니다. -l 옵션은 변경된 패키지의 전체 FMRI를 제공합니다. 작업 내역 보기를 참조하십시오.

설치/업데이트할 패키지를 여러 개 지정하거나 업데이트 작업에 패키지 지정을 생략할 경우 하나라도 패키지를 이 이미지에 설치할 수 없으면 설치/업데이트 작업을 실패합니다. 한 패키지를 설치할 수 없으면 아무 패키지도 설치되지 않습니다. 자세한 정보를 보려면 명령을 다시 호출합니다. 설치할 수 없는 패키지만 지정하고 해당 패키지의 전체 FMRI를 지정하고 하나 이상의 -v 옵션을 제공하면 됩니다.

게시자나 저장소에 액세스할 수 없음

이 절에 설명된 오류는 게시자의 URI에 액세스할 수 없는 문제와 관련되어 있습니다.

패키지 저장소에 액세스할 수 없음

오류 메시지:

  • Couldn't resolve host

  • Unable to contact any configured publishers

  • Unable to contact valid package repository

  • Origin URIs do not appear to point to a valid pkg repository

pkg publisher 명령을 사용하여 게시자의 URI를 표시합니다. 다음 예제에서 LOCATION 열이나 URI 행을 살펴보십시오.

$ pkg publisher
PUBLISHER                   TYPE     STATUS P LOCATION
solaris                     origin   online F http://pkg.oracle.com/solaris/release/
$ pkg publisher solaris
            Publisher: solaris
                Alias:
           Origin URI: http://pkg.oracle.com/solaris/release/

더 이상 사용하지 않는 게시자가 나열되면 해당 게시자를 사용 안함으로 설정하거나 제거합니다.

$ pkg set-publisher --disable publisher
$ pkg unset-publisher publisher

사용 중인 게시자의 경우 URI가 정확한지 확인합니다.

  • 각 게시자 원본 위치를 브라우저에서 보거나 해당 위치를 핑하십시오.

  • pkgrepo list 명령을 사용하여 해당 원본에 패키지를 나열해 보십시오.

원본 위치가 정확하지 않으면 pkg set-publisher 명령의 -G-g 옵션을 함께 사용하여 URI를 변경합니다.

게시자에 여러 개의 원본이 있으면 모든 원본 위치에 액세스할 수 있어야 합니다. 하나라도 원본 위치에 액세스할 수 없으면 pkg set-publisher 명령의 -G 옵션을 사용하여 해당 원본을 제거합니다.

게시자가 비전역 영역에 구성된 경우 해당 게시자가 전역 영역에 구성되지 않았더라도 전역 영역에서 게시자의 모든 위치에 액세스할 수 있어야 합니다.

SSL 인증서 문제

오류 메시지: SSL certificate problem, verify that the CA cert is OK

pkg 명령에 SSL 인증서 문제에 대한 메시지가 표시되면 다음 조치 중 하나 이상을 취하십시오.

  • 필요한 키와 인증서가 설치되어 있는지 확인합니다. 키와 인증서를 얻는 방법에 대한 정보가 보안 저장소에 대한 다른 정보와 함께 포함되어야 합니다.

  • pkg set-publisher 명령에 -k-c 옵션을 함께 사용하여 키와 인증서가 설치되는 위치를 지정합니다. pkg publisher 명령은 게시자가 키와 인증서를 찾을 위치를 보여줍니다. 키와 인증서가 다른 곳에 설치되어 있으면 -k-c 옵션에 올바른 값을 지정하여 게시자를 재구성합니다.

    다음 예제에서 출력은 키와 인증서 파일 경로를 보여주고 abc 게시자에 대해 구성된 원본의 인증서가 만료되었음을 보여줍니다.

    $ pkg publisher abc
     Publisher: abc
    Origin URI: https://pkg.oracle.com/abc/release/
       SSL Key: /var/pkg/ssl/keyfile
      SSL Cert: /var/pkg/ssl/certfile
    Certificate '/var/pkg/ssl/certfile' has expired.
      Please install a valid certificate.
  • 시스템에 날짜 및 시간이 정확한지 확인합니다.

  • ca-certificates SMF 서비스를 새로 고칩니다.

    $ svcadm refresh svc:/system/ca-certificates:default
  • 원본 URI에 oc-mgmt가 포함되어 있으면 Ops Center 지원 담당자에게 문의하십시오.


주 -  클라이언트 SSL 인증서가 필요한 저장소는 pkg 설치 명령에 -g 옵션을 사용하여 지정할 수 없습니다.

위치를 찾을 수 없음

오류 메시지: http protocol error: code: 404 reason: Not Found

패키지 저장소에 액세스할 수 없음에 설명된 대로 게시자 URI를 확인합니다. 위치를 성공적으로 보거나 핑할 수 있으면 pkgrepo list 명령을 사용하여 저장소의 패키지 중 하나를 표시해 보십시오.

URI가 파일 기반 저장소인 경우 pkg5srv 사용자가 파일과 디렉토리를 읽을 수 있는지 확인합니다. pkgrepo verify 명령을 사용하여 pkg5srv 사용자가 저장소를 읽을 수 있는지 여부를 확인할 수 있습니다.

웹 서버 구성을 확인합니다. 자세한 내용은 Oracle Solaris 11.2 패키지 저장소 복사 및 만들기 의 5 장, 웹 서버 뒤에서 저장소 서버 실행을 참조하십시오.

  • Apache 웹 서버 인스턴스 뒤에서 패키지 저장소를 실행하는 경우 인코딩된 슬래시를 디코딩하지 않도록 httpd.conf 파일에 다음 설정을 포함합니다.

    AllowEncodedSlashes NoDecode
  • 저장소 서버 pkg/proxy_base를 Apache 서버의 저장소 URL로 설정합니다.

    $ svccfg -s pkg/server:repo setprop pkg/proxy_base = astring: http://pkg.example.com/myrepo
    $ svcadm refresh pkg/server:repo

비전역 영역에서 문제가 발생하면 다음 문제 해결 단계를 따르십시오. 비전역 영역은 시스템 저장소라는 특수 패키지 저장소를 사용한다는 것을 기억하십시오. 시스템 저장소에 대한 자세한 내용은 pkg.sysrepo(1M) 매뉴얼 페이지를 참조하십시오.

  • 비전역 영역이 있는 이미지에 -g 옵션을 사용할 수 없습니다. 대신, pkg set-publisher 명령을 사용하여 해당 게시자와 원본을 명시적으로 추가합니다.

  • 파일 기반 저장소의 파일과 디렉토리를 pkg5srv 사용자가 읽을 수 있는지 확인합니다. pkg5srv 사용자는 system-repository Apache 인스턴스를 실행합니다. 시스템 저장소의 위치를 찾는 방법을 보여주는 예제는 전역 영역과 비전역 영역의 관계를 참조하십시오.

  • 사이트에 외부 위치에 액세스하는 프록시가 필요한 경우 전역 영역에서 게시자에 대해 프록시가 올바르게 지정되었는지 확인합니다. pkg set-publisher 명령의 --proxy 옵션을 사용하여 프록시를 지정합니다. 지침은 프록시 지정을 참조하십시오. 프록시를 검사하는 한 가지 방법은 pkg refresh --full 명령에서 액세스 오류 메시지가 없는지 확인하는 것입니다.

  • svc:/application/pkg/system-repository:default 서비스가 전역 영역에서 온라인인지 확인합니다.

  • svc:/application/pkg/zones-proxyd:default 서비스가 전역 영역에서 온라인이고 svc:/application/pkg/zones-proxy-client:default 서비스가 비전역 영역에서 온라인인지 확인합니다.

  • 전역 영역에서 /var/log/pkg/sysrepo/*의 로그 파일을 확인하여 파일을 읽으려고 시도할 때 보고된 권한 오류가 있는지 확인합니다. /var/log/pkg/sysrepo/access_log에 보고된 404 또는 503 오류가 있는지 확인합니다. /var/log/pkg/sysrepo/error_log에 보고된 오류가 있는지 확인합니다.

  • 전역 영역에서 /etc/hosts 파일에 localhost127.0.0.1로 설정되어 있는지 확인합니다. /system/volatile/pkg/sysrepo/sysrepo_httpd.conf 파일에서 Listen127.0.0.1:1008로 설정되고 ServerName127.0.0.1로 설정되어 있는지 확인합니다.

  • 전역 영역에서 /system/volatile/pkg/sysrepo/sysrepo_httpd.conf 파일에 다음 형식의 Alias 행이 포함되어 있는지 확인합니다.

    $ grep Alias /system/volatile/pkg/sysrepo/sysrepo_httpd.conf
    WSGIScriptAlias /wsgi_p5p /etc/pkg/sysrepo/sysrepo_p5p.py

    sysrepo_httpd.conf 파일에 Alias 행이 없으면 sysrepo 서비스를 다시 시작합니다.

    $ svcadm restart svc:/application/pkg/system-repository:default

서비스를 사용할 수 없음

오류 메시지: http protocol error: code: 503 reason: Service Unavailable

pkg publisher 명령을 통해 사용하려는 패키지 저장소의 위치를 찾고 해당 시스템에서 SMF 서비스를 검사합니다. 다음 명령을 통해 사용으로 설정되었지만 실행 중인 아닌 패키지 저장소 SMF 서비스 인스턴스가 있는지, 다른 사용으로 설정된 인스턴스가 실행되지 못하게 막는 인스턴스가 있는지 확인합니다.

$ svcs -xv pkg/server
svc:/application/pkg/server: default (image packaging repository)
 State: online since July 25, 2013 07:53:50 AM PDT
   See: /var/svc/log/application-pkg-server:default.log
Impact: None.

서비스에 문제가 보고되면 svcs 출력에 나열된 로그 파일을 확인하여 구체적인 문제를 확인합니다.

inst_root 등록 정보, port 등록 정보 및 기타 등록 정보가 올바르게 설정되었는지 확인합니다.

$ svcprop -p pkg pkg/server:default
$ svcprop -p pkg/inst_root -p pkg/port pkg/server:default
/export/IPSpkgrepos/Solaris
80

필요한 경우, 다음 예제에 표시된 대로 svccfg 명령을 사용하여 등록 정보 값을 재설정합니다.

$ svccfg -s pkg/server:default setprop pkg/port=1008

svcadm 명령을 사용하여 필요에 따라 서비스 인스턴스를 지우기, 새로 고침, 다시 시작, 사용으로 설정합니다.

사용 가능한 업데이트가 없음

오류 메시지: No updates available for this image

특정 패키지를 업데이트하는 경우 다음 명령을 사용하여 해당 패키지의 어떤 버전이 현재 이 이미지에 설치되어 있는지 확인합니다. 모든 설치된 패키지를 업데이트하는 경우(pkg update에 지정된 패키지가 없거나 패키지 이름에 '*'가 지정됨) 이 명령에서 packagepkg:/entire를 사용합니다.

$ pkg list -v package

현재 설치된 버전이 없는 경우 pkg update가 아닌 pkg install 명령을 사용합니다.

package의 버전이 현재 설치된 경우 다음 명령을 사용하여 어떤 버전의 package를 구성된 게시자에서 사용할 수 있는지 확인합니다.

$ pkg list -afv package

가장 높은 버전 번호를 가진 패키지가 이미 설치된 경우 최신 버전이 없는 것입니다.

최신 버전이 있으면 최신 버전을 사용할 수 있는 패키지 저장소 위치를 확인하고, pkg set-publisher 명령을 사용하여 원본 URI를 재설정하거나 적절한 게시자에 원본 URI를 추가합니다. 필요한 경우, 필요한 키와 인증서를 설치하고 -k-c 옵션을 사용하여 지정합니다. pkgrepo list 명령을 사용하여 현재 설치된 버전의 패키지를 구성된 게시자에서도 사용할 수 있는지 확인합니다.

pkg update 명령을 다시 실행합니다. 다음 예제에 표시된 대로 -nv 옵션을 지정하고 설치할 패키지의 FMRI에 버전(또는 latest 키워드)을 포함하면 됩니다. 패키지 이름에 자세한 정보를 제공하면 대개 오류 출력에도 자세한 정보가 표시됩니다.

$ pkg update -nv package@latest

패키지를 설치할 수 없음

오류 메시지: No matching version of package can be installed

다음 명령을 사용하여 어떤 버전의 package를 구성된 패키지 게시자에서 사용할 수 있는지 확인합니다.

$ pkg list -afv package

설치할 패키지의 FMRI를 더 많이 지정합니다. 처음 발견되는 일치 항목은 이 이미지에 설치할 수 없지만, 특정 버전은 설치할 수 있습니다. 더 구체적인 FMRI를 여전히 설치할 수 없는 경우 FMRI를 더 많이 지정하면 패키지를 설치할 수 없는 이유가 자세히 표시됩니다.

설치/업데이트할 패키지의 버전이 고정되지 않았는지 확인합니다. pkg freeze 명령을 인수 없이 사용하여 고정된 버전을 가진 모든 패키지 목록을 표시합니다.

다음 명령을 사용하여 어떤 버전의 pkg:/entire 패키지가 설치되었는지 확인합니다.

$ pkg list -v entire

pkg:/entire 통합 패키지나 다른 통합 패키지의 제약을 받는 패키지를 설치하거나 업데이트할 수 없습니다. 통합 패키지를 업데이트해야 합니다. 자세한 내용은 제약 조건을 충족할 수 없음을 참조하십시오.

제약 조건을 충족할 수 없음

오류 메시지: No solution was found to satisfy constraints

이 메시지는 통합 패키지의 제약을 받는 패키지의 버전과 일치하지 않는 패키지 버전을 설치하려고 시도했을 때 나타납니다. 통합 패키지 및 제약 조건에 대한 자세한 내용은 통합 패키지를 참조하십시오.

통합은 패키지 세트를 연동되는 버전으로 제약하여 지원 가능한 이미지 상태가 유지되도록 도와줍니다. 이러한 이유로 통합의 제약을 받는 패키지 하나만 업데이트하면 안됩니다. 대신, 통합 패키지를 업데이트해야 합니다. 그러면 모든 제약된 패키지가 새로운 종합 테스트된 버전 세트로 업데이트됩니다.

패키지가 수정(업데이트) 중일 때 pkg 클라이언트는 관련 패키지와 해당 종속성을 검사합니다. 하나라도 종속 패키지를 설치하거나 업데이트할 수 없으면, 설치하거나 업데이트할 수 없는 패키지에 종속성을 가진 패키지마다 별도의 오류 메시지가 생성됩니다. 대량의 오류 메시지를 처리하는 가장 효과적인 방법은, 먼저 가장 안쪽에 있는 오류 메시지를 검사하는 것입니다.

통합의 제약을 받는 패키지 업데이트

오류 메시지:

  • No suitable version of installed package package found

  • All versions matching 'incorporate' dependency package are rejected

  • This version excluded by specified installation version

  • This version is excluded by installed incorporation

통합의 제약을 받는 패키지의 경우 최적의 사용법은 통합 패키지를 업데이트하는 것입니다. 그러면 모든 제약된 패키지가 종합 테스트된 세트로 유지됩니다.

그래도 통합 중에서 패키지 하나만 업데이트하려면 패키지에 version-lock 페이싯이 true로 설정되었는지 확인합니다. 패키지에 연관된 version-lock 페이싯이 있으면 통합으로부터 해당 패키지의 잠금을 해제할 수 있습니다. version-lock 페이싯을 false로 설정하여 제약 조건을 제거하고, 패키지를 다시 설치하거나 업데이트해 보십시오. -nv 옵션을 지정하고 패키지 이름의 FMRI에 원하는 패키지 버전을 지정합니다. 통합에서 지정한 버전 제약 조건 완화를 참조하십시오.

예 A-1  Java Runtime Environment 잠금 해제 및 업데이트

다음 예제는 runtime/java/jre-7 패키지를 업데이트하는 방법을 보여줍니다. jre-7 패키지는 consolidation/java/java-incorporation 패키지의 제약을 받고, 차례로 java-incorporation 패키지는 pkg:/entire 통합 패키지의 제약을 받습니다.

다음 명령은 jre-70.175.2.0.0.9.0 버전이 현재 설치되어 있고 구성된 패키지 저장소에서 최신 버전을 사용할 수 있음을 보여줍니다.

$ pkg list -af runtime/java/jre-7
NAME (PUBLISHER)                                  VERSION                    IFO
runtime/java/jre-7                                1.7.0.21-0.175.2.0.0.13.0  ---
runtime/java/jre-7                                1.7.0.17-0.175.2.0.0.9.0   i--

-f 옵션을 제거하면 어떤 버전을 업데이트할 수 있는지 보여줍니다. 다음 pkg list 출력은 이 이미지에 설치할 수 있는 최신 버전이 없음을 보여주고 pkg update 명령 출력은 이 상태를 확인합니다. -n 옵션은 어떻게 변경될지 보여주지만 실제로 아무것도 변경하지 않습니다.

$ pkg list -a runtime/java/jre-7
NAME (PUBLISHER)                                  VERSION                    IFO
runtime/java/jre-7                                1.7.0.17-0.175.2.0.0.9.0   i--
$ pkg update -nv runtime/java/jre-7
No updates available for this image.

이 패키지를 업데이트할 수 없는 이유를 자세히 표시하려면 업데이트할 버전을 지정합니다. 다음 예제에 표시된 출력은 설치된 java-incorporation@0.5.11,5.11-0.175.2.0.0.9.0 패키지가 jre-7@1.7.0.21-0.175.2.0.0.13.0 패키지의 설치를 허용하지 않음을 나타냅니다. java-incorporation@0.5.11,5.11-0.175.2.0.0.13.0 패키지는 jre-7@1.7.0.21-0.175.2.0.0.13.0 패키지의 설치를 허용하지만, 설치된 entire@0.5.11,5.11-0.175.2.0.0.12.0 통합 패키지는 jre-7@1.7.0.21-0.175.2.0.0.13.0 패키지의 설치를 허용하지 않습니다.

$ pkg update -nv runtime/java/jre-7@1.7.0.21-0.175.2.0.0.13.0
pkg update: No solution was found to satisfy constraints

maintained incorporations:
  [output omitted]
  pkg://solaris/entire@0.5.11,5.11-0.175.2.0.0.12.0:20130415T172730Z

Plan Creation: dependency error(s) in proposed packages:
  [output omitted]
  No suitable version of required package pkg://solaris/consolidation/java/java-
incorporation@0.5.11,5.11-0.175.2.0.0.9.0:20130304T213946Z found:
    Reject:  pkg://solaris/consolidation/java/java-incorporation@0.5.11,5.11-0.1
75.2.0.0.9.0:20130304T213946Z
    Reason:  All versions matching 'incorporate' dependency pkg:/runtime/java/jr
e-7@1.7.0.17,5.11-0.175.2.0.0.9.0 are rejected
      Reject:  pkg://solaris/runtime/java/jre-7@1.7.0.17,5.11-0.175.2.0.0.9.0:20
130304T214022Z
      Reason:  This version excluded by specified installation version
        Reject:  pkg://solaris/runtime/java/jre-7@1.7.0.17,5.11-0.175.2.0.0.9.0:
20130304T214022Z
        Reason:  This version excluded by specified installation version
      Reject:  pkg://solaris/consolidation/java/java-incorporation@0.5.11,5.11-0
.175.2.0.0.13.0:20130429T145534Z
      Reason:  This version is excluded by installed incorporation pkg://solaris
/entire@0.5.11,5.11-0.175.2.0.0.12.0:20130415T172730Z

Plan Creation: Errors in installed packages due to proposed changes:
  [output omitted]
  No suitable version of installed package pkg://solaris/consolidation/java/java
-incorporation@0.5.11,5.11-0.175.2.0.0.9.0:20130304T213946Z found
    Reject:  pkg://solaris/consolidation/java/java-incorporation@0.5.11,5.11-0.1
75.2.0.0.9.0:20130304T213946Z
    Reason:  All versions matching 'incorporate' dependency pkg:/runtime/java/jr
e-7@1.7.0.17,5.11-0.175.2.0.0.9.0 are rejected
      Reject:  pkg://solaris/runtime/java/jre-7@1.7.0.17,5.11-0.175.2.0.0.9.0:20
130304T214022Z
      Reason:  This version excluded by specified installation version
    Reject:  pkg://solaris/consolidation/java/java-incorporation@0.5.11,5.11-0.1
75.2.0.0.13.0:20130429T145534Z
    Reason:  This version is excluded by installed incorporation pkg://solaris/e
ntire@0.5.11,5.11-0.175.2.0.0.12.0:20130415T172730Z

최적의 사용법은 entire 패키지를 업데이트하는 것입니다. entire 패키지를 업데이트하면 java-incorporation 패키지가 업데이트되고, 차례로 jre-7 패키지가 업데이트됩니다. 이 예제에서 Java 패키지를 업데이트해야 하므로 해당 이미지를 업데이트된 버전의 entire 앞으로 이동할 수 없습니다.

Java 통합 패키지에 version-lock 페이싯을 설정하여 설치할 수 있는 Java 소프트웨어의 버전을 제약할 수 있습니다. 다른 소프트웨어를 업데이트하지 않고 Java 소프트웨어를 업데이트하려면 Java 통합 패키지의 version-lock 페이싯 잠금을 해제하고 Java 통합 패키지를 업데이트합니다. version-lock 페이싯에 대한 자세한 내용은 통합에서 지정한 버전 제약 조건 완화를 참조하십시오.

다음 명령은 설치된 java-incorporation 패키지의 version-lock 페이싯 값을 false로 변경합니다. 이미지의 각 패키지마다 이 페이싯을 검사하므로 업데이트할 패키지 수는 이 이미지에 설치된 패키지 수입니다.

$ pkg change-facet \
facet.version-lock.consolidation/java/java-incorporation=false
            Packages to update: 856
     Variants/Facets to change:   1
       Create boot environment:  No
Create backup boot environment: Yes

Planning linked: 1/1 done
PHASE                                          ITEMS
Removing old actions                             1/1
Updating image state                            Done
Creating fast lookup database                   Done
Reading search index                            Done
Building new search index                    856/856

다음 명령은 페이싯 값이 변경되었음을 보여줍니다.

$ pkg facet
FACETS                                                   VALUE
facet.version-lock.consolidation/java/java-incorporation False

다음 명령은 -n 옵션을 지정하므로 이 명령은 어떻게 변경될지 보여주지만 실제로 이미지를 변경하지는 않습니다.

$ pkg update -nv java-incorporation
            Packages to update:         2
     Estimated space available:  80.91 GB
Estimated space to be consumed: 687.28 MB
       Create boot environment:        No
Create backup boot environment:       Yes
          Rebuild boot archive:        No

Changed packages:
solaris
  consolidation/java/java-incorporation
    0.5.11,5.11-0.175.2.0.0.9.0:20130304T213946Z -> 0.5.11,5.11-0.175.2.0.0.13.0
:20130429T145534Z
  runtime/java/jre-7
    1.7.0.17,5.11-0.175.2.0.0.9.0:20130304T214022Z -> 1.7.0.21,5.11-0.175.2.0.0.
13.0:20130429T145626Z

다음 명령은 실제 업데이트를 수행합니다. 이 명령은 현재 이미지에서 업데이트를 수행합니다. --be-name 옵션을 사용하여 새 부트 환경에서 업데이트를 수행할 수 있습니다.

$ pkg update -v java-incorporation
            Packages to update:         2
     Estimated space available:  80.91 GB
Estimated space to be consumed: 687.28 MB
       Create boot environment:        No
Create backup boot environment:       Yes
          Rebuild boot archive:        No

Changed packages:
solaris
  consolidation/java/java-incorporation
    0.5.11,5.11-0.175.2.0.0.9.0:20130304T213946Z -> 0.5.11,5.11-0.175.2.0.0.13.0
:20130429T145534Z
  runtime/java/jre-7
    1.7.0.17,5.11-0.175.2.0.0.9.0:20130304T214022Z -> 1.7.0.21,5.11-0.175.2.0.0.
13.0:20130429T145626Z
DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
Completed                                2/2       171/171    61.9/61.9    0B/s

PHASE                                          ITEMS
Removing old actions                             7/7
Installing new actions                           6/6
Updating modified actions                    170/170
Updating package state database                 Done
Updating package cache                           2/2
Updating image state                            Done
Creating fast lookup database                   Done
Reading search index                            Done
Updating search index                            2/2

다음 명령은 jre-7 패키지가 이 이미지에서 업데이트되었는지 확인합니다. 새 부트 환경에서 업데이트를 수행하는 경우 beadm mountpkg -R을 사용하여 다음 검사를 새 부트 환경에서 수행합니다.

$ pkg list jre-7
NAME (PUBLISHER)                                  VERSION                    IFO
runtime/java/jre-7                                1.7.0.21-0.175.2.0.0.13.0  i--

적절한 종속성을 찾을 수 없을 때 통합 업데이트

오류 메시지: A version for 'incorporate' dependency cannot be found

통합 패키지와 해당 incorporate 종속성에 대한 자세한 내용은 통합 패키지를 참조하십시오.

다음 설치 상태가 통합 패키지의 incorporate 종속성에 나타날 때 통합 패키지가 업데이트를 실패할 수 있습니다.

  • 종속 패키지가 다른 버전에 고정되어 있습니다.

  • 종속 패키지가 이미 상위 버전에 설치되어 있습니다.

  • 종속 패키지가 다른 게시자에서 설치되었고, 해당 게시자가 고정되어 있습니다.

예 A-2  종속성을 잠금 해제하고 별도로 업데이트할 때 pkg:/entire 업데이트

다음 예제는 지정된 패키지 이름이 없으므로 모든 설치된 패키지를 업데이트하려고 시도합니다. 이 작업에서 업데이트하려고 시도한 설치된 패키지 중 하나는 pkg:/entire 통합 패키지입니다. 이 예제는 이미 상위 버전에 설치된 pkg:/entireincorporate 종속성을 보여줍니다.

$ pkg update --be-name s11.2
Creating Plan (Solver setup): /
pkg update: No solution was found to satisfy constraints
Plan Creation: Package solver has not found a solution to update to latest available versions.
This may indicate an overly constrained set of packages are installed.

latest incorporations:
[output omitted]
pkg://solaris/entire@0.5.11,5.11-0.175.2.0.0.10.0:20130318T181506Z

The following indicates why the system cannot update to the latest version:

No suitable version of required package pkg://solaris/entire@0.5.11,5.11-0.175.2
.0.0.10.0:20130318T181506Z found:
 Reject:  pkg://solaris/entire@0.5.11,5.11-0.175.2.0.0.10.0:20130318T181506Z
 Reason:  A version for 'incorporate' dependency on pkg:/consolidation/ub_javavm
/ub_javavm-incorporation@0.5.11,5.11-0.175.2.0.0.9.0 cannot be found

이 메시지는 시스템에서 업데이트하려고 시도한 pkg:/entire 통합 패키지의 버전이 설치할 수 없는 ub_javavm-incorporation 패키지의 버전을 가리킨다고 말합니다. 한 패키지를 설치할 수 없기 때문에 아무 패키지도 설치되지 않고 업데이트를 실패합니다.

다음 방법으로 ub_javavm-incorporation 패키지를 설치할 수 없는 이유를 자세히 제공할 수 있습니다.

  • -v 옵션을 사용합니다. 예를 들어, -v 또는 -vv를 사용하여 상세 정보 출력을 받습니다.

  • 업데이트할 패키지를 지정합니다. 자세한 입력을 제공할수록 더 자세한 메시지가 표시됩니다. 예를 들어, 패키지 이름 외에 패키지 FMRI에 버전을 포함합니다.

다음 명령은 -v 옵션을 포함하고 위의 메시지에서 복사한 entire@0.5.11,5.11-0.175.2.0.0.10.0 패키지로 업데이트하도록 지정합니다. 또한 이 명령은 --be-name 옵션 대신 -n 옵션을 지정합니다. -n 옵션은 어떻게 변경될지 보여주지만 실제로 이 이미지를 변경하지는 않습니다.

$ pkg update -nv entire@0.5.11,5.11-0.175.2.0.0.10.0
Creating Plan (Solver setup): /
pkg update: No matching version of entire can be installed:
 Reject:  pkg://solaris/entire@0.5.11,5.11-0.175.2.0.0.10.0:20130318T181506Z
 Reason:  All versions matching 'require' dependency pkg:/consolidation/ub_javav
m/ub_javavm-incorporation are rejected
  Reject:  pkg://solaris/consolidation/ub_javavm/ub_javavm-incorporation@0.5.11,
5.11-0.151.0.1:20101105T053418Z
  pkg://solaris/consolidation/ub_javavm/ub_javavm-incorporation@0.5.11,5.11-0.17
5.0.0.0.2.0:20111019T144756Z
  pkg://solaris/consolidation/ub_javavm/ub_javavm-incorporation@0.5.11,5.11-0.17
5.0.10.1.0.0:20120920T143020Z
  Reason:  Excluded by proposed incorporation 'entire'
  Newer version pkg://solaris/consolidation/ub_javavm/ub_javavm-incorporation@0.
5.11,5.11-0.175.2.0.0.13.0:20130429T145201Z is already installed
  Reject:  pkg://solaris/consolidation/ub_javavm/ub_javavm-incorporation@0.5.11,
5.11-0.175.2.0.0.9.0:20130304T213739Z
  Reason:  Newer version pkg://solaris/consolidation/ub_javavm/ub_javavm-incorpo
ration@0.5.11,5.11-0.175.2.0.0.13.0:20130429T145201Z is already installed
 Reject:  pkg://solaris/consolidation/ub_javavm/ub_javavm-incorporation@0.5.11,5
.11-0.175.2.0.0.13.0:20130429T145201Z
 Reason:  Excluded by proposed incorporation 'entire'

이 메시지는 현재 이 이미지에 설치된 ub_javavm-incorporation 패키지의 버전이 업데이트 작업으로 설치될 pkg:/entire 통합 패키지에서 지정한 버전보다 최신이라고 말합니다.

다음 명령은 현재 설치된 ub_javavm-incorporation 패키지의 버전을 보여줍니다.

$ pkg list ub_javavm-incorporation
NAME (PUBLISHER)                                  VERSION                    IFO
consolidation/ub_javavm/ub_javavm-incorporation   0.5.11-0.175.2.0.0.13.0    i--

다음 명령은 시스템에서 업데이트하려고 시도한 pkg:/entire 통합 패키지에서 지정한 ub_javavm-incorporation 패키지의 버전을 보여줍니다. 시스템에서 업데이트하려고 시도한 pkg:/entire 통합 패키지의 버전은 위의 출력의 첫번째 “Reject” 메시지에서 복사한 것입니다. -r 옵션은 설치된 이미지가 아니라 구성된 패키지 저장소에서 이 패키지를 찾습니다.

$ pkg contents -Hrt depend \
-a facet.version-lock.consolidation/ub_javavm/ub_javavm-incorporation=true \
-o fmri entire@0.5.11,5.11-0.175.2.0.0.10.0
consolidation/ub_javavm/ub_javavm-incorporation@0.5.11-0.175.2.0.0.9.0

이 문제를 해결하려면 업데이트 작업에서 특별히 지정된 패키지를 제외한 모든 설치된 패키지를 업데이트하도록 지시하면 됩니다. pkg update 명령에 하나 이상의 --reject 옵션을 사용하여 --reject 옵션에 지정된 패키지를 업데이트하지 않으면서 업데이트를 수행할 수 있습니다. --reject 인수에 와일드카드를 사용할 수 있습니다. 다음 명령에서 거부할 패키지는 위의 “Reject” 메시지에서 “Reason: Newer version is already installed” 메시지 앞에 오는 패키지를 복사한 것입니다.

$ pkg update -v --be-name s11.2 \
--reject 'consolidation/ub_javavm/ub_javavm-incorporation@0.5.11,5.11-0.151*' \
--reject 'consolidation/ub_javavm/ub_javavm-incorporation@0.5.11,5.11-0.175.0*' \
--reject 'consolidation/ub_javavm/ub_javavm-incorporation@0.5.11,5.11-0.175.2.0.0.9.0*'

팁  - --reject 인수를 지정할 때 주의하십시오. --reject 인수와 일치하는 패키지는 이미 설치된 것이라도 제거됩니다.

설치된 종속성을 허용할 수 없을 때 통합 업데이트

오류 메시지:

  • The installed package package is not permissible

  • Excluded by proposed incorporation

이 오류 메시지가 나타나면 package가 아마 다른 핵심 운영 체제 패키지와 동기화를 유지해야 하는 핵심 운영 체제 패키지일 것입니다. pkg facet 명령을 사용하여 facet.version-lock.package 페이싯의 값을 확인합니다. version-lock 페이싯 값이 false이면 pkg change-facet 명령을 사용하여 이 페이싯 값을 true로 변경하고 업데이트 작업을 다시 시도합니다.

필요한 패키지를 찾을 수 없음

오류 메시지: A version for 'require' dependency cannot be found

다음과 같이 필요한 패키지를 찾을 수 없다는 메시지가 나타나면 구성된 게시자에서 패키지를 사용할 수 있는지 여부를 확인합니다.

pkg update: No solution was found to satisfy constraints
Plan Creation: Package solver has not found a solution to update to
latest available versions.
This may indicate an overly constrained set of packages are installed.
[output omitted]
No suitable version of required package package1 found:
Reject: package1
Reason: A version for 'require' dependency package2 cannot be found

다음 명령을 사용하여 구성된 패키지 게시자에서 package2를 사용할 수 있는지 여부를 확인합니다.

$ pkg list -afv package2

pkg publisher 명령을 사용하여 게시자 원본 위치를 확인합니다. 이 패키지의 게시자는 전체 FMRI에서 pkg:// 뒤에 옵니다. 게시자 원본 위치를 변경해야 할 수 있습니다. 위치가 로컬 패키지 저장소인 경우 저장소를 업데이트해야 할 수 있습니다.

필요한 패키지가 거부됨

오류 메시지:

  • No solution was found to satisfy constraints

  • All versions matching 'require' dependency package are rejected

pkg update 명령의 다음 출력에서 초기 오류 메시지는 필요한 패키지 desktop-incorporation의 적절한 버전을 찾을 수 없다고 말합니다. desktop-incorporation 패키지가 적절치 않은 이유는 해당 종속 패키지 중 하나를 찾을 수 없기 때문입니다. 적절한 버전을 찾을 수 없으므로 desktop-incorporation 패키지가 거부됩니다. desktop-incorporation 패키지가 pkg:/entire 통합에 필요하기 때문에 pkg update를 실패합니다. 다음 명령은 desktop-incorporation 패키지가 pkg:/entire 통합에 필요함을 보여줍니다.

$ pkg search -Hlo pkg.name require:consolidation/desktop/desktop-incorporation

그 다음 오류 메시지는 필요한 패키지 python-extra-26의 적절한 버전을 찾을 수 없다고 말합니다. python-extra-26 패키지가 부적절한 이유는 python-extra-26 패키지에 desktop-incorporation 패키지가 필요한데 desktop-incorporation의 적절한 버전을 찾을 수 없기 때문입니다.

이 정보에 따라 이 업데이트 실패의 해결 방법은 desktop-incorporation 패키지의 필요한 버전을 설치할 방도를 찾는 것입니다.

pkg update: No solution was found to satisfy constraints

maintained incorporations:
  [output omitted]

Plan Creation: dependency error(s) in proposed packages:
  [output omitted]
  No suitable version of required package pkg://solaris/consolidation/desktop
/desktop-incorporation@0.5.11,5.11-0.175.2.0.0.26.0:20131028T145233Z found:
    Reject: pkg://solaris/consolidation/desktop/desktop-incorporation
@0.5.11,5.11-0.175.2.0.0.26.0:20131028T145233Z
    Reason: A version for 'incorporate' dependency on pkg:/library/python-2
/python-sexy-26@0.1.9-0.175.0.0.0.1.0 cannot be found
  No suitable version of required package pkg://solaris/library/python-2
/python-extra-26@2.6.4-0.175.1.0.0.15.0:201205014T200156Z found:
    Reject:  pkg://solaris/library/python-2/python-extra-26@
2.6.4-0.175.1.0.0.15.0:201205014T200156Z
    Reason: All versions matching 'require' dependency pkg:/consolidation
/desktop/desktop-incorporation are rejected
      Reject: pkg://solaris/consolidation/desktop/desktop-incorporation
@0.5.11,5.11-0.175.0.0.0.2.0:20111019T132128Z
  [output omitted]
pkg://solaris/consolidation/desktop/desktop-incorporation
@0.5.11,5.11-0.175.2.0.0.26.0:20131028T145233Z

다음 명령은 필요한 desktop-incorporation 패키지를 위해 찾을 수 없는 패키지가 필수는 아님을 보여줍니다. python-sexy-26 패키지는 desktop-incorporation 패키지에 통합되어 있지만 필수는 아닙니다.

$ pkg search -Hlo pkg.name require:library/python-2/python-sexy-26
$ pkg search -Hlo pkg.name incorporate:library/python-2/python-sexy-26
consolidation/desktop/desktop-incorporation

incorporate 종속성은 python-sexy-26 패키지가 설치될 경우 지정된 버전에 설치해야 한다고 말합니다. 그러나 어떤 패키지도 python-sexy-26 패키지를 요구하지 않기 때문에 python-sexy-26 패키지를 설치할 필요가 없습니다. 따라서 이 업데이트 실패의 한 가지 해결 방법은 python-sexy-26 패키지를 제거하는 것입니다. 이 패키지의 다른 버전이 현재 설치되어 있지만 업데이트 시 desktop-incorporation 통합에서 지정한 버전을 찾을 수 없었습니다. 패키지를 제거하면 업데이트 프로세스에서 업데이트된 패키지를 찾을 필요가 없습니다.

python-sexy-26 패키지가 필요해서 제거하고 싶지 않으면 pkg:/library/python-2 /python-sexy-26@0.1.9-0.175.0.0.0.1.0을 제공하는 패키지 저장소를 찾습니다. pkg set-publisher 명령을 사용하여 해당 저장소를 게시자 원본 위치에 추가하거나, pkgrecv 명령을 사용하여 해당 패키지를 현재 설정된 게시자 원본에 추가합니다.

패키지가 예상한 대로 업데이트되지 않음

오류 메시지: pkg update: The installed package package is not permissible.

업데이트 작업에 와일드카드를 사용하면 업데이트했어야 하는 패키지가 업데이트되지 않았더라도 오류 메시지가 표시되지 않을 수 있습니다. 와일드카드 없이 패키지 이름을 지정하면 오류 메시지를 볼 수 있습니다.

예를 들어, 다음 작업은 오류 없이 완료되지만 어떤 패키지도 업데이트하지 않습니다. 그러나 구성된 게시자에서 최신 패키지를 사용할 수 있는 것을 확인했습니다.

$ pkg update '*'

자세한 정보를 얻으려면 와일드카드를 사용하는 대신, 업데이트할 pkg:/entire 버전을 지정합니다.

$ pkg list -Hafv entire
pkg://solaris/entire@0.5.11,5.11-0.175.2.0.0.9.0:20130304T214506Z  ---
$ pkg update -nv pkg://solaris/entire@0.5.11,5.11-0.175.2.0.0.9.0:20130304T214506Z
Creating Plan (Solver setup): -
pkg update: The installed package compress/zip is not permissible.
  Reject:  pkg://solaris/compress/zip@3.0,5.11-0.175.2.0.0.7.0:20121119T070339Z
  Reason:  Excluded by proposed incorporation 'consolidation/userland/userland-incorporation'

이 예제에서 compress/zip 패키지는 userland-incorporation 통합 패키지의 업데이트를 막고, 차례로 pkg:/entire 통합의 업데이트를 막습니다. 다음 명령은 compress/zip 패키지에 대한 자세한 정보를 표시합니다.

$ pkg list compress/zip
NAME (PUBLISHER)  VERSION                   IFO
compress/zip      3.0-5.11-0.175.2.0.0.7.0  if-

이 출력은 compress/zip 패키지가 고정되었음을 보여줍니다. 패키지가 고정되었으므로 업데이트할 수 없습니다.

$ pkg unfreeze compress/zip
compress/zip was unfrozen.

compress/zip 패키지의 고정을 해제한 채, 원래 pkg update '*' 작업으로 이미지에서 사용 가능한 업데이트가 있는 모든 패키지를 업데이트해야 합니다. pkg freezepkg unfreeze 명령에 대한 자세한 내용은 지정한 버전으로 패키지 잠금을 참조하십시오.

동기 링크된 패키지를 설치할 수 없음에 표시된 pkg sync-linked 오류는 이와 비슷하지만 비전역 영역에서 패키지의 업데이트를 막습니다.

동기 링크된 패키지를 설치할 수 없음

오류 메시지: pkg sync-linked: The installed package package is not permissible.

sync-linked 패키지는 비전역 영역의 패키지입니다. 부모 이미지와 버전이 일치하지 않는다는 이유로 거부된 패키지를 볼 수 있습니다.

Linked progress: -pkg: update failed (linked image exception(s)):

A 'sync-linked' operation failed for child 'zone:z1' with an unexpected
return value of 1 and generated the following output:

pkg sync-linked: The installed package package is not permissible.
  Reject:  package
  Reason:  Parent image has a incompatible newer version: package

다음 이유로 이 비호환성 메시지가 나타날 수 있습니다.

  • 핵심 운영 체제 패키지는 전역 영역과 비전역 영역에서 버전이 같아야 합니다. 이 패키지를 비전역 영역에서 별도로 업데이트할 수 없습니다. 마찬가지로, 이 패키지를 비전역 영역에서 고정하면 전역 영역과 모든 비전역 영역에서 업데이트를 실패합니다.

    다음 명령은 전역 영역과 비전역 영역 간에 동기화를 유지해야 하는 패키지 목록을 표시합니다.

    $ pkg search -o pkg.name :depend:parent:
  • 구성된 영역이 있는 BE를 업데이트할 때 ABE(대체 BE)의 게시자 구성이 현재 부트된 BE의 게시자 구성과 다르면, 해당 BE를 마운트해서 pkg -R 명령을 사용하여 ABE를 업데이트할 수 없습니다. ABE의 비전역 영역은 현재 활성 BE의 게시자 구성을 사용합니다.

비전역 영역을 설치할 수 없음

오류 메시지: The following pattern(s) did not match any allowable packages. Try using a different matching pattern, or refreshing publisher information

핵심 운영 체제 패키지는 전역 영역과 비전역 영역에서 버전이 같아야 합니다. 이 이미지의 solaris 게시자 원본으로 설정된 패키지 저장소에 전역 영역에 설치된 것과 동일한 시스템 패키지 버전이 없는 경우, 비전역 영역을 설치하려고 시도하면 다음 오류가 발생합니다.

$ zoneadm -z myzone install
The following ZFS file system(s) have been created:
    rpool/export/zones/myzone
Progress being logged to /var/log/zones/zoneadm.20131104T181301Z.myzone.install
       Image: Preparing at /export/zones/myzone/root.

AI Manifest: /tmp/manifest.xml.9daq.i
SC Profile: /usr/share/auto_install/sc_profiles/enable_sci.xml
  Zonename: myzone
Installation: Starting ...

            Creating IPS image
Startup linked: 1/1 done
            Installing packages from:
                solaris
                    origin:  http://pkg.oracle.com/solaris/release/
            Error occurred during execution of 'generated-transfer-4606-1' checkpoint.
            Failed Checkpoints:

            Checkpoint execution error:

                The following pattern(s) did not match any allowable packages. Try
                using a different matching pattern, or refreshing publisher information:

Installation: Failed.  See install log at /system/volatile/install.4606/install_log
ERROR: auto-install failed.

비전역 영역을 설치하려면 solaris 게시자 원본으로 설정된 저장소에는 전역 영역에 설치된 것과 동일한 시스템 소프트웨어가 있어야 합니다. 저장소에는 더 오래되거나 최신인 소프트웨어가 포함될 수도 있지만, 전역 영역에 설치된 것과 동일한 소프트웨어가 있어야 합니다. 다음 명령은 /export/IPSpkgrepos/Solaris 저장소가 이 전역 영역에 적절한 게시자 원본임을 보여줍니다. 이 저장소에는 전역 영역에 설치된 것과 동일한 pkg:/entire 패키지 버전이 있기 때문입니다.

$ pkg list entire
NAME (PUBLISHER)      VERSION                   IFO
entire                0.5.11-0.175.2.0.0.26.0   i--
$ pkgrepo list -H -s /export/IPSpkgrepos/Solaris \
entire@0.5.11-0.175.2.0.0.26.0
solaris       entire       0.5.11-0.175.2.0.0.26.0:20131028T190148Z
$ pkg set-publisher -G '*' -M '*' -g /export/IPSpkgrepos/Solaris/ solaris

이미지를 수정할 수 없음

오류 메시지: pkg: The image cannot be modified as it is currently in use by another package client

다음 예제에서 표시된 대로 오류 메시지에는 이미지가 잠긴 클라이언트의 이름과 pid가 포함되어야 합니다.

pkg: The image cannot be modified as it is currently in use by another package
client: pkg on cbusl0406l, pid 26604.

현재 패키지 프로세스(이 예제에서 26604 프로세스)가 종료된 후에 pkg 명령을 다시 시도합니다. 프로세스가 빨리 종료되지 않으면 ptree -a를 사용하여 프로세스를 검사하기 시작합니다.

현재 이 이미지에서 작동 중인 패키지 프로세스는 사용 가능한 업데이트가 있는지 여부를 검사하는 업데이트 관리자일 수 있습니다. 업데이트 관리자 cron 작업과 pkg/update 서비스에 대한 자세한 내용은 업데이트 관리자 사용을 참조하십시오.

파일이 회수됨

다음 정보 메시지에 이어서 회수된 파일의 경로와 파일이 이동된 임시 위치가 표시됩니다.

The following unexpected or editable files and directories were
salvaged while executing the requested package operation; they
have been moved to the displayed location in the image:

이것은 정보 메시지이므로 필요에 따라 무시하거나 조치를 취할 수 있습니다.

디렉토리는 IPS에서 참조 카운트됩니다. 명시적 또는 암시적으로 디렉토리를 참조하는 이미지에 설치된 마지막 패키지가 더 이상 디렉토리를 참조하지 않을 경우 해당 디렉토리가 제거됩니다. 해당 디렉토리에 패키지화되지 않은 파일 시스템 객체가 포함된 경우 해당 항목은 $IMAGE_META/lost+found로 이동됩니다. 패키지화되지 않은 파일 시스템 객체는 IPS 패키지로 제공되지 않는 파일과 디렉토리입니다. IMAGE_META 값은 일반적으로 /var/pkg입니다. IMAGE_META 디렉토리에 대한 자세한 내용은 pkg(5) 매뉴얼 페이지의 “Files” 섹션을 참조하십시오.

저장된 이미지 메타 데이터 최소화

/var/pkg 디렉토리는 이미지의 메타 데이터를 보유합니다. 이 디렉토리는 상당히 커질 수 있습니다. /var/pkg 디렉토리에서 아무것도 수동으로 제거하지 마십시오.

flush-content-cache-on-success 이미지 등록 정보 값이 true로 설정되어 있는지 확인합니다. flush-content-cache-on-success 등록 정보 값은 기본적으로 true입니다. flush-content-cache-on-success 값이 true일 때 pkg installpkg update 작업이 성공적으로 완료되면 캐시된 파일이 제거됩니다. flush-content-cache-on-success 등록 정보가 false로 설정된 경우, 다음 예제에 표시된 명령을 사용하여 값을 true로 재설정할 수 있습니다.

$ pkg property flush-content-cache-on-success
PROPERTY                       VALUE
flush-content-cache-on-success False
$ pkg set-property flush-content-cache-on-success true
$ pkg property -H flush-content-cache-on-success
flush-content-cache-on-success True

컨텐츠 캐시를 비우면(flush-content-cache-on-successtrue로 설정) 일부 pkg 작업을 완료하는 데 시간이 오래 걸릴 수 있습니다.

비전역 영역마다 다른 캐시를 가질 수 있도록 /usr/lib/pkg.sysrepo-c 옵션을 설정할 수 있습니다. -s 옵션으로 이 캐시의 최대 크기를 설정할 수 있습니다. pkg.sysrepo(1M) 매뉴얼 페이지를 참조하십시오.

패키지 설치 성능 향상

다음 단계는 패키지 설치 및 업데이트 성능이 향상되도록 도와줍니다.

  • ZFS 저장소 풀 용량이 80% 미만인지 확인합니다.

    $ zpool list
    NAME  SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
    rpool 186G 75.2G 111G 40% 1.00x ONLINE -
  • 로컬 패키지 저장소를 사용합니다. Oracle Solaris 11.2 패키지 저장소 복사 및 만들기 를 참조하십시오.

  • http_proxy가 설정된 경우 프록시의 성능을 확인합니다.