Home Dokumentacje Efektywne programowanie w AWK - Podręcznik użytkownika GNU awk - Instalowanie gawk
18 | 08 | 2019
Efektywne programowanie w AWK - Podręcznik użytkownika GNU awk - Instalowanie gawk Drukuj

Przejdź do pierwszej, poprzedniej, następnej, ostatniej sekcji, spisu treści.

 


 

B. Instalowanie 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.

B.1. Dystrybucja gawk

W tej sekcji opisano najpierw jak zdobyć pakiet dystrybucyjny gawk, jak go zdekompresować, i co jest w rozmaitych plikach i podkatalogach.

B.1.1. Pozyskiwanie pakietu dystrybucyjnego gawk

Oprogramowanie GNU można pozyskać na trzy sposoby.

  1. Skopiować je od kogoś, kto już je ma.
  2. Zamówić 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:

    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: Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć.
    URL: http://www.gnu.org/

    Zamawianie bezpośrednio z FSF wspiera fundację i jest wkładem w dalsze tworzenie wolnego oprogramowania.
  3. Pobrać 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.
    Azja:
    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
    Australia:
    archie.au:/gnu
    (archie.oz lub archie.oz.au dla ACSnet)
    Afryka:
    ftp.sun.ac.za:/pub/gnu
    Środkowy Wschód:
    ftp.technion.ac.il:/pub/unsupported/gnu
    Europa:
    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
    Polska:
    ftp.task.gda.pl:/pub/gnu
    ftp.icm.edu.pl:/pub/gnu
    ftp.man.torun.pl:/pub/gnu
    Ameryka Południowa:
    ftp.inf.utfsm.cl:/pub/gnu
    ftp.unicamp.br:/pub/gnu
    Kanada Zachodnia:
    ftp.cs.ubc.ca:/mirror2/gnu
    USA:
    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

B.1.2. Rozpakowywanie pakietu dystrybucyjnego

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.

B.1.3. Zawartość pakietu dystrybucyjnego 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.

