W przypadku pełnej lub stacjonarnej instalacji Solaris 11 dostępne są trzy awk
implementacje plus niektóre warianty:
/ 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 pkg: /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
Wszystkie są „zgodne ze standardami”, choć są zgodne z różnymi standardami.
/usr/bin/awk
jest zgodny ze starszą awk
implementacją UNIX wydaną w 1977 r. Jest przechowywany jako pierwszy w domyślnym systemie PATH, aby nie łamać istniejących skryptów, ponieważ kolejne awk
wydania przerywają kompatybilność. oawk
jest synonimemawk
/usr/bin/nawk
jest „nową” wersją awk
, po raz pierwszy dostarczoną w SVR3.1 w 1986 roku. Awk
Standard POSIX został oparty na tej implementacji. /usr/xpg4/bin/awk
jest prawie identyczny z pierwszym, ale ten jest formalnie sprawdzany pod kątem testów sprawdzania zgodności z POSIX.
/usr/gnu/bin/awk
, /usr/bin/gawk
jest również wariant GNU awk
. Ma na celu zachowanie zgodności z większością lub wszystkimi standardami POSIX, gdy zmienna środowiskowa POSIXLY_CORRECT
jest ustawiona w środowisku lub gdy jest wywoływana z -W posix
opcją, ale poza tym dodaje wiele specyficznych własnych rozszerzeń. igawk
i pgawk
same są rozszerzeniami gawk
, pierwszy obsługuje pliki, a drugi obsługuje profilowanie.
Zobacz także rozdział historii GNU,awk
aby uzyskać wiele przydatnych informacji.
core-os
Gwarantowane jest, że tylko pakiety będą obecne podczas regularnej instalacji Solaris 11, więc tylko oawk/awk
i nawk
tam są. W szczególności, gdy tworzysz nową strefę nieglobalną , domyślnie zawiera ona solaris-small-server
pakiet grupowy, więc xpg4
ani gnu
awk
binaria, ani binaria nie są dostępne. To jest z założenia. solaris-small-server
Grupa jest minimalny punkt startowy, do którego dodać wymagane pakiety dla aplikacji, aby działać poprawnie. Jest to bardziej bezpieczne i wydajne niż poprzedni (Solaris 10) sposób, w którym wszystko zainstalowane w strefie globalnej było również instalowane w strefie innej niż globalna, więc trzeba było usunąć nieużywane pakiety, aby zminimalizować strefę.
Aby uzyskać awk
wsparcie dla POSIX w sposób przenośny w takiej instalacji „małego serwera”, musisz zainstalować xcu4
pakiet i ustawić ŚCIEŻKĘ na zgodną z POSIX:
pkg install xcu4
PATH=$(getconf PATH):$PATH
Czy należy z jakiegoś powodu nie chcesz, aby zainstalować ten pakiet, obejście tego problemu jest użycie „Custom” PATH
, zawierający nawk
jako awk
, na przykład:
mkdir -p /opt/posix/bin
cp /usr/bin/nawk /opt/posix/bin/awk
PATH=/opt/posix/bin:$PATH
Alternatywnie możesz zainstalować GNU awk
i ustawić, PATH
aby najpierw:
pkg install gawk
PATH=/usr/gnu/bin:$PATH
Pamiętaj, że nie dotyczy to Solaris 11. Podobna grupa pakietów istniała już w systemie Solaris 10 i wcześniejszych, a narzędzia zgodne z POSIX zostały zainstalowane tylko w metaklasach „Użytkownik końcowy”, „Deweloper” i „Pełna instalacja”. Zainstalowanie systemu lub strefy z metaklastrem „Core” lub „Networking support” doprowadziłoby do tego samego xpg4
brakującego problemu.
Należy również zauważyć, że brak /usr/xpg4/bin/awk
w systemie Solaris 11 nie oznacza błędu zgodności z POSIX. Tylko pełne instalacje Solaris są używane w zdecydowanej większości testów przeprowadzanych przez Oracle i niezależnych dostawców oprogramowania, w tym program certyfikacji Open Group . Zredukowane instalacje są obsługiwane, ale nie kwalifikują się .
Jeśli rozpowszechniasz skrypty powłoki (lub aplikacje osadzające skrypty powłoki / wywołujące polecenia powłoki) dla Solaris 11, wystarczy zdefiniować /system/xopen/xcu4
zależność w pakiecie IPS , a instalator automatycznie zrobi to, co jest wymagane do poprawnego działania skryptu:
depend fmri=pkg:/system/xopen/xcu4 type=require
Zobacz https://docs.oracle.com/cd/E53394_01/html/E54820/dependtypes.html
/usr/xpg4/bin/awk
nie ma w Solaris 11?nawk
jest „nowyawk
”, ulepszony AT&Tawk
.