Crear repositorio local solaris 11

Una de las novedades de Solaris 11 con respecto a sus versiones anteriores es la utilización, por fin, de un sistema de gestión de paquetes parecido a los disponibles en linux. Este sistema permite la instalación de software de manera sencilla, conectandose a un repositorio (por defecto el de Oracle) de donde baja el software y todas sus dependencias. Ya no es necesario bajarse el paquete, revisar las dependencias, bajarse las dependencias, revisar a su vez las dependencias de las primeras, etc, etc…
Si solo vamos a tener unos pocos servidores será suficiente con mantener el repositorio de Oracle. En cambio, si vamos a tener una gran instalación puede interesar montar un repositorio local. De esta forma, el repositorio estará sincronziado con el de Oracle y los servidores no necesitarán conectarse a internet para la instalación de software. 
El aprovisionado de zonas también es mas rápido ya que en Solaris 11 es necesario la conexión al repositorio, haciendo que sea mas rápido si está en la red local.
Para la instalación del repositorio bajamos las imágenes ISO que ofrece Oracle desde su web de descargas. Son necesarias dos imágenes ISO que deberemos concatenarlas y montarlas en un directorio:

# cat sol-11-1111-repo-full.iso-a sol-11-1111-repo-full.iso-b > sol-11-1111-repo-full.iso
# mkdir /export/repoSolaris11
# mv sol-11-1111-repo-full.iso /export/repoSolaris11/
# mount -F hsfs /export/repoSolaris11/sol-11-1111-repo-full.iso /mnt
# ls /mnt
COPYRIGHT NOTICES README repo

A continuación se deberá sincronizar el contenido de la ISO con el directorio que servirá como repositorio:  

# rsync -aP /mnt/repo/ /export/repoSolaris11
sending incremental file list
./
pkg5.repository