rozmaite pliki `.c', `.y' i `.h'
Te pliki są faktycznym kodem źródłowym gawk.
`README'
`README_d/README.*'
Pliki opisowe: `README' do gawk w Uniksie, a reszta do rozmaitych kombinacji sprzętowo-programowych.
`INSTALL'
Plik zawierający omówienie procesu konfiguracji i instalacji.
`PORTS'
Lista systemów, na które przeniesiono gawk, i które pomyślnie przeszły przez zestaw testów.
`ACKNOWLEDGMENT'
Lista osób, które miały główny wkład w kod lub dokumentację.
`ChangeLog'
Szczegółowa lista zmian w kodzie źródłowym, jak poprawione błędy czy ulepszenia.
`NEWS'
Lista zmian w gawk od ostatniego wydania czy poprawki.
`COPYING'
Powszechna Licencja Publiczna GNU.
`FUTURES'
Krótka lista możliwości i/lub zmian rozważanych w przyszłych wydaniach, z jakimś wskazaniem czasu pojawienia się zmiany, zależnie od stopnia trudności.
`LIMITATIONS'
Lista czynników ograniczających sprawność gawk. Większość z nich zależy od sprzętu lub oprogramowania systemowego, a nie jest ograniczeniami w samym gawk.
`POSIX.STD'
Opis pewnego obszaru, w którym standard POSIX dotyczący awk jest niepoprawny, i sposobu, w jaki gawk radzi sobie z tym problemem.
`PROBLEMS'
Plik opisujący rozpoznane kłopoty występujące w bieżącym wydaniu.
`doc/awkforai.txt'
Krótki artykuł opisujący dlaczego gawk jest dobrym językiem do programowania AI (Artificial Intelligence, sztucznej inteligencji) .
`doc/README.card'
`doc/ad.block'
`doc/awkcard.in'
`doc/cardfonts'
`doc/colors'
`doc/macros'
`doc/no.colors'
`doc/setter.outline'
Źródła 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.
`doc/gawk.1'
Źródło troff podręcznika systemowego man opisującego gawk. Rozpowszechniane dla wygody użytkowników Uniksa.
`doc/gawk.texi'
Plik źródłowy Texinfo niniejszej książki. W celu uzyskania dokumentu drukowanego powinien zostać przetworzony za pomocą TeX-a, zaś w celu utworzenia pliku Info -- za pomocą makeinfo.
`doc/gawk.info'
Gotowy, wygenerowany plik Info tej książki.
`doc/igawk.1'
Źródło troff podręcznika systemowego man opisującego program igawk przedstawiony w 16.2.9. Łatwa metoda korzystania z funkcji bibliotecznych.
`doc/Makefile.in'
Plik wejściowy wykorzystywany podczas procesu konfiguracji do generowania faktycznego pliku `Makefile' do tworzenia dokumentacji.
`Makefile.in'
`acconfig.h'
`aclocal.m4'
`configh.in'
`configure.in'
`configure'
`custom.h'
`missing/*'
Te pliki i katalogi wykorzystywane są podczas konfigurowania gawk w rozmaitych systemach uniksowych. Objaśniono je szczegółowo w B.2. Kompilowanie i instalowanie gawk na Uniksie.
`awklib/extract.awk'
`awklib/Makefile.in'
Katalog `awklib' zawiera kopię `extract.awk' (zob. 16.2.7. Wydzielanie programów z plików źródłowych Texinfo), którą można wykorzystać do wydzielenia programów przykładowych z pliku źródłowego Texinfo tej książki, i plik `Makefile.in', którego używa 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.
`atari/*'
Pliki potrzebne do stworzenia gawk na Atari ST. Zob. B.5. Instalowanie gawk na Atari ST, gdzie opisano szczegóły.
`pc/*'
Pliki potrzebne do stworzenia gawk na MS-DOS i OS/2. Zob. B.4. Instalacja i kompilacja na MS-DOS i OS/2, gdzie opisano szczegóły.
`vms/*'
Pliki potrzebne do stworzenia gawk VMS. Zob. B.3. Jak skompilować i zainstalować gawk na VMS, gdzie opisano szczegóły.
`test/*'
Zestaw testów do 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ę.

B.2. Kompilowanie i instalowanie 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.

B.2.1. Kompilowanie 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.)

B.2.2. Proces konfigurowania

(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'.

B.3. Jak skompilować i zainstalować gawk na VMS

Ta sekcja opisuje jak skompilować i zainstalować gawk na VMS.

B.3.1. Kompilowanie 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:

VAX C V3.x
Należy użyć niezmienionych `vmsbuild.com' lub `descrip.mms'. Stosują one CC/OPTIMIZE=NOLINE, co jest kluczowe przy Version 3.0.
VAX C V2.x
Musimy mieć Version 2.3 lub 2.4; starsze nie będą działać. Należy zmienić `vmsbuild.com' lub `descrip.mms' zgodnie z zawartymi w nich komentarzami. W przypadku `vmsbuild.com' wymaga to tylko usunięcia dwu ograniczników `!'. Trzeba też poprawić `config.h' (który jest kopią pliku `[.config]vms-conf.h') i zakomentować lub usunąć dwa wiersze `#define __STDC__ 0' i `#define VAXC_BUILTINS' w pobliżu końca.
GNU C
Należy zmodyfikować `vmsbuild.com' lub `descrip.mms'; zmiany są inne niż przy VAX C V2.x, ale równie proste. Nie powinny być potrzebne żadne zmiany w `config.h'.
DEC C
Należy zmodyfikować `vmsbuild.com' lub `descrip.mms' zgodnie z zawartymi w nich komentarzami. Nie powinny być potrzebne żadne zmiany w `config.h'.

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.

B.3.2. Instalowanie 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.

B.3.3. Uruchamianie 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.

B.3.4. Tworzenie i użytkowanie gawk na VMS POSIX

Należ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ń.

B.4. Instalacja i kompilacja na MS-DOS i OS/2

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'.

B.5. Instalowanie 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.

B.5.1. Kompilowanie 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.

B.5.2. Uruchamianie 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).

B.6. Instalowanie 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: Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć.
WWW: http://www.ninemoons.com
Anonymous ftp site: 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.)

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 Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. .

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 Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. .

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:

MS-DOS
Scott Deifik, ` Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. ' i Darrel Hankerson, ` Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. '.
OS/2
Kai Uwe Rommel, ` Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. '.
VMS
Pat Rankin, ` Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. '.
Atari ST
Michal Jaegermann, ` Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. '.
Amiga
Fred Fish, ` Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. '.

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.

B.8. Inne wolnodostępne implementacje 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ąć.

Unix awk
Brian Kernighan był w stanie uczynić swoją implementację 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
Michael Brennan napisał niezależną implementację 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.

 
Linki sponsorowane

W celu realizacji usług i funkcji na witrynach internetowych ZUI "ELPRO" stosujemy pliki cookies. Korzystanie z witryny bez zmiany ustawień dotyczących plików cookies oznacza, że będą one zapisywane w urządzeniu wyświetlającym stronę internetową. Więcej szczegółów w Polityce plików cookies.

Akceptuję pliki cookies z tej witryny.