gawk
Ten załącznik zawiera instrukcje dotyczące instalacji gawk na różnych
platformach wspieranych przez programistów. Główni twórcy tworzą wersję
pracującą w Uniksie (i pewnego dnia, GNU), choć gawk przeniesiono
też na inne platformy. Plik `ACKNOWLEDGMENT' w pakiecie dystrybucyjnym
gawk wymienia adresy poczty elektronicznej ludzi, którzy zrobili
odpowiednie przeniesienia (porty) programu, podano je też
w B.7. Zgłaszanie problemów i błędów.
gawk
W tej sekcji opisano najpierw jak zdobyć pakiet dystrybucyjny gawk,
jak go zdekompresować, i co jest w rozmaitych plikach i podkatalogach.
gawkOprogramowanie GNU można pozyskać na trzy sposoby.
gawk bezpośrednio z Free Software Foundation.
Dostępne są pakiety dystrybucyjne do użytku w Uniksie, MS-DOS i VMS,
na taśmie i CD-ROM. Adres Fundacji:
Zamawianie bezpośrednio z FSF wspiera fundację i jest wkładem w dalsze tworzenie wolnego oprogramowania.Free Software Foundation
59 Temple Place--Suite 330
Boston, MA 02111-1307 USA
Phone: +1-617-542-5942
Fax (including Japan): +1-617-542-2652
Email:gnu@gnu.org
URL:http://www.gnu.org/
gawk za pomocą anonimowego ftp z serwera internetowego
gnudist.gnu.org, z katalogu `/gnu/gawk'.
Podajemy listę alternatywnych ośrodków ftp, skąd można uzyskać
oprogramowanie GNU. Gdy ośrodek wykazano jako
"miejsce:katalog", to katalog wskazuje na
katalog, gdzie przechowywane jest oprogramowanie GNU. Powinno się korzystać
z miejsca bliskiego geograficznie.
cair-archive.kaist.ac.kr:/pub/gnu
ftp.cs.titech.ac.jp
ftp.nectec.or.th:/pub/mirrors/gnu
utsun.s.u-tokyo.ac.jp:/ftpsync/prep
archie.au:/gnu
archie.oz lub archie.oz.au dla ACSnet)
ftp.sun.ac.za:/pub/gnu
ftp.technion.ac.il:/pub/unsupported/gnu
archive.eu.net
ftp.denet.dk
ftp.eunet.ch
ftp.funet.fi:/pub/gnu
ftp.ieunet.ie:pub/gnu
ftp.informatik.rwth-aachen.de:/pub/gnu
ftp.informatik.tu-muenchen.de
ftp.luth.se:/pub/unix/gnu
ftp.mcc.ac.uk
ftp.stacken.kth.se
ftp.sunet.se:/pub/gnu
ftp.univ-lyon1.fr:pub/gnu
ftp.win.tue.nl:/pub/gnu
irisa.irisa.fr:/pub/gnu
isy.liu.se
nic.switch.ch:/mirror/gnu
src.doc.ic.ac.uk:/gnu
unix.hensa.ac.uk:/pub/uunet/systems/gnu
ftp.task.gda.pl:/pub/gnu
ftp.icm.edu.pl:/pub/gnu
ftp.man.torun.pl:/pub/gnu
ftp.inf.utfsm.cl:/pub/gnu
ftp.unicamp.br:/pub/gnu
ftp.cs.ubc.ca:/mirror2/gnu
col.hp.com:/mirrors/gnu
f.ms.uky.edu:/pub3/gnu
ftp.cc.gatech.edu:/pub/gnu
ftp.cs.columbia.edu:/archives/gnu/prep
ftp.digex.net:/pub/gnu
ftp.hawaii.edu:/mirrors/gnu
ftp.kpc.com:/pub/mirror/gnu
ftp.uu.net:/systems/gnu
gatekeeper.dec.com:/pub/GNU
jaguar.utah.edu:/gnustuff
labrea.stanford.edu
mrcnext.cso.uiuc.edu:/pub/gnu
vixen.cso.uiuc.edu:/gnu
wuarchive.wustl.edu:/systems/gnu
gawk rozpowszechniany jest jako plik tar skompresowany
programem GNU Zip, gzip.
Po uzyskaniu pakietu dystrybucyjnego (na przykład,
`gawk-3.0.6.tar.gz'), najpierw
korzystamy z gzip do zdekompresowania pliku, a następnie z tar
do rozpakowania archiwum. Do utworzenia dystrybucji gawk można
użyć poniższego potoku:
# w System V, dodaj 'o' do flag programu tar gzip -d -c gawk-3.0.6.tar.gz | tar -xvpf -
Utworzy to w bieżącym katalogu katalog o nazwie `gawk-3.0.6'.
Nazwa pliku pakietu dystrybucyjnego ma postać
`gawk-V.R.n.tar.gz'.
V wskazuje główną wersję gawk, R jest bieżącym
wydaniem wersji V, a n poziomem poprawek (patch level),
oznaczającym, że w tym wydaniu poprawiono pomniejsze błędy.
Aktualny poziom poprawek wynosi 6, ale przy pobieraniu
pakietów dystrybucyjnych powinno się brać wersję o najwyższych numerach
wersji, wydania i poziomu poprawek. (Warto zapamiętać, że poziomy wydania
większe lub równe 90 oznaczają oprogramowanie "beta", nie przeznaczone do
pracy. Zwykle nie chcemy pobierać takiej wersję, chyba że nie przeszkadza
nam eksperymentowanie.)
W systemach innych niż uniksowe potrzebne będą odmienne rozwiązania
pozyskiwania i rozpakowywania pakietu dystrybucyjnego gawk.
Należy skontaktować się z miejscowym ekspertem.
gawk
Dystrybucja gawk zawiera wiele plików źródłowych w C, pliki
dokumentacji, podkatalogi i pliki związane z procesem konfiguracji
(zob. B.2. Kompilowanie i instalowanie gawk na Uniksie),
oraz kilka podkatalogów związanych z różnymi, nieuniksowymi, systemami
operacyjnymi.
gawk.
gawk w Uniksie,
a reszta do rozmaitych kombinacji sprzętowo-programowych.
gawk, i które pomyślnie
przeszły przez zestaw testów.
gawk od ostatniego wydania czy poprawki.
gawk.
Większość z nich zależy od sprzętu lub oprogramowania systemowego,
a nie jest ograniczeniami w samym gawk.
awk jest
niepoprawny, i sposobu, w jaki gawk radzi sobie z tym problemem.
gawk jest dobrym językiem do
programowania AI (Artificial Intelligence, sztucznej inteligencji) .
troff pięciokolorowej karty informacyjnej awk.
Do utworzenia wersji kolorowej potrzebna jest nowoczesna wersja
troff, jak np. GNU Troff (groff). W pliku `README.card'
zamieszczono instrukcje dla posiadaczy starszych wersji troff.
troff podręcznika systemowego man opisującego gawk.
Rozpowszechniane dla wygody użytkowników Uniksa.
makeinfo.
troff podręcznika systemowego man opisującego program
igawk przedstawiony w
16.2.9. Łatwa metoda korzystania z funkcji bibliotecznych.
gawk
w rozmaitych systemach uniksowych. Objaśniono je szczegółowo w
B.2. Kompilowanie i instalowanie gawk na Uniksie.
configure do wygenerowania `Makefile'.
Częścią procesu tworzenia gawk jest wydzielenie funkcji
bibliotecznych z
15. Biblioteczka funkcji awk, i programu
igawk
z 16.2.9. Łatwa metoda korzystania z funkcji bibliotecznych
do postaci gotowych do użytku plików.
Są one instalowane jako część procesu instalacji.
gawk na Atari ST.
Zob. B.5. Instalowanie gawk na Atari ST,
gdzie opisano szczegóły.
gawk na MS-DOS i OS/2.
Zob. B.4. Instalacja i kompilacja na MS-DOS i OS/2,
gdzie opisano szczegóły.
gawk VMS.
Zob. B.3. Jak skompilować i zainstalować gawk na VMS,
gdzie opisano szczegóły.
gawk. Do uruchomienia danej wersji gawk
z tym zestawem należy zastosować `make check' w katalogu gawk
najwyższego poziomu. Jeżeli gawk pomyślnie przejdzie
`make check', to można być pewnym pomyślnego przeniesienia go na daną
platformę.
gawk na Uniksie
Zazwyczaj kompiluje się i instaluje gawk wpisując tylko dwa
polecenia. Jednak, w przypadku nietypowych systemów, może zachodzić
potrzeba samodzielnej konfiguracji gawk.
gawk dla Uniksa
Po rozpakowaniu pakietu dystrybucyjnego gawk należy przez
cd zmienić katalog na `gawk-3.0.6'.
Jak większość programów GNU, gawk automatycznie konfiguruje się
do pracy w systemie uniksowym przez uruchomienie programu configure.
Program ten jest skryptem powłoki Bourne'a utworzonym automatycznie za pomocą
GNU autoconf.
(Oprogramowanie autoconf opisano szczegółowo w
Autoconf--Generating Automatic Configuration Scripts,
dostępnym z Free Software Foundation.)
W celu skonfigurowania gawk należy po prostu uruchomić
configure:
sh ./configure
Tworzy to pliki `Makefile' i `config.h' dostosowane do naszego
systemu. `config.h' zawiera opis rozmaitych faktów dotyczących systemu.
W pliku `Makefile' można zmodyfikować zmienną CFLAGS, która
steruje opcjami wiersza poleceń przekazywanych do kompilatora C (takimi jak
poziomy optymalizacji, czy kompilacja do celów debugowania).
Alternatywnie, można dołożyć własne wartości większości zmiennych
make, jak CC i CFLAGS, w wierszu poleceń przy
uruchamianiu configure:
CC=cc CFLAGS=-g sh ./configure
W pliku `INSTALL' dystrybucji gawk podano szczegóły.
Po uruchomieniu configure i ewentualnym zmodyfikowaniu
`Makefile', wpisujemy:
make
i wkrótce potem powinniśmy mieć wykonywalną wersję gawk.
To wszystko, co trzeba zrobić!
(Jeżeli te kroki zawiodą, proszę przesłać zgłoszenie błędu;
zob. B.7. Zgłaszanie problemów i błędów.)
(Ta sekcja adresowana jest tylko do osób, które wiedzą coś o posługiwaniu się językiem C i systemem operacyjnym Unix.)
Kod źródłowy gawk zasadniczo usiłuje przystawać do standardów
formalnych gdzie tylko jest to możliwe. Znaczy to, że gawk
wykorzystuje podprogramy biblioteczne wyszczególnione w standardzie ANSI C
i POSIX-owym standardzie interfejsu systemu operacyjnego.
Przy używaniu kompilatora ANSI C do usprawnienia kontroli podczas kompilacji
wykorzystywane są prototypy funkcji.
Wiele systemów uniksowych nie obsługuje wszystkich standardów ANSI czy POSIX.
Podkatalog `missing' w dystrybucji gawk zawiera zastępniki tych
podprogramów, których najprawdopodobniej brakuje.
Plik `config.h', tworzony przez program configure, zawiera
definicje opisujące cechy konkretnego systemu operacyjnego, na którym
usiłujemy skompilować gawk. Plik ten opisuje trzy rzeczy: jakie
pliki nagłówkowe są dostępne, by można je poprawnie dołączyć, jakich
funkcji standardowych można się spodziewać, że są faktycznie dostępne
w naszych bibliotekach C, i różne inne fakty dotyczące naszego wariantu
Uniksa. Na przykład, w strukturze stat może nie być elementu
st_blksize. W tym przypadku `HAVE_ST_BLKSIZE' będzie
niezdefiniowane.
Możliwe, że nasz kompilator C okłamie configure. Może to zrobić
nie kończąc pracy z błędem gdy nie jest dostępna funkcja biblioteczna.
Można to obejść modyfikując plik `custom.h'. Należy użyć odpowiedniego
do swojego systemu `#ifdef' i zastosować albo #define albo
#undef w stosunku do stałych, które źle zdefiniował program
configure. `custom.h' jest automatycznie dołączany przez
`config.h'.
Może się też zdarzyć, że configure utworzony przez autoconf
w jakiś inny sposób nie będzie działać w danym systemie.
Jeżeli pojawią się kłopoty, plik `configure.in' jest wejściem dla
autoconf. Można zmienić ten plik i utworzyć nową wersję
configure, która zadziała.
Zob. B.7. Zgłaszanie problemów i błędów, gdzie opisano jak zgłaszać
problemy z konfigurowaniem gawk. Tego samego rozwiązania można
użyć do wysłania aktualizacji `configure.in' i/lub `custom.h'.
gawk na VMS
Ta sekcja opisuje jak skompilować i zainstalować gawk na VMS.
gawk na VMS
Do kompilacji gawk na VMS mamy procedurę poleceń DCL, która
wydaje wszystkie niezbędne polecenia CC i LINK, jest też
`Makefile' do wykorzystania przez narzędzie MMS.
W katalogu źródłowym należy użyć
$ @[.VMS]VMSBUILD.COM
lub
$ MMS/DESCRIPTION=[.VMS]DESCRIP.MMS GAWK
W zależności od wykorzystywanego kompilatora C, należy działać według jednej z podanych w tabeli instrukcji postępowania:
CC/OPTIMIZE=NOLINE, co jest kluczowe przy Version 3.0.
gawk był testowany z VAX/VMS 5.5-1 przy zastosowaniu VAX C V3.2,
GNU C 1.40 i 2.3. Powinien działać bez zmian na VMS V4.6 i wyższych.
gawk na VMS
Do instalacji gawk wystarczy jedynie polecenie "foreign", będące
symbolem DCL, którego wartość zaczyna się od znaku dolara.
Na przykład:
$ GAWK :== $disk1:[gnubin]GAWK
(Za `$disk1:[gnubin]' należy podstawić faktyczne położenie
gawk.exe.) Symbol ten powinien zostać umieszczony w `login.com'
każdego użytkownika, który będzie chciał uruchamiać gawk,
tak by był zdefiniowany za każdym razem, gdy użytkownik się loguje.
Alternatywnie, można umieścić go w ogólnosystemowej procedurze
`sylogin.com', co pozwoli na uruchamianie gawk wszystkim
użytkownikom.
Opcjonalnie do biblioteki pomocy VMS można załadować wpis pomocy:
$ LIBRARY/HELP SYS$HELP:HELPLIB [.VMS]GAWK.HLP
(Można zastąpić standardową bibliotekę VMS `HELPLIB' lokalną, specyficzną dla maszyny biblioteką pomocy.) Po załadowaniu, tekst pomocy,
$ HELP GAWK
poda informacje o implementacji gawk i o języku programowania
awk.
Domyślne położenie plików programów awk może być oznaczone nazwą
logiczną `AWK_LIBRARY'. Przy opcji `-f', jeśli podana nazwa pliku
nie zawiera informacji o urządzeniu ani ścieżce, gawk będzie szukał
najpierw w bieżącym katalogu, a następnie, jeśli nie znaleziono pliku,
w katalogu wyszczególnionym przez translację `AWK_LIBRARY'.
Jeżeli po przeglądnięciu obu katalogów pliku nadal nie znaleziono, to
gawk do nazwy pliku dodaje przyrostek `.awk' i ponawia próbę
szukania. Jeżeli nie zdefiniowano `AWK_LIBRARY', to ta część
poszukiwania pliku łagodnie zawiedzie.
gawk na VMS
Na VMS analiza składniowa wiersza poleceń i konwencje cytowania są znacząco
odmienne, więc przykłady z tej książki czy innych źródeł często wymagają
zmian. Zmiany są jednak drobne, a wszystkie programy awk
powinny działać poprawnie.
Parę prostych testów:
$ gawk -- "BEGIN {print ""Hello, World!""}"
$ gawk -"W" version
! mogłoby też być -"W version" czy "-W version"
Należy zwrócić uwagę, że tekst pisany dużymi literami (lub mieszanymi) musi być cytowany.
Oprócz oryginalnego interfejsu w stylu powłoki, gawk przeniesiony na
VMS zawiera interfejs w stylu DCL (szczegóły znajdują się
w odpowiedniej pozycji pomocy). Jednym ze skutków ubocznych podwójnej
analizy składni wiersza poleceń jest to, że jeśli wystąpi tylko jeden
parametr (jak w programie podanym jako cytowany łańcuch powyżej), to
polecenie staje się niejednoznaczne. W celu obejścia tego problemu,
normalnie opcjonalna flaga `--' jest wymagana do wymuszenia stylu
uniksowego zamiast składni DCL. Jeżeli występują jakieś inne opcje
rozpoczynające się kreską (albo podano więcej parametrów, np. takich jak
pliki do przetworzenia), to nie ma niejednoznaczności i można pominąć
`--'.
Domyślną ścieżką wyszukiwania przy szukaniu plików programów awk
podanych opcją `-f' jest "SYS$DISK:[],AWK_LIBRARY:".
Wartość tę przesłania się wykorzystując zmienną logiczną `AWKPATH'.
Formatem `AWKPATH' jest separowana przecinkami lista specyfikacji
katalogów. Przy jej definiowaniu wartość należy zacytować, tak by
przechowała pojedynczą translację, a nie wielotranslacyjną listę
wyszukiwania RMS.
gawk na VMS POSIXNależy zignorować podane wyżej instrukcje, choć nadal w bibliotece pomocy powinien zostać udostępniony `vms/gawk.hlp'. Drzewo źródłowe należy rozpakować raczej do podsystemu kontenera plików zamiast do zwykłego systemu plików VMS. Powinniśmy się upewnić, że skrypty `configure' i `vms/posix-cc.sh' są wykonywalne. Jeśli trzeba, stosujemy w stosunku do nich `chmod +x'. Następnie uruchamiamy poniższe dwa polecenia:
psx> CC=vms/posix-cc.sh configure psx> make CC=c89 gawk
Pierwsze polecenie, posługując się skryptem, aby kompilator C spełnił
oczekiwania configure, zbuduje z szablonów pliki `config.h'
i `Makefile'. Drugie polecenie skompiluje i skonsoliduje gawk
bezpośrednio za pomocą kompilatora C. Ostrzeżenia ze strony make
o niemożności ponownego zdefiniowania CC należy zignorować.
configure będzie się wykonywać bardzo długo, ale przynajmniej podaje
w czasie pracy informacje kontrolne o postępach.
Przetestowano z VAX/VMS V6.2, VMS POSIX V2.0 i DEC C V5.2.
Po zbudowaniu, gawk działa jak każde inne narzędzie powłoki.
W środowisku POSIX VMS, w przeciwieństwie do gawk przeniesionego
na zwykły VMS, nie jest potrzebne żadne specjalne operowanie wierszem
poleceń.
Jeśli uzyskaliśmy dystrybucje binarną przygotowaną przez prowadzących wersję
dla DOS, to gawk i niezbędne pliki
pomocnicze pojawią się wewnątrz katalogu `gnu': pliki wykonywalne w
`gnu/bin', biblioteki w `gnu/lib/awk', a strony podręcznika
systemowego w `gnu/man'. Dystrybucję zaprojektowano do łatwej
instalacji w katalogu `/gnu' danego napędu, ale pliki można
zainstalować gdziekolwiek, o ile poprawnie zostanie ustalona wartość
AWKPATH. Bez względu na katalog instalacji może wymagać poprawienia
pierwszy wiersz `igawk.cmd' i `igawk.bat' (w `gnu/bin').
Dystrybucja binarna będzie zawierała osobny plik opisujący jej zawartość.
W szczególności, może zawierać więcej niż jedną wersję wykonywalnego
gawk. Pakiety dystrybucyjne do OS/2 mogą mieć inny układ, lecz
instalacja jest podobna.
Wersje gawk przeznaczone do pracy w OS/2 i MS-DOS szukają plików
programów tak, jak to opisano w 14.3. Zmienna środowiska AWKPATH. Jednak elementy w zmiennej AWKPATH oddzielane są
średnikami (zamiast dwukropkami). Jeżeli nie zdefiniowano zmiennej
AWKPATH lub jest ona pusta, to domyślną ścieżką wyszukiwania jest
".;c:/lib/awk;c:/gnu/lib/awk".
Przy programowaniu w awk przydatna może być powłoka podobna do
sh (w przeciwieństwie do command.com w MS-DOS
lub cmd.exe w OS/2). Ian Stewartson napisał doskonałą powłokę
pracującą w MS-DOS i OS/2, a do OS/2 dostępne są klon ksh i GNU Bash.
Informacje o tych powłokach zawiera plik `README_d/README.pc'
w pakiecie dystrybucyjnym gawk. Użytkownicy powłoki Stewartsona
w DOS-ie powinni sprawdzić w dokumentacji obsługę wierszy poleceń.
W szczególności, może być potrzebna zmiana ustawień dla gawk
w konfiguracji powłoki. Istotna może też być opcja ignoretype.
gawk można skompilować do pracy w MS-DOS i OS/2 za pomocą narzędzi
konstrukcyjnych GNU od DJ Deloriego (DJGPP, tylko MS-DOS) lub
Eberharda Mattesa (EMX, MS-DOS i OS/2). Do utworzenia 16-bitowych wersji
do MS-DOS i OS/2 można użyć Microsoft C. Dodatkowe uwagi zawiera plik
`README_d/README.pc' w dystrybucji gawk.
`pc/Makefile' zaś zawiera istotne uwagi dotyczące opcji kompilacji.
W celu utworzenia gawk należy skopiować pliki z katalogu `pc'
(oprócz pliku `ChangeLog') do katalogu, w którym umieszczono
resztę źródeł gawk. `Makefile' zawiera sekcje konfiguracyjne
z komentarzami; by zadziałał z użytym narzędziem make może być
konieczna jego modyfikacja.
`Makefile' zawiera kilka celów (targets) do budowy rozmaitych wersji
pracujących w MS-DOS i OS/2. Lista celów zostanie wypisana po wydaniu
polecenia make bez podania celu. Na przykład, by utworzyć
gawk za pomocą narzędzi DJGPP należy wprowadzić `make djgpp'.
Stosowanie make do uruchamiania standardowych testów i instalacji
gawk wymaga dodatkowych uniksopodobnych narzędzi, łącznie
z sh, sed i cp. Do uruchomienia testów może być
konieczna konwersja plików `test/*.ok', tak by miały zwyczajowe
znaczniki końca linii w stylu DOS. Większość testów będzie działać
poprawnie z powłoką Stewartsona z dodatkowymi narzędziami czy odpowiednimi
narzędziami GNU. Wymagane jest jednak nieco zmian w `test/Makefile'.
Zaleca się skopiowanie pliku `pc/Makefile.tst' na `test/Makefile',
jako zastępnik. Szczegóły można znaleźć w `README_d/README.pc'.
gawk na Atari ST
Nie ma istotnych różnic przy instalacji gawk na rozmaitych modelach
Atari. Skompilowane pliki wykonywalne gawk przy większości programów
awk nie wymagają dużych ilości pamięci i powinny działać na
wszystkich modelach opartych o procesory Motoroli (nazywanych dalej ST,
nawet jeśli nie jest to całkiem poprawne).
Chcąc korzystać z gawk musimy posiadać powłokę, tekstową lub
graficzną, która nie przekształca wszystkich znaków wiersza poleceń na duże.
Obsługa rozróżniania dużych i małych liter we flagach opcji jest bardzo
ważna (zob. 14.1. Opcje wiersza poleceń).
Obecnie jest to zachowanie domyślne, a problemy mogą wystąpić tylko przy
niektórych bardzo starych komputerach. Jeżeli system nie zachowuje
wielkości liter flag, trzeba będzie zaktualizować narzędzia. Do łatwego
importowania programów awk z innych środowisk konieczna jest
obsługa przekierowań wejścia/wyjścia. Miło jest mieć potoki, ale nie jest
to kluczowe.
gawk na Atari ST
Gdy sizeof(int) różni się od sizeof(void *) do poprawnej
kompilacji gawk wymagany jest kompilator ANSI C. Początkowe
przeniesienie programu wykonano za pomocą gcc. Niektórzy wolą
pliki wykonywalne, w których wartości int mają cztery bajty, ale
alternatywny wariant też działa.
Podczas próby rekompilacji źródeł gawk może być potrzebne sporo
pamięci, gdyż niektóre pliki źródłowe (szczególnie `regex.c') są dość
duże. Jeżeli przy kompilacji takiego pliku zabraknie pamięci, należy
spróbować zmniejszyć poziom optymalizacji tego konkretnego pliku.
Może pomóc.
Z rozsądną powłoką (może być Bash), a w szczególności jeżeli pracujemy
na Linuksie, MiNT czy podobnym systemie operacyjnym, mamy całkiem niezłe
szanse na to, że narzędzie configure zadziała bezbłędnie.
Na wypadek, gdyby było inaczej, w podkatalogu `atari' umieszczono
przykładowe wersje `config.h' i `Makefile.st'. Można je
zmodyfikować i skopiować na odpowiednie pliki w głównym katalogu
ze źródłami. Nawet jeśli configure coś utworzył, warto porównać
jego wyniki z wersjami przykładowymi i ewentualnie dokonać korekt.
Niektóre fragmenty kodu źródłowego gawk zależą od zdefiniowania
przez preprocesor `atarist'. Najprościej mówiąc, zakładają
środowisko TOS z gcc. Jeżeli nie odpowiada to danemu środowisku,
należy zmienić odnośne sekcje stosownie do potrzeb. Zobacz także uwagi na
temat AWKPATH i envsep w B.5.2. Uruchamianie gawk na Atari ST.
Dostarczony, przykładowy `config.h' twierdzi, że w bibliotekach brakuje
funkcji system, co nie jest prawdą, a alternatywna jej implementacja
zapewniona jest w `atari/system.c'. W zależności od własnej konkretnej
kombinacji powłoki i systemu operacyjnego, można zmienić ten plik, tak by
wskazywał, że funkcja system jest dostępna.
gawk na Atari ST
Wykonywalna wersja gawk powinna być umieszczona, jak zwykle,
gdziekolwiek w ścieżce wyszukiwania PATH, gdzie może ją znaleźć
nasza powłoka.
Podczas wykonywania gawk tworzy wiele plików tymczasowych.
gawk przy korzystaniu z bibliotek gcc do TOS szuka zmiennej
środowiska albo TEMP albo TMPDIR, w tej kolejności.
Jeżeli znaleziono którąś z nich, to zakłada się, że jej wartość jest
katalogiem na pliki tymczasowe. Katalog ten musi istnieć, a jeżeli możliwe
jest poświęcenie pamięci, dobrze jest umieścić go na napędzie RAM. Jeżeli
nie znaleziono ani TEMP ani TMPDIR, to do przechowywania
plików tymczasowych gawk wykorzystuje katalog bieżący.
Wersja gawk przeznaczona dla ST szuka swoich plików programów jak
opisano w
14.3. Zmienna środowiska AWKPATH. Domyślna wartość
zmiennej AWKPATH pobierana jest z DEFPATH zdefiniowanej
w `Makefile'. Przykładowy, przeznaczony do pracy z gcc/TOS, plik
`Makefile' dla ST w zestawie dystrybucyjnym nadaje DEFPATH
wartość ".,c:\lib\awk,c:\gnu\lib\awk". Ścieżkę wyszukiwania
zmienia się jawnie nadając AWKPATH żądaną wartość. Zauważ, że na
ST do oddzielania elementów w zmiennej AWKPATH nie można użyć
dwukropków, gdyż mają one inne, zastrzeżone znaczenia. Do rozdzielenia
elementów ścieżki należy zamiast tego użyć przecinka. Przy rekompilacji
znak rozdzielający można zmienić inicjując inną wartością zmienną
envsep w `atari/gawkmisc.atr'.
Chociaż awk zezwala na dużą elastyczność przy dokonywaniu
przekierowań wejścia/wyjścia z programu, cecha ta na ST pracującej pod
kontrolą TOS powinna być wykorzystywana z rozwagą. W pewnych okolicznościach
procedury systemu operacyjnego do przetwarzania kolejki uchwytów plików
tracą ślady niektórych zdarzeń, co powoduje pad komputera i wymaga
ponownego uruchomienia systemu. Często wystarcza gorący restart.
Na szczęście, zdarza się to rzadko, i raczej w bardzo tajemniczych
sytuacjach. W szczególności, powinno się unikać rozwiązań, w których
jakaś część programu awk stosuje instrukcje print jawnie
przekierowane do "/dev/stdout", podczas gdy inne instrukcje
print używają domyślnego standardowego wyjścia, a wywołująca powłoka
przekierowała standardowe wyjście do pliku.
Gdy gawk skompilowany jest za pomocą gcc w wersji ST i jego
zwykłych bibliotek, przyjmuje jako separatory ścieżki zarówno `/',
jak i `\'. Mimo że jest to wygodne, należy pamiętać, że odbiera jeden,
poprawny z technicznego punktu widzenia, znak (`/') z nazw plików.
Może to powodować kłopoty z programami zewnętrznymi, wywoływanymi za
pośrednictwem funkcji system, które mogą nie przestrzegać tej
konwencji. Każdorazowo, gdy istnieje możliwość, że plik stworzony przez
gawk będzie wykorzystywany przez inne programy, należy w jego nazwie
używać tylko odwrotnych ukośników. Powinno się też pamiętać, że w awk
odwrotne ukośniki w łańcuchach muszą być podwojone, jeśli chcemy uzyskać
dosłowne odwrotne ukośniki (zob. 4.2. Sekwencje specjalne).
gawk na Amidze
Na systemie Amiga można zainstalować gawk korzystając z emulacji
środowiska Uniksa dostępnej poprzez anonimowe ftp
z ftp.ninemoons.com w katalogu `pub/ade/current'.
Zawiera ono powłokę opartą na pdksh. Główną składową tego środowiska
jest biblioteka emulacji Uniksa, `ixemul.lib'.
Bardziej kompletna dystrybucja przeznaczona na Amigę dostępna jest na Geek Gadgets CD-ROM z:
CRONUS
1840 E. Warner Road #105-265
Tempe, AZ 85284 USA
US Toll Free: (800) 804-0833
Phone: +1-602-491-0442
FAX: +1-602-491-0048
Email:info@ninemoons.com
WWW:http://www.ninemoons.com
Anonymousftpsite:ftp.ninemoons.com
Po uzyskaniu dystrybucji, konfigurujemy gawk po prostu uruchamiając
configure:
configure -v m68k-amigaos
Następnie uruchamiamy make i powinniśmy mieć wszystko ustawione!
(Jeśli te kroki nie zadziałają, proszę wysłać zgłoszenie błędu
zob. B.7. Zgłaszanie problemów i błędów.)
Nie ma nic bardziej niebezpiecznego niż znudzony archeolog. Autostopem przez Galaktykę
Jeśli masz kłopoty z gawk albo sądzisz, że znalazłeś błąd,
zgłoś, proszę, twórcom. Nie możemy obiecać, że cokolwiek zrobimy, ale może
będziemy chcieli go poprawić.
Przed zgłoszeniem błędu, upewnij się, że faktycznie znalazłeś prawdziwy błąd. Uważnie przeczytaj ponownie dokumentację i sprawdź, czy rzeczywiście mówi, że możesz zrobić to, co usiłujesz. Jeżeli nie jest jasne, czy powinieneś móc coś zrobić, czy nie, zgłoś to także -- jest to błąd w dokumentacji!
Przed zgłoszeniem błędu lub próbą samodzielnego poprawienia go, spróbuj go
wyodrębnić do najmniejszego możliwego programu awk i pliku danych
wejściowych, które powielają problem. Następnie wyślij nam pliki programu
i danych, jakieś pojęcie o rodzaju systemu uniksowego, którego używasz,
i dokładne rezultaty, jakie dał gawk. Powiedz też, czego się
spodziewałeś: pomaga to rozstrzygnąć, czy problem nie leżał rzeczywiście
w dokumentacji.
Gdy problem jest już sprecyzowany, prześlij e-mail w języku angielskim do bug-gawk@gnu.org.
Dołącz, proszę, numer używanej wersji gawk. Informację tę można
uzyskać poleceniem `gawk --version'. Skorzystanie z wyżej podanego
adresu automatycznie wyśle kopię twojej wiadomości do Arnolda Robbinsa.
Jeśli jest to konieczne, jest on też osiągalny wprost
pod adresem arnold@gnu.org.
Ważne! Proszę nie wysyłać listów ze zgłoszeniami błędów
w gawk na grupę dyskusyjną comp.lang.awk.
Mimo że twórcy gawk czasami czytają tę grupę, nie ma żadnej pewności,
że zobaczą twój list. Kroki opisane wyżej są oficjalną, uznaną metodą
zgłaszania błędów.
Zawsze mile widziane są też sugestie nie związane z błędami. Jeśli masz pytania dotyczące niejasności w dokumentacji czy niezrozumiałych cech, zapytaj Arnolda Robbinsa. Spróbuje ci pomóc, choć może nie mieć czasu, by rozwiązać problem. Możesz wysłać mu list elektroniczny na adres internetowy podany powyżej.
Jeżeli napotkasz błąd w jednym z nie-uniksowych gawk, wyślij proszę
wiadomość pocztą elektroniczną do osoby zajmującej się przeniesieniem
gawk na tę platformę. Wymieniono je niżej, a także w pliku
`README' pakietu dystrybucyjnego gawk.
Jeżeli informacja w pliku `README' jest sprzeczna z podaną tutaj,
to powinna być uważana za autorytatywną.
Osoby zajmujące się przeniesieniem gawk na systemy nie-uniksowe:
Jeżeli twój błąd daje się powielić także na Uniksie, prześlij proszę kopie swego zgłoszenia na ogólną listę błędów GNU, a także do Arnolda Robbinsa, na wskazane wyżej adresy.
awk
Wstawianie takich komentarzy w programie awk jest rodzajem zabawy.
// Czy komentarze z C++ działają? odpowiedź: tak! oczywiście
Michael Brennan
Istnieją dwie inne swobodnie dostępne implementacje awk
Niniejsza sekcja pokrótce opisuje, skąd je wziąć.
awk
awk
wolnodostępną. Można ją uzyskać przez anonimowe ftp z serwera
netlib.bell-labs.com. Należy zmienić katalog na
to `/netlib/research', zastosować tryb "binary" lub "image"
i pobrać `awk.bundle.gz'.
Jest to archiwum powłoki, które zostało skompresowane narzędziem GNU
gzip. Dekompresuje się je narzędziem gunzip.
Można ją też pobrać za pośrednictwem WWW
z jego strony domowej.
Wersja ta wymaga kompilatora ANSI C; GCC (kompilator C z projektu GNU)
działa całkiem nieźle.
mawk
awk, nazwaną
mawk. Jest dostępna na zasadach GPL
(zob. 18. Powszechna Licencja Publiczna GNU), tak samo jak gawk.
Można ją uzyskać przez anonimowe ftp z serwera
ftp.whidbey.net. Należy zmienić katalog na
`/pub/brennan', zastosować tryb "binary" lub "image" i pobrać
`mawk1.3.3.tar.gz' (lub najnowszą wersję, jaka tam jest).
Dekompresję tego pliku można wykonać za pomocą gunzip.
Instalacja jest zbliżona jak w przypadku gawk
(zob. B.2. Kompilowanie i instalowanie gawk na Uniksie).
Przejdź do pierwszej, poprzedniej, następnej, ostatniej sekcji, spisu treści.