La filosofía es similar al apt en Debian o yum en RHEL, así que vamos a ver unos cuantos ejemplos de instalación, eliminación, actualización de paquetes, etc.
Buscar un paquete
La sintaxis a utilizar es la siguiente:
# pkg search <paquete>
Si por ejemplo quisiéramos buscar el servidor web Lighttpd podríamos buscar las versiones disponibles así:
# pkg search lighttpd INDEX ACTION VALUE PACKAGE description set Lighttpd Web Server pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1 pkg.description set The Lighttpd Web Server (1.4.23) pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1 pkg.summary set Lighttpd Web Server pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1 basename dir etc/lighttpd pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1 basename dir usr/lighttpd pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1 basename dir var/lighttpd pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1 basename file etc/security/auth_attr.d/lighttpd pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1 basename file etc/security/prof_attr.d/lighttpd pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1 basename file usr/lighttpd/1.4/sbin/lighttpd pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1 pkg.fmri set solaris/web/server/lighttpd pkg:/web/server/lighttpd@1.4.23-0.134
También podemos buscar en un repositorio determinado con el parámetro -s:
# pkg search -s http://pkg.repo.com/ lighttpd
O utilizar las cláusula AND y OR para encadenar consultas y/o utilizar comodines:
# pkg search lighttpd AND htt*d OR apache
Ver la información de un paquete
Para ver toda la información de un paquete usaremos el parámetro info seguido del paquete a consultar:
# pkg info pkg://solaris/web/server/lighttpd-14@1.4.23-0.151.0.1 Name: web/server/lighttpd-14 Summary: Lighttpd Web Server Description: The Lighttpd Web Server (1.4.23) Category: Web Services/Application and Web Servers State: Not installed Publisher: solaris Version: 1.4.23 Build Release: 5.11 Branch: 0.151.0.1 Packaging Date: 5 de noviembre de 2010 06:22:12 Size: 794.78 kB FMRI: pkg://solaris/web/server/lighttpd-14@1.4.23,5.11-0.151.0.1:20101105T062212Z
Instalación de un paquete
La instalación es sencilla, como en cualquier gestor de paquetes:
# pkg install <paquete>
Vamos a instalar una de las versiones de lighttpd encontradas antes:
# pkg install pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1 Packages to install: 2 Create boot environment: No Services to restart: 1 DOWNLOAD PKGS FILES XFER (MB) Completed 2/2 52/52 4.5/4.5 PHASE ACTIONS Install Phase 143/143 PHASE ITEMS Package State Update Phase 2/2 Image State Update Phase 2/2
Como véis, a la hora de instalar un paquete se puede especificar la versión exacta a instalar de todas las disponibles, y también el «publisher» del cual la queremos instalar. Si quisieramos instalarla desde otro repositorio/publisher lo especificaríamos del siguiente modo, donde repo-mirror.com es el publisher.:
# pkg install pkg://repo-mirror.com/test/paquete-solaris
Simular la instalación de un paquete
Pasando los parámetros -nv a install podemos ver lo que se instalaría en el sistema sin necesidad de hacerlo:
# pkg install -nv <paquete>
# pkg install -nv pkg:/system/management/webmin@1.510-0.151.0.1 Packages to install: 1 Create boot environment: No Services to restart: 1 Rebuild boot archive: No Changed fmris: None -> pkg://solaris/system/management/webmin@1.510,5.11-0.151.0.1:20101105T061636Z Services: restart_fmri: svc:/system/manifest-import:default
Actualizar un paquete
A la hora de actualizar un paquete se puede usar tanto la orden install como update:
# pkg update <paquete> # pkg install <paquete>
Verificar la instalación de un paquete
Una vez realizada una instalación podemos verificar si todo se ha realizado de forma correcta, si el paquete se ha instalado bien, busqueda de errores, etc. Para ello utilizamos el parámetro verify. Con el parámetro -v vemos toda la información y con -q únicamente los errores:
# pkg verify -v pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1 Verifying: PACKAGE STATUS pkg://solaris/web/server/lighttpd-14 OK
Arreglar fallos en paquetes instalados
En caso de haber recibido algún error en el punto mencionado anteriormente (verify), podemos tratar de arreglarlo mediante la siguiente orden:
pkg fix --accept <paquete>
Desinstalar un paquete
Muy sencillo:
pkg uninstall <paquete>
Vamos a desinstalar el servidor web lighttpd instalado anteriormente:
# pkg uninstall pkg://solaris/web/server/lighttpd-14@1.4.23-0.151. Packages to remove: 1 Create boot environment: No Services to restart: 1 PHASE ACTIONS Removal Phase 1/104 Warning - directory //var/lighttpd/1.4/logs not empty or not expected during operation - contents preserved in /var/pkg/lost+found/var/lighttpd/1.4/logs-20110925T204323Z Warning - directory //var/lighttpd/1.4/docroot not empty or not expected during operation - contents preserved in /var/pkg/lost+found/var/lighttpd/1.4/docroot-20110925T204323Z Removal Phase 104/104 PHASE ITEMS Package State Update Phase 1/1 Package Cache Update Phase 1/1 Image State Update Phase 2/2
Ver el contenido de un paquete
Siempre es útil conocer el contenido del paquete a instalar para saber con exactitud que es lo que vamos a instalar en nuestro sistema y donde. Si queremos, podemos especificar que nos indique el path, el tamaño de cada fichero, etc:
# pkg contents -r -o pkg.size,path pkg://solaris/web/server/lighttpd-14@1.4.23-0.151.0.1 PKG.SIZE PATH 1503 1503 etc etc/lighttpd etc/lighttpd/1.4 etc/lighttpd/1.4/conf.d 1934 etc/lighttpd/1.4/conf.d/fcgi-php.conf 1105 etc/lighttpd/1.4/conf.d/ssl.conf 11497 etc/lighttpd/1.4/lighttpd.conf etc/security .... .... .... 11696 usr/lighttpd/1.4/lib/mod_extforward.so
Visualizar el historial de acciones realizadas con pkg
Podemos ver un registro de las acciones realizadas:
# pkg history TIME OPERATION CLIENT OUTCOME 2010-11-05T16:14:56 purge-history pkg Succeeded 2011-09-22T18:41:16 uninstall pkg Succeeded 2011-09-22T18:41:37 uninstall pkg Succeeded 2011-09-22T18:41:53 set-property pkg Succeeded 2011-09-22T18:42:03 set-property pkg Succeeded 2011-09-25T10:21:01 uninstall pkg Succeeded 2011-09-25T17:05:22 refresh-publishers pkg Succeeded 2011-09-25T17:05:22 install pkg Failed (Bad Request) 2011-09-25T17:12:25 refresh-publishers pkg Succeeded
Y para eliminar este registro:
# pkg purge-history
Espero que os haya sido de utilidad esta guía de iniciación a pkg en Oracle Solaris, seguiré profundizando en los secretos de este sistema en próximos artículos.