En una instalación de Solaris 11 completa o de escritorio, hay tres awk implementaciones disponibles, más algunas variantes:
/ usr / bin / awk pkg: /system/core-os@0.5.11-0.175.3.1.0.2.0
/ usr / bin / nawk pkg: /system/core-os@0.5.11-0.175.3.1.0.2.0
/ usr / bin / oawk pkg: /system/core-os@0.5.11-0.175.3.1.0.2.0
/ usr / gnu / bin / awk paquete: /text/gawk@3.1.8-0.175.3.0.0.30.0
/ usr / bin / gawk pkg: /text/gawk@3.1.8-0.175.3.0.0.30.0
/ usr / bin / igawk pkg: /text/gawk@3.1.8-0.175.3.0.0.30.0
/ usr / bin / pgawk pkg: /text/gawk@3.1.8-0.175.3.0.0.30.0
/ usr / xpg4 / bin / awk pkg: /system/xopen/xcu4@0.5.11-0.175.3.0.0.30.0
Todos son "compatibles con los estándares", aunque cumplen con diferentes estándares.
/usr/bin/awkestá cumpliendo con la awkimplementación heredada de UNIX lanzada en 1977. Se mantiene primero en la RUTA predeterminada del sistema para no romper los scripts existentes ya que las awkversiones posteriores rompen la compatibilidad. oawkes sinónimo deawk
/usr/bin/nawkes la "nueva" versión de awk, enviada por primera vez en SVR3.1 en 1986. El Awkestándar POSIX se basó en esta implementación. /usr/xpg4/bin/awkes casi idéntico al anterior, pero el que se verifica formalmente con las pruebas de validación de conformidad POSIX.
/usr/gnu/bin/awk, también /usr/bin/gawkes la variante GNU de awk. Su objetivo es cumplir con la mayoría o la totalidad del estándar POSIX cuando la variable de entorno POSIXLY_CORRECTse establece en el entorno o cuando se llama con la -W posixopción, pero de lo contrario agrega numerosas extensiones propias específicas. igawky pgawkson extensiones en sí mismas gawk, la primera admite incluir archivos y la segunda admite la creación de perfiles.
Consulte también el capítulo de historia de GNUawk para obtener mucha información útil.
Sólo los core-ospaquetes están garantizados para estar presentes en una instalación normal de Solaris 11, por lo tanto sólo oawk/awky nawkestán ahí. En particular, cuando crea una nueva zona no global , contiene de manera predeterminada el solaris-small-serverpaquete de grupo, de modo que xpg4ni el gnu awkbinario ni el otro están disponibles. Esto es por diseño. El solaris-small-servergrupo es un punto de inicio mínimo al que agrega los paquetes necesarios para que sus aplicaciones funcionen correctamente. Esto es más seguro y eficiente que la forma anterior (Solaris 10) donde todo lo instalado en la zona global también se instaló en la no global, por lo que tuvo que eliminar los paquetes no utilizados cuando quería minimizar la zona.
Para conseguir que POSIX awkadmita una instalación portátil en una instalación de "servidor pequeño" de este tipo, debe instalar el xcu4paquete y configurar su RUTA en el que cumple con POSIX:
pkg install xcu4
PATH=$(getconf PATH):$PATH
Si por alguna razón no desea instalar ese paquete, una solución alternativa es usar un "personalizado" que PATHcontenga nawkcomo awk, por ejemplo:
mkdir -p /opt/posix/bin
cp /usr/bin/nawk /opt/posix/bin/awk
PATH=/opt/posix/bin:$PATH
Alternativamente, puede instalarlo GNU awky configurarlo PATHpara obtenerlo primero:
pkg install gawk
PATH=/usr/gnu/bin:$PATH
Tenga en cuenta que esto no es específico de Solaris 11. Ya existía una agrupación de paquetes similar en Solaris 10 y anteriores, y las utilidades compatibles con POSIX solo se instalaron en los metaclusters "Usuario final", "Desarrollador" y "Instalación completa". Tener un sistema o una zona instalados con el metacluster "Core" o "Networking support" habría llevado al mismo xpg4problema que falta.
Tenga en cuenta también que la falta de /usr/xpg4/bin/awkun sistema Solaris 11 no es una falla de cumplimiento POSIX. Solo se utilizan instalaciones completas de Solaris en la gran mayoría de las pruebas realizadas por Oracle e ISV, incluido el programa de certificación Open Group . Las instalaciones reducidas son compatibles pero no están calificadas .
Si distribuye scripts de shell (o aplicaciones que incorporan scripts de shell / invocando comandos de shell) para Solaris 11, solo necesita definirlo /system/xopen/xcu4como una dependencia en su paquete IPS y el instalador hará automáticamente lo que se requiere para que el script funcione correctamente:
depend fmri=pkg:/system/xopen/xcu4 type=require
Ver https://docs.oracle.com/cd/E53394_01/html/E54820/dependtypes.html
/usr/xpg4/bin/awkno está en Solaris 11?nawkes "nuevoawk", un AT&T mejoradoawk.