240 100% 0.00kB/s 0:00:00 (xfer#1, to-check=1378/1380)

publisher/
publisher/solaris/
publisher/solaris/catalog/
publisher/solaris/catalog/catalog.attrs

1250 100% 23.94kB/s 0:00:00 (xfer#2, to-check=1369/1380)

publisher/solaris/catalog/catalog.base.C

602328 100% 6.24MB/s 0:00:00 (xfer#3, to-check=1368/1380)

publisher/solaris/catalog/catalog.dependency.C

Una vez haya terminado de sincronizar podemos desmontar la ISO:

root@s11template:/var/tmp# umount /mnt

    Con el contenido ya en su ubicación final es momento de crear el indice del repositorio:

    # pkgrepo -s /export/repoSolaris11 refresh
    Initiating repository refresh

      El repositorio hara uso de servicios que deberán ser configurados adecuadamente para que sirvan correctamente el software. El servicio publisher se configurará de la siguiente manera para hacer accesible el repositorio por http:

      # svccfg -s application/pkg/server setprop pkg/inst_root=/export/repoSolaris11
      # svccfg -s application/pkg/server setprop pkg/readonly=true
      # svcprop -p pkg/inst_root application/pkg/server /export/repoSolaris11

        Podemos verificar que se han guardado los cambios en la configuración y a continuación aplicar las modificaciones refrescando el servicio:

          # svcprop application/pkg/server
          pkg/address net_address
          pkg/cfg_file astring “”
          pkg/content_root astring usr/share/lib/pkg
          pkg/debug astring “” pkg/file_root astring “”
          pkg/log_access astring none
          pkg/log_errors astring stderr
          pkg/mirror boolean false
          pkg/pkg_root astring /
          pkg/port count 80
          pkg/proxy_base astring “”
          pkg/socket_timeout count 60
          pkg/sort_file_max_size astring “”
          pkg/ssl_cert_file astring “”
          pkg/ssl_dialog astring smf
          pkg/ssl_key_file astring “”
          pkg/threads count 60
          pkg/writable_root astring “”
          pkg/inst_root astring /export/repoSolaris11
          pkg/readonly boolean true
          pkg_bui/feed_description ustring “”
          pkg_bui/feed_icon ustring web/_themes/pkg-block-icon.png
          pkg_bui/feed_logo ustring web/_themes/pkg-block-logo.png
          pkg_bui/feed_name ustring package\ repository\ feed
          pkg_bui/feed_window count 24
          pkg_secure/read_authorization astring solaris.smf.read.pkg-server
          pkg_secure/ssl_key_passphrase astring “”
          fs/entities fmri svc:/system/filesystem/local
          fs/grouping astring require_all
          fs/restart_on astring none
          fs/type astring service
          autofs/entities fmri svc:/system/filesystem/autofs
          autofs/grouping astring optional_all
          autofs/restart_on astring none
          autofs/type astring service
          ntp/entities fmri svc:/network/ntp
          ntp/grouping astring optional_all
          ntp/restart_on astring none
          ntp/type astring service
          network/entities fmri svc:/milestone/network
          network/grouping astring require_all
          network/restart_on astring none
          network/type astring service
          manifestfiles/lib_svc_manifest_application_pkg_pkg-server_xml astring /lib/svc/manifest/application/pkg/pkg-server.xml
          general/entity_stability astring Unstable
          start/exec astring %{pkg/pkg_root}/lib/svc/method/svc-pkg-depot\ %m
          start/timeout_seconds count 0
          start/type astring method
          stop/exec astring %{pkg/pkg_root}/lib/svc/method/svc-pkg-depot\ %m\ %{restarter/contract}
          stop/timeout_seconds count 30
          stop/type astring method tm_common_name/C ustring image\ packaging\ repository

          # svcadm refresh application/pkg/server
          # svcadm enable application/pkg/server

            Con esto ya esta el servicio configurado. Ahora, al propio servidor se le puede configurar el publisher local como repositorio principal:

            # pkg set-publisher -G ‘*’ -M ‘*’ -g http://localhost:80/ solaris
            # pkg publisher
            PUBLISHER TYPE STATUS URI
            solaris origin online http://localhost:80/

              Si quisieramos volver al repositorio de Oracle:

              # pkg set-publisher \
              > -k /var/pkg/ssl/Oracle_Solaris_11_Support.key.pem \
              > -c /var/pkg/ssl/Oracle_Solaris_11_Support.certificate.pem \
              > -g https://pkg.oracle.com/solaris/support/ \
              > -G http://pkg.oracle.com/solaris/release/ solaris

              # pkg publisher
              PUBLISHER TYPE STATUS URI
              solaris origin online https://pkg.oracle.com/solaris/support/

                NOTA: Oracle dispone de dos repositorios, uno público, en el que no publica parches y otro privado que requiere el uso de certificados. Los certificados se consiguen aqui: http://pkg-register.oracle.com/ y es requesito disponer de un CSI válido para obtenerlos.

                Con el repositorio ya configurado podemos realizar una simulación de actualización:

                # pkg update -nv

                Packages to install: 6
                Packages to update: 238
                Mediators to change: 1
                Estimated space available: 1.67 GB
                Estimated space to be consumed: 1.04 GB
                Create boot environment: Yes
                Activate boot environment: Yes
                Create backup boot environment: No
                Rebuild boot archive: Yes

                Changed mediators:
                mediator java:
                version: None -> 1.6 (system default)

                Changed packages:
                solaris
                database/mysql-51/library
                None -> 5.1.37,5.11-0.175.0.0.0.2.537:20111019T091844Z
                library/apr-util-13/apr-ldap

                  Con este nuevo sistema podemos sacar un listado de paquetes con actualizaciones disponibles:

                  # pkg list -u
                  NAME (PUBLISHER) VERSION IFO
                  consolidation/SunVTS/SunVTS-incorporation 0.5.11-0.172.0.0.0.0.0 i–
                  consolidation/X/X-incorporation 0.5.11-0.175.0.0.0.0.1215 i–
                  consolidation/cacao/cacao-incorporation 0.5.11-0.174.0.0.0.0.0 i–
                  consolidation/cns/cns-incorporation 0.5.11-0.175.0.0.0.1.0 i–
                  consolidation/desktop/desktop-incorporation 0.5.11-0.175.0.0.0.2.0 i–
                  consolidation/desktop/gnome-incorporation 0.5.11-0.175.0.0.0.2.0 i–
                  consolidation/install/install-incorporation 0.5.11-0.175.0.0.0.2.1482 i–
                  consolidation/ips/ips-incorporation 0.5.11-0.175.0.0.0.2.2576 i–
                  consolidation/java/java-incorporation 0.5.11-0.173.0.0.0.0.0 i–
                  consolidation/l10n/l10n-incorporation 0.5.11-0.175.0.0.0.1.765 i–
                  consolidation/ldoms/ldoms-incorporation 0.5.11-0.175.0.0.0.1.0 i–

                  Actualización del Repositorio:

                  Existen dos repositorios de oracle, uno con los paquetes de la release y otro con los paquetes con actualizaciones y parches. Con el primero es normal que no actualice nada:

                  # pkgrecv -s http://pkg.oracle.com/solaris/release/ -d /export/repoSolaris11 ‘*’
                  Processing packages for publisher solaris …
                  Retrieving and evaluating 4292 package(s)…

                  En cambio, si configuramos el repositorio de soporte, si que bajará los parches que se han ido añadiendo al repositorio. Para poder configurar este repositorio deberemos disponer de las claves.

                  # pkgrecv -s https://pkg.oracle.com/solaris/support/ -d /export/repoSolaris11 \
                  > –key /var/pkg/ssl/Oracle_Solaris_11_Support.key.pem \
                  > –cert /var/pkg/ssl/Oracle_Solaris_11_Support.certificate.pem ‘*’
                  Processing packages for publisher solaris …
                  Retrieving and evaluating 4304 package(s)…
                  PROCESS ITEMS GET (MB) SEND (MB)
                  mail/thunderbird 21/391 56.5/2535.6 56.9/8402.3

                  Actualizando un sistema

                    Una vez tenemos el repositorio local actualizado podríamos parchear un sistema de la siguiente manera

                    # pkg update
                    Packages to install: 6
                    Packages to update: 238
                    Mediators to change: 1
                    Create boot environment: Yes
                    Create backup boot environment: No

                    DOWNLOAD PKGS FILES XFER (MB)
                    Completed 244/244 6412/6412 166.1/166.1

                    PHASE ACTIONS
                    Removal Phase 1944/1944
                    Install Phase 2455/2455
                    Update Phase 8580/8580

                    PHASE ITEMS
                    Package State Update Phase 482/482
                    Package Cache Update Phase 238/238
                    Image State Update Phase 2/2

                    A clone of solaris exists and has been updated and activated.
                    On the next boot the Boot Environment solaris-1 will be mounted on ‘/’.
                    Reboot when ready to switch to this updated BE.

                    —————————————————————————
                    NOTE: Please review release notes posted at:
                    http://www.oracle.com/pls/topic/lookup?ctx=E23824&id=SERNS
                    ————————————————————————–

                      Al existir parches de Kernel nos ha creado un nuevo Boot Environment, aunque no lo hayamos especificado explícitamente. Listanto los Boot Enviroments verificamos que se ha creado uno nuevo y se ha activado para el próximo reboot:

                      # beadm list
                      BE Active Mountpoint Space Policy Created
                      — —— ———- —– —— ——-
                      solaris N / 6.72M static 2012-10-08 17:42
                      solaris-1 R – 4.04G static 2012-10-10 16:26

                       
                      Antes de reiniciar para activar el nuevo Boot Environment verificaremos la versión de Kernel que tenemos actualmente instalada:

                      # pkg info system/kernel
                      Name: system/kernel
                      Summary: Core Kernel
                      Description: Core operating system kernel, device drivers and other modules.
                      Category: System/Core
                      State: Installed
                      Publisher: solaris
                      Version: 0.5.11
                      Build Release: 5.11
                      Branch: 0.175.0.0.0.2.1
                      Packaging Date: October 19, 2011 07:57:11 AM
                      Size: 32.33 MB
                      FMRI: pkg://solaris/system/kernel@0.5.11,5.11-0.175.0.0.0.2.1:20111019T075711Z

                       Una vez reiniciado el sistema, podemos ver que ha arrancado con una versión superior:

                      # pkg info system/kernel
                      Name: system/kernel
                      Summary: Core Kernel
                      Description: Core operating system kernel, device drivers and other modules.
                      Category: System/Core
                      State: Installed
                      Publisher: solaris
                      Version: 0.5.11
                      Build Release: 5.11
                      Branch: 0.175.0.11.0.4.1
                      Packaging Date: August 30, 2012 02:21:42 PM
                      Size: 32.04 MB
                      FMRI: pkg://solaris/system/kernel@0.5.11,5.11-0.175.0.11.0.4.1:20120830T142142Z

                      Vuelta atrás de un parcheo

                      Siempre que se lanza un parcheo existe la posibilidad de indicarle sobre que Boot Enviroment aplicarlo. Se le puede especificar que cree uno nuevo, donde se instalarán los parches, y posteriormente reiniciar el servidor con ese nuevo Boot Enviroment. El nuevo Boot Enviroment no siempre se crea de forma automática, pero si se lanza una simulacion de la actualización se indica en el resumen de la misma.
                      Para lanzar una actualización forzando la creación de un nuevo Boot Enviroment lo haremos de la siguiente forma:
                       
                      root@s11client:~# pkg update –require-new-be –be-name parcheo –accept
                      Packages to install: 6
                      Packages to update: 238
                      Mediators to change: 1
                      Create boot environment: Yes
                      Create backup boot environment: No

                      DOWNLOAD PKGS FILES XFER (MB)
                      Completed 244/244 6412/6412 166.1/166.1

                      PHASE ACTIONS
                      Removal Phase 1944/1944
                      Install Phase 2455/2455
                      Update Phase 8580/8580

                      PHASE ITEMS
                      Package State Update Phase 482/482
                      Package Cache Update Phase 238/238
                      Image State Update Phase 2/2

                      A clone of solaris exists and has been updated and activated.
                      On the next boot the Boot Environment parcheo will be mounted on ‘/’.
                      Reboot when ready to switch to this updated BE.

                      —————————————————————————
                      NOTE: Please review release notes posted at:
                      http://www.oracle.com/pls/topic/lookup?ctx=E23824&id=SERNS
                      —————————————————————————

                      Verificaremos el nuevo Boot Enviroment creado y que será el activo en el próximo arranque del servidor. Posteriormente reiniciamos para aplicarlo.

                      # beadm list
                      BE Active Mountpoint Space Policy Created
                      — —— ———- —– —— ——-
                      parcheo R – 4.15G static 2012-10-11 09:37
                      solaris N / 502.0K static 2012-10-08 17:42
                      # init 6

                      Al reiniciar vemos que la versión del kernel es la nueva, el boot enviroment activo es el creado durante el parcheo:

                      $ beadm list
                      BE Active Mountpoint Space Policy Created
                      — —— ———- —– —— ——-
                      parcheo NR / 4.22G static 2012-10-11 09:37
                      solaris – – 11.08M static 2012-10-08 17:42 

                      # pkg info system/kernel
                      Name: system/kernel
                      Summary: Core Kernel
                      Description: Core operating system kernel, device drivers and other modules.
                      Category: System/Core
                      State: Installed
                      Publisher: solaris
                      Version: 0.5.11
                      Build Release: 5.11
                      Branch: 0.175.0.11.0.4.1
                      Packaging Date: August 30, 2012 02:21:42 PM
                      Size: 32.04 MB
                      FMRI: pkg://solaris/system/kernel@0.5.11,5.11-0.175.0.11.0.4.1:20120830T142142Z

                      Si queremos volver atras el parcheo por algún motivo, basta con activar el boot enviroment original y reiniciar:

                      # beadm activate solaris
                      # beadm list BE
                      Active Mountpoint Space Policy Created
                      — —— ———- —– —— ——-
                      parcheo N / 810.33M static 2012-10-11 09:37
                      solaris R – 3.52G static 2012-10-08 17:42
                      root@s11client:~# init 6

                      Una vez reinicado vemos que el boot enviroment original es el activo y que la versión de kernel es la que teniamos inicialmente:

                      # pkg info system/kernel
                      Name: system/kernel
                      Summary: Core Kernel
                      Description: Core operating system kernel, device drivers and other modules.
                      Category: System/Core
                      State: Installed
                      Publisher: solaris
                      Version: 0.5.11
                      Build Release: 5.11
                      Branch: 0.175.0.0.0.2.1
                      Packaging Date: October 19, 2011 07:57:11 AM
                      Size: 32.33 MB
                      FMRI: pkg://solaris/system/kernel@0.5.11,5.11-0.175.0.0.0.2.1:20111019T075711Z
                      # beadm list BE
                      Active Mountpoint Space Policy Created
                      — —— ———- —– —— ——-
                      parcheo – – 812.17M static 2012-10-11 09:37
                      solaris NR / 3.57G static 2012-10-08 17:42
                       

                      Configuración del servicio a traves de proxy

                      Si no funciona la actualización y da time out es posible que sea debido a la configuración del proxy. Hay que configurar en las propiedades del servicio para que tome el proxy y también en las variables de entorno:
                       
                      # svccfg -s svc:/application/pkg/system-repository:default setprop config/http_proxy=astring: “http://USUARIO:PASSWORD@X.X.X.X:PPPP”
                      # svccfg -s svc:/application/pkg/system-repository:default setprop config/https_proxy=astring: “http://USUARIO:PASSWORD@X.X.X.X:PPPP”


                      Reconfigurar el servicio

                      # svcadm refresh svc:/application/pkg/system-repository:default

                      Verificacion de las propiedades:

                      # svcprop pkg/system-repository | grep proxy
                      config/http_proxy astring http://USUARIO:PASSWORD@X.X.X.X:PPPP
                      config/https_proxy astring http://USUARIO:PASSWORD@X.X.X.X:PPPP

                      Además es recomendable definir las variables de entorno:
                       
                      # export http_proxy=”http://USUARIO:PASSWORD@X.X.X.X:PPPP”
                      # export https_proxy=”http://USUARIO:PASSWORD@X.X.X.X:PPPP”

                      Anuncios

                      Responder

                      Introduce tus datos o haz clic en un icono para iniciar sesión:

                      Logo de WordPress.com

                      Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

                      Imagen de Twitter

                      Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

                      Foto de Facebook

                      Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

                      Google+ photo

                      Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

                      Conectando a %s