E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\10.DOC 193
Rozdzia³ 10. ¨ Programy użytkowe projektu GNU 207
Peter MacKinnon
W tym rozdziale:
u Aktualnie dostępne oprogramowanie podlegające licencji GNU
Projekt GNU, założony i prowadzony przez Free Software Foundation (FSF), ma na celu zapewnienie darmowego oprogramowania (w formie kodu źródłowego) każdemu zainteresowanemu. Istnieje długi manifest, który wyjaśnia motywy takiej filantropii (za którą powinniśmy być naprawdę wdzięczni, ponieważ niektóre z tych programów są najlepsze w swojej klasie!). Jedną z głównych tez tego manifestu jest to, że wysokiej jakości oprogramowanie jest niezbędne do życia, podobnie jak jedzenie czy powietrze. Fakt, że oprogramowanie GNU jest rozprowadzane bezpłatnie, nie oznacza, że nie jest ono objęte prawami autorskimi. Głównym celem licencji GNU jest to, aby oprogramowanie pozostawało bezpłatne.
Jeśli chcesz dowiedzieć się czegoś więcej o FSF, możesz do nich napisać pod adres:
Free Software Foundation675 Massachusetts AvenueCambridge, MA 02139.
Możesz również zamówić kopię ich biuletynu, wysyłając pocztą elektroniczną list do
gnu@prep.ai.mit.edu.
Dystrybucja Linuxa dołączona do tej książki zawiera praktycznie wszystkie programy GNU dostępne w tej chwili. Są one spakowane za pomocą programu archiwizującego tar, a następnie kompresora gzip (również objętego licencją GNU). Kompresor ten jest nieco wydajniejszy od standardowo używanego w UNIX-ie programu compress. Pliki skompresowane programem gzip mają rozszerzenie .gz, pochodzące z programu compress ‑ .Z. Program gzip radzi sobie z rozpakowywaniem obu typów plików.
W nazwie każdego ze skompresowanych plików zawarty jest numer wersji pakietu, by łatwo było zorientować się, która wersja jest „najświeższa”. Po rozpakowaniu program może zostać skompilowany i zainstalowany. Większość z nich posiada napisane w tym celu pliki makefile, obsługiwane przez program make.
Fundacja Free Software Foundation udostępniła do tej pory tak wiele oprogramowania, że nie sposób opisać każdą z aplikacji szczegółowo. Następne podrozdziały skrótowo opisują programy dołączone do tej wersji Linuxa. Są to krótkie podsumowania, oparte na informacjach pochodzących z GNU.
acm jest sieciowym symulatorem walki powietrznej, przeznaczonym dla środowiska LAN. Pozwala rozprawić się z przeciwnikiem za pomocą pocisków powietrze-powietrze i karabinu. Działa pod kontrolą systemu X.
Autoconf generuje skrypty powłoki, które pozwalają automatycznie konfigurować pakiety z kodem źródłowym (takie jak dostarczane na licencji GNU) na podstawie pliku zawierającego dane o wymaganiach stawianych systemowi. Aby można było go używać, musi również być zainstalowany pakiet m4.
Interpreter poleceń o nazwie bash jest rozszerzoną wersją interpretera Bourne Shell (stąd jego pełna nazwa – Bourne Again Shell). Oferuje on wiele rozszerzeń dostępnych w powłokach csh i ksh. Obsługuje także zarządzanie zadaniami, historię poleceń, oraz edycję wiersza poleceń w trybie edytorów vi i emacs. Dokładniejszy opis tego interpretera znajduje się w rozdziale 11. „bash”.
bc to język programowania zorientowany na obliczenia algebraiczne. Może być używany w sposób interaktywny lub przy użyciu pliku wejściowego. Wersja GNU tego programu posiada składnię zbliżoną do języka C oraz kilka rozszerzeń w stosunku do pierwotnej wersji (nazwy zmiennych składające się z wielu znaków, słowo kluczowe else i pełna obsługa algebry Boole’a). W przeciwieństwie do wersji pierwotnej, nie wymaga programu dc, spełniającego funkcję kalkulatora.
Biblioteka BFD (ang. Binary File Description) pozwala programom operującym na plikach pośrednich .o (jak ld czy gdb) na obsługę różnych ich formatów. Zapewnia ona przenośny interfejs, tak że tylko BFD zna szczegóły danego formatu. Wszystkie programy używające BFD obsługują zarówno format a.out (domyślny format plików wykonywalnych generowanych przez kompilator C), jak i COFF.
Binutils to kolekcja narzędzi dla programistów, takich jak ar, c++filt, demangle, gprof, ld, objcopy, objdump, ranlib, size, strings i strip. Wersja 2 jest napisana zupełnie od nowa i używa biblioteki BFD. Linker ld przy komunikatach o błędach dotyczących wielokrotnych definicji i niezdefiniowanych odniesień podaje również numery wierszy kodu źródłowego. Program nlmconv pozwala na konwersję plików pośrednich .o do formatu NLM (Novell NetWare Loadable Modules). Program objdump potrafi wyświetlić dane takie jak nazwy użytych symboli, z pliku w dowolnym formacie rozpoznawanym przez BFD.
Bison jest kompatybilny ze swym pierwowzorem – programem yacc. Potrafi on na podstawie zdefiniowanej gramatyki stworzyć interpreter języka formalnego w postaci programu w języku C.
Wersja 2 kompilatora GNU C (gcc) obsługuje trzy języki: C, C++ oraz C z obiektami. Wybór języka zależy od rozszerzenia nazwy pliku zawierającego kod źródłowy lub opcji kompilatora. Biblioteki wymagane do uruchamiania programów w języku C z obiektami są rozprowadzane razem z gcc. Kompilator ten obsługuje w pełni standard ANSI C, tradycyjny język C oraz kilka rozszerzeń, jak np. funkcje zagnieżdżone czy nielokalne wywołania goto. Potrafi generować pliki pośrednie i informacje dla debuggera w wielu różnych formatach. Więcej na jego temat możesz dowiedzieć się z rozdziału 27. „Programowanie w języku C”.
Biblioteki GNU C obsługują standard ANSI C i dodają kilka własnych rozszerzeń. Przykładowo, biblioteka stdio pozwala zdefiniować nowe rodzaje strumieni używane z poleceniem printf.
Biblioteki GNU C++ (libg++) to zbiór klas dla języka C++, nowa biblioteka iostream i narzędzia ułatwiające pracę z kompilatorem g++. Wśród klas można znaleźć na przykład implementacje liczb całkowitych o zwiększonej precyzji, ułamków, liczb zespolonych, a także łańcuchów znaków o zadanej długości. Istnieją też pliki zawierające prototypy, dzięki którym można generować często używane klasy kontenerów.
Calc to narzędzie matematyczne używane przez niektóre programy (jak np. Emacs). Może również służyć jako kalkulator, który ma takie zalety, jak wybór pomiędzy notacją algebraiczną lub odwrotną notacją polską (Reverse Polish Notation, RPN), funkcje logarytmiczne, trygonometryczne i finansowe, liczby zespolone, wektory, macierze, daty, czas, nieskończoności, zbiory, upraszczanie wyrażeń algebraicznych, różniczkowanie i całkowanie.
Chess to komputerowa wersja gry w szachy. Może być uruchomiona zarówno z interfejsem tekstowym (dzięki wykorzystaniu biblioteki curses), jak i graficznym (w systemie X). Zaimplementowano w niej wiele specjalistycznych algorytmów, również heurystycznych, co nie pozwoli wygrać nowicjuszowi.
CLISP to implementacja języka Common Lisp, używanego powszechnie do programowania sztucznej inteligencji. Zawiera interpreter oraz kompilator, posiada również interfejs w dwóch wersjach językowych: angielskiej i niemieckiej. Wersję językową można wybrać w trakcie kompilacji programu.
GNU Common Lisp (gcl) to kompilator i interpreter języka Common Lisp. Jest on w dużym stopniu przenośny, zadziwiająco wydajny i posiada debugger pracujący z interpretowanym kodem. gcl zawiera również narzędzia ułatwiające pisanie programów dla X, takie jak profiler i interfejs Xlib.
cpio to program, który kopiuje archiwa na dyski lub taśmy i z powrotem. Można go również użyć do kopiowania plików do większego archiwum lub do innych katalogów.
Concurrent Version System (CVS) służy do zarządzania wersjami kodu źródłowego powstającej aplikacji, gdy nad jej napisaniem pracuje wiele osób. Działa w połączeniu z programem RCS, który również służy do zarządzania kodem źródłowym.
dc to kalkulator liczący w odwrotnej notacji polskiej. Może być używany interaktywnie lub za pomocą pliku wejściowego.
DejaGnu to narzędzie służące do pisania skryptów testujących dowolny program. Zawiera
Nie znam polskiego odpowiednika słowa embeddable (o ile takowy w ogóle istnieje). 1. „osadzalny” usunąć 2. sprawdzić w Inecie pod hasłem DejaGNU
język skryptowy Tcl i pochodny język expect, służący do uruchamiania skryptów symulujących działania użytkownika.
Pakiet Diffutils zawiera programy służące do porównywania plików: diff, diff3, sdiff i cmp. Program diff rozprowadzany na licencji GNU porównuje pliki wiersz po wierszu, wyświetlając znalezione różnice w kilku formatach. Jest bardziej wydajny niż jego tradycyjna wersja.
ecc to program do korekcji błędów, oparty na algorytmie Reeda-Solomona. Potrafi skorygować trzy błędne bajty w bloku 255 – bajtowym, a wykryć znacznie więcej.
ed to standardowy edytor tekstu, posiadający interfejs oparty na wierszu poleceń.
Jest to niewielka biblioteka funkcji w języku Lisp przeznaczona dla edytora Emacs, która potrafi między innymi obsługiwać dane o strukturze podwójnej listy.
GNU Emacs to druga implementacja bardzo popularnego edytora napisanego przez Richarda Stallmana. Emacs jest zintegrowany z językiem Lisp, mogącym służyć do rozszerzania możliwości tego programu. Posiada interfejs oparty na systemie X. Oprócz potężnego zestawu własnych poleceń, Emacs potrafi emulować inne edytory, takie jak vi czy EDT. Jeśli chcesz dowiedzieć się więcej o tym programie, zajrzyj do rozdziału 16. „Edytory tekstu: vi i emacs”.
Emacs 19 to wzbogacona wersja edytora Emacs, zawierająca poprawioną obsługę interfejsu X. Zapewnia dostęp do menedżera zasobów, obsługę RCS, zawiera także wiele nowszych wersji bibliotek. Emacs 19 pracuje zarówno pod kontrolą systemu X, jak i w trybie tekstowym.
es jest to interpreter poleceń oparty na rc. Obsługuje wyjątki oraz funkcje zwracające wartości inne niż liczby. Używa się go wygodnie zarówno w trybie interaktywnym, jak i w skryptach, głównie dlatego, że jego reguły są prostsze niż reguły języków wchodzących w skład powłok C Shell i Bourne Shell.
Fileutils to kolekcja standardowych (i nieco mniej standardowych) programów linuxowych służących do obsługi systemu plików. Zawiera m.in. programy chgrp, chmod, chown, cp, dd, df, dir, du, install, ln, ls, mkdir, mkfifo, mknod, mv, mvdir, rm, rmdir, touch i vdir.
Program find służy do wyszukiwania plików spełniających zadane kryteria i wykonywania na nich jakichś operacji; może być używany interaktywnie i za pomocą skryptów. Rozprowadzany jest wraz z programem xargs, który potrafi wykonać polecenie dla większej liczby plików.
Program finger służy do wyświetlania informacji o jednym lub więcej użytkownikach Linuxa. Potrafi obsłużyć wiele komputerów połączonych w sieć, potrafi też przyjąć, że jeden z nich zawiera informacje o wszystkich użytkownikach. Dzięki temu zapytanie skierowane do dowolnego komputera zwraca pełną informację o użytkowniku. Oto przykładowy efekt wykonania polecenia finger:
# finger tparker@tpci.comLogin: tparker Name: Tim ParkerDirectory: /usr/tparker Shell: /bin/shOn since Sat Jun 6 11:33 on tty02, idle 51 days 21:22 (messages off)On since Sun Jun 7 15:42 on ttyp0, idle 0:02On since Sat Jun 6 11:33 on ttyp1, idle 21 days 10:011Mail last read Tue Jun 16 18:38:48 1998
Jak widać, ta wersja programu finger (wyniki jego działania różnią się w zależności od systemu operacyjnego i wersji) pokazuje informacje zawarte w pliku /etc/passwd (identyfikator, katalog domowy itd.) oraz informacje dotyczące ostatnich sesji.
flex to zamiennik programu lex, który jest generatorem interpreterów języków formalnych. Wygenerowane przez program flex interpretery są bardziej wydajne, niż pochodzące z programu lex. flex potrafi również stworzyć odpowiedni kod w języku C.
Fontutils to pakiet używany do tworzenia czcionek dla programów Ghostscript i TeX. Zawiera również narzędzia do konwersji i kilka innych programów użytkowych. W jego skład wchodzą m.in. bpltobzr, bzrto, charspace, fontconvert, gsrenderfont, imageto, imgrotate, limn oraz xbfe.
gas to asembler, tłumaczący kod źródłowy do postaci pliku pośredniego .o. Programy napisane w całości w asemblerze działają w różnych systemach operacyjnych, nie tylko w Linuxie.
Jest to program kompatybilny z awk, modyfikujący pliki zgodnie z zadanym wzorcem. Zawiera również kilka rozszerzeń nie spotykanych w innych implementacjach, na przykład awk czy nawk, funkcje do zmiany wielkości liter w znalezionym tekście. Dokładniejsze informacje znajdziesz w rozdziale 25. „gawk”.
gdb to debugger obsługiwany z wiersza poleceń. Pliki pośrednie i tablice symboli są wczytywane za pośrednictwem biblioteki BFD, co umożliwia wyszukiwanie błędów w programach zapisanych w różnych formatach. Inne zalety gdb to praca zdalna poprzez połączenie szeregowe lub TCP/IP oraz obsługa pułapek (przerwanie programu po spełnieniu zadanego warunku). Dostępna jest również wersja z interfejsem X, o nazwie xxgdb.
Jest to biblioteka GNU zastępująca tradycyjne biblioteki służące do obsługi baz danych – dbm oraz ndbm. Implementuje bazy danych z wyszukiwaniem za pomocą tablic haszujących.
...
pecet9