Linuxové novinyPavel Jank ml., 12. cervna 1998
Pomalu ale jiste se blz ona doba, kdy skoly zej prazdno- tou,
koupaliste jsou naopak nacpana az k prasknut a k to- mu to odporne
horko. A navc si jeste Red Hat Software vypust novou verzi
distribuce Red Hat. Jak to ma oby- cejny clovek sthat? Mus chodit
na zkousky (ja jich mam osm), mus se take nekdy ukazat v praci, mus
se take ne- kdy ukazat doma, a to uz nemluvm o tom, ze mus byt take
se svoj prtelkyn (a jak rad). A jeste k tomu mus de- lat spoustu
jinych vec (psat Linuxove noviny, nainstalovat si novy teTEX s
novym pdfTEXem, napsat podporu obraz- ku ve formatu TIFF pro pdfTEX
atd.). Ano, mate pravdu, prestanu si vylevat svoji dusi a zacneme
hned od zacatku naplno.
V cervnovem csle Linuxovych novin najdete spoustu za- jmavych
informac, pocnaje pravidelnymi rubrikami Mesc v
comp.os.linux.announce, Co noveho na sunsite.unc.edu?, a konce
vysledky souteze z minuleho csla Linuxovych no- vin v clanku
Zasmali jsme se!.
Karel Zak a Miroslav Janis nas ve svych clancch seznam s
programatorskymi editory Xwpe, Xfte, Grasp a Source
Navigator.
Dan Ohnesorg (za spoluprace s Milanem Kerslagerem) vytvorili male
HOWTO pro cten posty pomoc programu Pegasus Mail na Linuxu.
Vydavatelstv Computer Press vydalo novou knihu. Jme- nuje se
Programovac jazyky GNU, a protoze jsme knihu dostali k dispozici,
muzete si precst jej recenzi od Yenyi.
Chcete psat lokalizovane programy a nevte, jak na to? Zkuste si
precst clanek autoru Michaela Mraky a Vladi Michla, treba vam
pomuze.
Kolektiv redakce Linuxovych novin (nyn v poctu peti osob — Ondrej
„Koala“ Vacha, Pavel Juran, Bohumil Cha- lupa, Hanus Adler a ja)
Vam preje prjemne pocten a pr- jemne stravenou dovolenou s vasimi
blzkymi. Nejen poc- taci ziv je clovek, pamatujte na to a bavte se
(a uz se pro- sm nikdy nehadejte v konferencch, ktere ctu. .
.).
Mesc v comp.os.linux.announce Pavel Jank ml., 1. cervna 1998
Tak jako kazdy mesc prinesla oznamen v konferenci
comp.os.linux.announce spoustu novinek ze sveta operac- nho systemu
Linux. Tento mesc byl navc poznamenan vystavou Linux Expo 98, a tak
jsme si mohli precst spous- tu vyhodnych nabdek komercnch
spolecnost. Naprklad spolecnost Red Hat Software Inc. zde nabzela
posledn verzi sve distribuce — RedHat Linux 5.1 (kodove oznacen
Manhattan).
Steve Emms (
[email protected]) oznamil no- vou adresu pro
sluzbu nazvanou Linux Links (1), ktera
Linuxove noviny pripravuje a vydava Ceske sdruzen uz
noviny shromazd’uje odkazy na WWW servery venujc se Linuxu. V
soucasne dobe jich ma asi 1500.
Robert S. Maier (
[email protected]) vytvoril novou verzi balku
GNU plotting utilities (2).
Jean-Luc Fontaine zverejnil dals verzi sveho zajmaveho modularnho
spreadsheetu (tabulkoveho procesoru) pod nazvem moodss-3.3. Najdete
jej na adrese (3). Na teto adrese naleznete i obrazek spreadsheetu
v akci.
Mark Stacey (
[email protected]) uvolnil testova- c verzi
patche pro podporu protokolu T/TCP pro kernel 2.0.32. Protokol
T/TCP je definovan v dokumentu RFC 1644 a umoznuje snzit pocet
prenasenych paketu pri malych prenosech dat az o 66 %. Patch
naleznete na adrese (4).
Spolecnost ObjectSoftware Inc. vyvinula utilitu Ob- jectManual,
ktera slouz ke generovan dokumentace ze zdrojovych textu v jazyce C
nebo C++ (podobne jako ja- vadoc z jazyka Java). Program je free
pro nekomercn or- ganizace. Je k dispozici na adrese (5) pro Linux
a Microsoft Windows NT.
Fabrice Bellard (
[email protected]) vytvoril patch pro audio
prehravac mpg123, ktery pry umoznuje soubo- ry mp3 prehravat i na
pomalych poctacch s procesorem i486. Patch naleznete na adrese
(6).
Dennis Payne (
[email protected]) oznamil novou verzi programatorskeho
prostred Xwpe (7), blizs informace o tomto prostred naleznete take
v clanku Programator- ske editory (X)WPE a (X)FTE.
Spolecnost Linux Central (8) oznamila zahajen prodeje nove knihy
autoru Michaela K. Johnsona a Erika W. Troa- na s nazvem Linux
Application Development. Kdo zna oba autory, jiste si knihu nenecha
ujt. Najde se nejake vyda- vatelstv, ktere knihu preloz a vyda?
Snad ano, nechejme se prekvapit. . .Dals novou knihou je kniha
Linux Network Toolkit autora Paula G. Seryho.
Andries Brouwer (
[email protected]) oznamil no- vou verzi
balku kbd, tentokrate s cslem 0.96. Balk najdete na adrese
(9).
Elmer Joandi (elmer
[email protected]) nalezl pomerne za- jmavou
chybicku v produktu Source Navigator (viz cla- nek Source
Navigator) spolecnosti Cygnus. Source Naviga- tor totiz posloucha
na prvnm volnem portu a akceptuje prkazy jako exec cat
/etc/passwd.
Thomas Boutell (
[email protected]) znamy to autor aplikac pro WWW
(vzpomenme treba Count.cgi) ozna- mil novou aplikaci, ktera
umoznuje sdlen kalendaru — jed- na se tedy o tzv. Group Scheduling
aplikaci, ktera umoznuje skupinam pracovnku lepe organizovat
cas.
Pavel Jank ml. (to jsem ja ;-) oznamil presun aplikace Linux Source
Driver na novou adresu (10).
John Lindal (
[email protected]) oznamil novou verzi balku Code
Crusader(11).
Markku Rossi (
[email protected]) vytvoril interpreter jazyka JavaScript,
ktery je volne siritelny — najdete jej na adre- se (12).
Spolecnost Red Hat Software Inc. (13) oznamila zahajen prodeje
distribuce Red Hat Linux 5.1 (Manhattan).
ivatelu operacnho systemu Linux
1 Linux Links http://www.linuxlinks.com/
4 T/TCP patch pro kernel 2.0.32
http://www.csn.ul.ie/~heathclf/fyp
5 ObjectManual http://www.obsoft.com
7 Xwpe http://www.rpi.edu/~payned/xwpe/alpha.html
8 Linux Central http://linuxcentral.com
13 Red Hat Software Inc. http://www.redhat.com
14 Glibc http://huizen.dds.nl/~frodol/glibc
Co noveho na sunsite.unc.edu? Pavel Jank ml., 1. cervna 1998
X11
X11/screensavers/xlockmore-4.10.tgz — screensaver pro
X-Window
X11/xutils/kjoy-0.4.tgz — utilitka pro nastaven joysticku pro
KDE
X11/xutils/wmnet-1.03.tar.gz — TCP/IP loadmeter
apps/database/www/www-sql-0.5.1.tar.gz — CGI rozhran k mySQL
apps/doctools/man/vmanpg-1.0.tar.gz — prohlzec manualovych stranek
pod SVGAlib
apps/editors/X/xwpe-1.5.9a.tgz — klon Borland IDE pro X-Window, ale
i pro textovy terminal
apps/editors/X/yudit-1.0.tar.gz — textovy editor podporujc
unicode
2
commercial
games
kernel
libs
libs/graphics/t1lib-0.7-beta.tar.gz — rasterizer pro fonty ve
formatu Type1
libs/libmmx-980501.tgz — rozhran pro podporu MMX v jazyce C
science
science/visualization/plotting/xFgraphs-1.1.tar.gz — grafy
matematickych funkc pod X-Window
system/bbs/rocat-1.07.tar.gz — plnohodnotna BBS pro Linux
system/boot/ethernet/etherboot-4.0.tar.gz — ethernet boot
loader
system/emulators/Sim8051 1.0.tgz — simulator 8051
system/network/admin/firewallct-1.0.8.p3.tar.gz — HTML konfigurace
firewall
Kvetnove cslo Linux Journalu se zabyva programovanm aplikac
prenositelnych na jine systemy (cross platform development). Prvnm
z clanku je nastin tvorby widgetu pro Javu od R. J.
Celestina.
Prehled prostredku a nastroju pro tvor- bu grafickeho uzivatelskeho
rozhran neza- visleho na pouzitem systemu prinas Micha-
el Babcock. Pokud pouzvate PERL, Jeremy Impson vam ukaze, jak
pri laden pouzt PERLovsky debugger. John Kominek pouzva pro
programovan prenositelnych
aplikac jazyk Modula-3. Ve svem clanku se venuje prkladu, jak
vytvorit distribuovanou databazi.
Carl Nobile prinas ukazku ATD (Abstract Data Type). O sve
zkusenosti s vyuzitm Linuxu pri zskavan dat na
nemeckych zeleznicch se del Harald Kirsch. Richard Schwaninger
popisuje svuj pohled na vyuzit
Tcl/Tk pro rychlou tvorbu zakaznickych aplikac. Nevte, jak nastavit
RAID na Linuxu? Mozna vam porad
Jay Munsterman ve svem clanku o RAID0. Nejen pro uzivatele CDE
(Common Desktop Enviroment)
je urcen clanek Georga Krafta o ToolTalku a jeho vyuzit pri
programovan vzajemne komunikujcch aplikac.
Pokud potrebujete spojit Python a databaze, a nevte nic o DB-API
pro Python, prectete si clanek Andrewa M. Kuchlinga.
Hledate nejpomalejs msto vaseho programu a nemuze- te ho najt? A
zkusili jste uz nektery z profileru? Podvejte se na dals clanek ze
serie Take Command.
Linux Journal samozrejme jako vzdy obsahuje dals clan- ky, recenze,
informace, reklamy apod. Jen heslovite: KDE, Gnome, recenze na
knihu A Practical Guide to Linux, ochrana WWW stranek heslem.
Programovac jazyky? GNU! Jan Kasprzak, 11. cervna 1998
Miroslav Dressler: Programovac jazyky GNU Podtitul: Volne siritelna
programatorska prostred Computer Press, 1998 ISBN 80-7226-070-7
Cena 275 Kc/303 Sk
Dostal jsem k recenzi zajmavou knihu. Titul tohoto clan- ku je
parafraz na jej nazev — „Programovac jazyky GNU“. Autorem je
Miroslav Dressler a vydalo ji nakladatelstv Computer Press (1).
Kniha popisuje praci s volne dostup- nymi vyvojovymi prostredky z
projektu GNU — kompilato- ry gcc (prekladac jazyka C/C++/Objective
C), gpc (prekla- dac Pascalu), g77 (prekladac Fortranu 77), program
gmake (zajist’uje kompilaci a sestavovan rozsahlejsch programu) a
laden programu debuggerem gdb.
Nejvetsm prekvapenm, ktere mi tato kniha zpusobila, byl fakt, ze
kniha nen zamerena na vyse zmnene softwaro- ve produkty obecne, ale
na jejich verzi pro konkretn pro- stred — OS/2 a DOS extender EMX.
V knize je zmnena existence gcc a dalsch produktu pod UN*Xem,
existen- ce prostred DJGPP pod DOSem, ale hlavn zameren kni-
3
hy je prostred EMX. Tento fakt me celkem prekvapil — proc vydavat
manual k portabilnmu programu pouze pro jedno prostred. Vzdyt’
obecny manual ke GNU C a dalsm programum by se podle meho nazoru
mel prodavat lepe.
Na druhe strane je docela mozne, ze u Computer Pressu presne ved,
co delaj. Tuto knihu si zcela jiste mohou kou- pit uzivatele DOSu,
OS/2 nebo Windows, a naleznou tam pro svuj system detailn
instrukce. A uzivatel UN*Xu proste preskoc prvn kapitolu o EMX a
dve posledn kapitoly, za- merene na integrovana vyvojova prostred a
grafickou kni- hovnu VESA. Uzivatel UN*Xu bude take pravdepodobne
natolik inteligentn, ze si GCC, resp. GCC.EXE preloz jako
gcc.
Muj nazor na knihu je v podstate kladny a myslm si, ze je dobra jak
pro uzivatele UN*Xu, tak pro uzivatele zmi- novanych proprietarnch
systemu. Ja osobne jsem si velmi rad precetl kapitolu o gdb (tedy
pardon, o GDB :-) a na- sel jsem tam nekolik vlastnost, ktere jsem
jeste neznal. Je take dobre, ze se touto knihou dostava informace o
dal- sch volne siritelnych programech do povedom uzivatelu
proprietarnch systemu.
K nekterym rysum knihy mam take sve vyhrady:
• autor ma zrejme jen velmi mlhavou predstavu o tom, co je GNU, co
je Linux a jak tyto pojmy spolu souvis. Cituji z uvodu knihy:
Zakladn myslenkou projektu GNU (GNU’s not UNIX) je bezplatne
zprstupnit programove vybaven puvodne urcene pro operacn system
UNIX uzivatelum ostatnch operacnch systemu. Tato myslenka byla
nejsilneji akcentovana v dobe vytvaren operacnho systemu Linux, se
kterym se soucasne vyvjel prekladac programovacho jazyka C.
O tom co je hlavn myslenkou projektu GNU lze samozrej- me
diskutovat, ale podle meho nazoru je to spse vyvoj pro- gramoveho
vybaven pro UN*X, nikoli (jen) jeho zprstup- nen uzivatelum jinych
systemu. A fakt, ze prekladac gcc je o nejakych pet sest let stars
nez Linux, je take obecne znamy.
• psmo Garamond povazuji za dost okoukane, ale na druhou stranu je
celkem hezke. Ovsem tmto ps- mem by mela byt sazena cela kniha
(vzorec na strane 93 je zrejme v necem jako Times — Quark nejsps
neum matematiku v jinem fontu). Navc kombinace pomer- ne vyrazneho
Garamondu s lehkym Courierem je podle meho nazoru do oc bijc.
Ostatne, uz kdyz si v Courie- ru napsete neco jako
-fomit-frame-pointer, vypa- da to dost divne.
• v nekterych mstech chyby (sazece?) zaprcinuj i myl- nou
interpretaci textu (napr. strana 78, tret radek sho- ra ma byt
odsazen — levostranne mezery v Makefile nejsou nevyznamne).
• kniha ma na obalu obrazek kompaktnho disku; mys- lm, ze by daleko
prospesnejs bylo, kdyby kniha ob- sahovala skutecne CD s instalac
GNU vyvojoveho pro- stred treba pod EMX (i kdyz si myslm, ze na CD
by se navc mohlo vejt i DJGPP a zdrojove texty GNU pro- gramu pro
UN*X, a mozna i dokumentace, prevedena z info do HTML.
Linuxove noviny 06/98
Vyse uvedene vyhrady povazuji za malo vyznamne a kni- hu doporucuji
ke koupi kazdemu, kdo zmnene vyvojove prostredky pouzva nejen pod
DOSem (OS/2, Windows, . . .), ale i v nativnm UN*Xovem prostred.
Existence teto kni- hy je pro me dukazem, ze Open Source software
se i u nas dostava do popred zajmu uzivatelu natolik, ze se
naklada- telum vyplat vydavat k tomuto softwaru ceskou dokumen-
taci.
1 Computer Press http://www.cpress.cz
Abstract
Editory wpe a fte budou patrne blizs tem, kter prechaze- j na Linux
z DO$u a UNIXove editory typu vi nebo ema- cs jsou pro ne zahadou.
Oba popisovane editory se vce ci mene uspesne snaz napodobit
„standardn“ Borland ovla- dan (ktere podle mne nepatr mezi
nejhors). Hned na za- catku bych vsak zmnil i nevyhody techto
editoru — fte nema verzi pro terminal a u wpe se mi ji vubec
nepodarilo rozchodit. Takze jejich pouzitelnost je zuzena na
X-Window System a u fte jeste lze pouzt verzi pro textovou konzoli.
(BTW: pokud pouzvate KDE, tak vas mozna potes verze pro tento X
desktop (nen ale soucast standardn distri- buce fte).)
Editor XWPE
Temer dokonala kopie Borlandho rozhran; umoznuje vse (velmi
nadnesene receno), co si zmlsany programator muze prat.
Stvoril ho pan Fred Kruse a ve verzi 1.4.2 existuje bez zmeny jiz
od roku 1993. Teprve v nedavne dobe byly zdroja- ky opraseny a byl
zahajen projekt „za leps WPE“ (just kid- ding). Podvejte se na
adresu (1). Dals text se bez vyjimek bude vztahovat ke stare verzi
1.4.2.
Podobnou simulac Borlandu je program RHIDE, ktery byl napsan pro
djgpp, coz je dosovy port prekladace GNU C (produkuje tak dobry
kod, ze byl pouzit IDSoftwarem k prekladu QUAKEa msto Watcom C).
RHIDE existuje jak pod DO$, tak pro Linux. Linuxovou verzi jsem
vsak
4
nezkousel a o te dosove si pamatuji jen to, ze kdyz jsem hned na
zacatek zdrojaku napsal komentar, tak pri listova- n spolehlive
zatuhl :-) Takze toto rozhran rad prenecham povolanejsm. . .
Obrazek ukazuje editor xwpe pri krokovan programu (tesne pred tm,
nez mi spadl :-) ).
Strucny vycet schopnost WPE
• odskakovan na chyby a „warningy“ objevene preklada- cem a
zprstupnene pomoc okenka Messages
• moznost nakonfigurovat a vyuzt ruzne prekladace — krome C(++)
treba Fortran, Pascal ci LaTeX (hmm.. . tady je trochu problem,
protoze xwpe „cpe“ zcela sve- volne libovolnemu prekladaci
spustenemu z menu pr- kazem Run/Compile parametr -c, takze je treba
spous- tet skript, ktery ignoruje prvn parametr (-c) a spoust latex
az s tm druhym (filename))
• zobrazovan manovych stranek i GNU info — umoznuje pohodlnou
navigaci dokumentem, lec tu a tam spatne interpretuje odkaz (sps
ignoruje). . .
• „obarvovan“ syntaxe (snaha o cesky preklad (sps pre- pis) slova
highlight) a konfigurace barev editoru a syn- taxe
• konfigurace chovan editoru (tabelatory, autoindent, autosave. .
.), ale jinak je konfigurace moznost edita- ce dost omezena.
• a nakonec um take zcela necekane v ten nejnevhod- nejs okamzik
spolehlive chcpnout (hlavne pri prohl- zen manovych stranek) ;-)
(ale vetsinou se mu podar rozdelanou praci ulozit . . .)
Zhodnocen
Obecne lze rci, ze k programovan (spse ke zkousen pro- gramovat) je
tento editor celkem pouzitelny — napsete kod, rovnou ho prelozte,
opravte syntakticke a jine chyby odhalene prekladacem a muzete ho
vesele krokovat a pro- vadet s nm ruzne jine kejkle bez nutnosti
vytvaret Ma- kefile a spoustet debugger. Ovsem k vetsmu projektu je
Makefile stejne nutno vytvorit (co s neprenositelnym
„projektfajlem“? (Nejakym kouzlem (skriptkem) by z neho ten
Makefile vytvorit mozna slo. . .)) a chyby je v zasade lepe vubec
nedelat — usetr to spoustu prace s naslednym honenm nejakeho
stupidnho bugu ;-).
Jinak se mi zda tento editor dost omezeny — barev- na syntaxe
funguje jen pro par vyvolenych (C(++), Pas- cal, Fortran(?). . .),
indent je dost hloupy, a editor vubec neum kompletaci slov
(doplnovan slov podle predchozho kontextu). O definovan klavesovych
zkratek pro vkladan casto pouzvanych vyrazu si pri pouzvan tohoto
editoru muzete nechat jen zdat. A prave tyto vlastnosti ma editor
fte.
Editor XFTE
Editor fte si neklade za cl koprovat IDE. Je to jen editor. Ovsem
editor vhodny pro programatory zvykle Borlandmu ovladan. Zda se, ze
byl puvodne stvoren pod OS/2 a teprve postupem casu portovan na
ostatn systemy i „systemy“ — DOS, Linux, Win32. Napsal (a
naprogramoval :-) ) ho pan Mirko Macek a je mozne ho zskat na
(2).
Zde existuje ve verzi pro X-Window a linuxovou konzoli (hovorme-li
o moznostech tykajcch se Linuxu). Nekde na adrese (3) lze tez najt
port pro KDE od jineho autora. Tato verze ma tu vyhodu, ze pokud
mate spravne nainstalovanou ceskou klavesnici pod X-Window (cili
chod-li vam treba pod KDE aplikacemi), tak vam zde bude chodit
tez.
Xfte v plne krase — ukazka ruznych indent stylu, ty [0] znac foldy.
Cely text by po zavren foldu mel tri radky. . .
Mene strucny vycet schopnost FTE
• Konfigurovatelne zvyraznen syntaxe (highlighting) — muzete
pridavat vlastn definice ruznych formatu sou- boru. Nadefinovany
jsou tyto jazyky/formaty: C(++), Java, REXX, Perl, Pascal, Ada,
UNIX shell skripty, tcl, HTML, LaTEX, E-mailove zpravy, DIFF a
dals. Ne vsu- de funguje hilite tak, jak by si clovek predstavoval
— u HTML nejsou nadefinovana nektera klcova slo- va a JavaScript to
vubec nerozezna :-) V shellovskych skriptech je zase jako prkaz
zvyrazneno jen prvn slo- vo, takze pokud volate nejaky program
celou cestou, tak je zvyraznen jen prvn adresar (krome lenosti vsak
nic nebran odstranen techto nedostatku prmo v kon- figuracnch
souborech).
• Specialn indent pro C(++), Perl, Javu, REXX, pricemz pro C
existuj tri mody — standardn, GNU a Linux kernel styl. Ceckovsky
indent mne opravdu nadchl — na patricne msto na radku kursor
odskakuje hned po stisknut klavesy Enter a inteligentne rozpoznava
slo- zene zavorky. To znamena, ze zdrojak psete bez jakych- koli
starost o formatovan textu — vse se provad au- tomaticky. Dals
pomucka usnadnujc orientaci v textu je, ze pri najet kursorem na
zavorku (jakoukoli — [, ], {, }, ( a )) se zvyrazn odpovdajc
zavorka.
• Schopnost kompletovan slov na zaklade predchozho kontextu — pokud
se v predchozm textu jiz dane slovo vyskytuje, stac napsat nekolik
prvnch psmen a stis- kem klaves Ctrl+Tab se slovo automaticky dopse
(pro lenochy jako jsem ja je to prmo terno. . .). Bohuzel
5
to jiz nefunguje, kdyz neco dopisujete na zacatku zdro- jaku a
slovo, ktere byste chteli doplnit, se sice v textu jiz vyskytuje,
ale nachaz se za inkriminovanym mstem :-(
• Folds (cti faldy ;-) ) — ackoli je pro ne vytvoreno special- n
menu, teprve nedavno (cca pul hodiny) jsem pocho- pil, k cemu tohle
zvre vlastne je, nebot’ jsem mel cas, chut’ a hlavne duvod (psan
tohoto clanku) se tm zaby- vat. Zda se, ze je to velmi uzitecna
schopnost zprehled- nit vytvareny text — napr. v C zdrojaku muzete
pomoc menu Fold/Create folds at routines vytvorit „faldk“ pro
kazdou funkci. Potom stiskem klaves Alt+Gray / vsechny foldy
zavrete. Text se pote jev jako seznam funkc — zobraz se totiz pouze
prvn radek ve foldu. Na libovolny fold lze najet kursorem a
kombinac kla- ves Ctrl+Gray + a Ctrl+Gray - je lze otvrat ci
zavrat. Foldy lze vytvaret i pomoc regexpu ci jak se vam zachce —
viz menu Fold. Nen vsak vse zlato, co se trpyt. . . U foldu lze
definovat pouze zacatek. Ukonce- n zard bud’ definice dalsho foldu
nebo konec soubo- ru. To vede napr. pri „ofoldovan“ zdrojaku podle
funkc (viz vyse) k tomu, ze se komentare pred funkc, ktere se j
vetsinou take tykaj, dostanou na konec foldu, ve kte- rem je
predchazejc funkce. Je zde vsak stale moznost pouzt regexp — takze
pokud psete komentare k funk- cm ve stylu /* Fce: . . . */, muzete
vytvorit foldy pres regexp pomoc vyrazu Fce:.
• Chovan editoru lze ovlivnovat na pomerne nzke urov- ni (vte, jak
to myslm — assembler je take programo- vac jazyk nzke urovne, ale
lze v nem udelat vsechno). Pro kazdy typ dokumentu je vytvoren
zvlastn konfi- guracn soubor, ve kterem je nadefinovan zpusob obar-
vovan syntaxe, specialn klavesove zkratky, prdavna menu (viz HTML),
formatovan textu, okraje a spousta dalsch vlastnost. Vse lze
libovolne menit a upravovat podle vlastnch predstav. Je vsak
pravda, ze je v tech konfiguracnch souborech trochu chaos, ale kdyz
za- cnete souborem main.fte, tak se snadno zorientuje- te. A editor
fte ma pro tyto konfiguraky zvlastn mod s barvickami :-). Po
editaci konfiguracnch souboru je treba jeste vytvorit „preklad“
pomoc programku cfte a prekoprovat ho do souboru $HOME/.fterc.
Potom znovu spustte fte a je to.
• Preklad a opravy zdrojovych textu — fte umoznuje spoustet
prekladac na pozad (implicitne spoust ma- ke, takze je treba
vytvorit i Makefile (pro ktery je tez zvlastn mod)) a odchytava si
jeho chybove hlasky. Potom lze pomoc okna Messages skakati po
chybach a opravovati. Zadne debugovac schopnosti (krokova- n ci
breakpointy) to vsak nema — je ovsem otazka, zda je to bug nebo
feature (fprintf(stderr, "Err: blah\n"); take nen k zahozen).
Zhodnocen
Ackoli ladc schopnosti editoru fte jsou zredukovany na okenko s
chybovymi hlaskami, presto si tento edi- tor snadno zskal me srdce
— jeho implicitn nastave- n mi totiz maximalne vyhovuje, a tak
zmeny v konfigu- raci nebyly nejak dalekosahle. Pridal jsem si
pouze mod pro ceskou klavesnici, zkratku pro v HTML mo- du (
Ctrl+Space ) a jeste par malickost jako pouzva- n ceskeho fontu
nebo predefinovan zkratky Ctrl+Tab
Linuxove noviny 06/98
na Shift+Tab kvuli KDE. Samozrejme, ze i tento editor jako vetsina
jinych ma sve nedostatky, o kterych jsem se zminoval vyse, ale tyto
nedostatky bohate vyvazuj moz- nosti, ktere tento editor
poskytuje.
1 XWPE http://www.rpi.edu/~payned/xwpe/
2 XFTE http://ixtas.fri.uni-lj.si/~markom/fte
Grasp Karel Zak, 9. cervna 1998
A toto je muj favorit — GRASP neboli Graphical Repre- sentations of
Algorithms, Structures and Processes. Nejed- na se o zadneho
vyvojarskeho obra, ale naopak o docela uhledny editor, ktery svou
funkci pro programovan projek- tu o nekolika souborech a par stech
radcch pln na vybor- nou. Osobne ho pouzvam asi 1 rok a jsem
nadsen.
Soucasna verze je 6.2.7 pro Unix (29. dubna 1998) a 6.2.8 pro
Win95/NT (25. brezna 1998).
Program je napsan pro X Window za pouzit Motif 1.1.2. Pochopitelne
autori nezapomnaj ani na ty co nemaj Motif a program lze stahnout
na adrese (1) jako staticky slinko- vane binarky.
GRASP je pripraven pro jazyky Ada 95, C, C++, Java a VHDL. GRASP je
integrovan do GNU rodiny kompilatoru pro Adu, C a Sunovskeho javac
pro Javu (dle informac na Webu).
Jako prvn se pri spusten objev okno obsahujc sou- bory projektu,
pokud zadny projekt nemate tak logo pro- gramu. Zde se lze
rozhodnout jestli si zalozte novy projekt nebo si proste jen tak
zeditujete nejaky ten soubor. Tato moznost mi tak trochu chyb u
Source Navigatoru, ktery predpoklada, ze pokud nekdo neco chce, mus
si nejdrve vytvorit projekt. Pro sve intern informace si GRASP vy-
tvar soubor v adresari, ve kterem se nachazej editovane
soubory.
6
Pak uz stac jen vybrat jazyk, ve kterem bude vami edi- tovany
soubor, nebo prmo vybrat soubor v souborech za- razenych do
projektu, a objev se vlastn editor.
Editor podporuje vsechny obvykle funkce (tedy obar- vovan klcovych
slov, zarovnavan, spousten make, run programu atd.), ale hlavne
CSD. A to je ten duvod proc o GRASPu psi.
CSD — Control Structure Diagram je nadherna vec, kte- rou muzete
videt na prilozenem obrazku. Ano, to jsou ty „cary“, ktere nam
krasne zprehlednuj zdrojovy kod. Na prv- n pohled je ihned patrne
kdy a kam se vracte, kde je jaky cyklus, if nebo neco jineho.
Soucast znacen textu muze tez byt moznost cslovan radku.
Co se mi take lb je, ze pokud udelate chybu (napr. za- pomenete
strednk), tak vas program taktne upozorn, ze s takovym kodem CSD
proste neudela (mate-li tedy CSD v celem souboru v poradku, je
pravdepodobne, ze i zaklad- n syntaxe kodu je OK). O prpadnych
chybach GRASP informuje programatora v okne vzkazu.
Dals zajmavou vlastnost GRASPu je expanze maker. To znamena, ze
editor makra ukryta v souborech includo- vanych do editovaneho
souboru pro vlastn kontrolu expan- duje (ale na obrazovce a v
souboru vam pochopitelne zu- stane to co jste napsali). Tak napr.
pokud bude soubor.h a v nem makro AHOJ a my toto makro budeme
pouzvat v souborech .c, bude GRASP kontrolovat jak toto makro
„zapada“ do souboru .c. Pokud tedy bude v makru AHOJ chyba, budeme
na tuto skutecnost upozorneni. GRASP te- dy pouzite AHOJ nebere jen
jako text, ale jako opravdove makro. Lze nastavit, z jakych
#include souboru bude ex- panze probhat (lze zahrnout i
/usr/include).
V GRASPu si muzete take definovat vlastn sablony. Ja jsem to
naprklad pouzval pri psan programu pouzvajcch knihovnu mSQL, kdy se
mi nechtelo psat porad ty slene nazvy funkc. Jen stacilo
nadefinovat funkce nebo i cykly (a ostatne cokoliv) do souboru se
sablonami, a v menu edi- toru se vse objevilo. Pak pokud chcete
neco z toho co jste nadefinovali, jen zamysujete do tohoto menu a
text ukryty pod touto polozkou je GRASPem napsan. Na dalsm
obraz-
Linuxove noviny 06/98
ku je toto menu se sablonami dodanymi s programem to cele svetle
modre (. . .take ctete cernobly vytisk?) okenko.
Mezi dals prjemnosti patr barevny tisk do PostScrip- tu, kdy na
vytisku je pochopitelne mozne mt i CSD (to by mohlo byt uzitecne
pro vsechny tvurce literatury o pro- gramovan (uz vidm ty krasne a
prehledne prrucky a ne ten sedy chaos, na kterem oci umdlevaj — ale
vrat’me se z oblacku na zem. . .)).
Nove je v GRASPu interface pro grep, ale to si uz asi kazdy
predstav sam. A dobra zprava na konec, v dals verzi ma byt podpora
Tcl a Perlu, a tak si prijdou na sve i ne- kompilovanci. . .
1 Grasp
http://www.eng.auburn.edu/department/cse/research/grasp/
Source Navigator Karel Zak, 9. cervna 1998
Pokud se u GRASPu zminuji o tom, ze se hod i pro psa- n malych
programku, tak Source Navigator (SN) bych za- radil do presne
opacne kategorie IDE programu. Pocho- pitelne i SN lze pouzt na
psan nekolika malo radek, ale pravdepodobne pri nem nevyuzijete
vsechny jeho moznos- ti a jak dale uvidme, bylo by to tak trochu
jako pouzvat „delo na komary“.
Verze kterou ja pouzvam je tzv. „lite version“, tuto lze zskat na
(1). Jej omezen (na ktere jsem narazil) je ne- ochota pracovat s
projekty o vce nez 50 000 radkach. Za- jemcum o plnou verzi sam SN
napov hned pri spusten, kam se obratit a pro koho si dolarky
pripravit (ano, ano, zadne GNU).
SN je kompletnm prostredm pro vyvoj jednm vyvoja- rem (napr.
program C-Forge to um i pro tym vyvojaru ro- zesetych po sti, ale o
tom az nekdy prste). Soucast balku je manazer projektu, manazer
souboru a funkc, interface pro debugger a make a hlavne editor. Vse
je velice snadno a ruznorode konfigurovatelne.
SN um aplikovat vsechny sve moznosti na Tcl, Javu, Fortran, Cobol,
C/C++, asm. Ke vsem jazykum je mozno nastavit i extern editor a
specifikovat koncovky souboru. Bohuzel k C++ a C pristupuje stejne.
Mozna by nebylo od veci, pokud je editovan soubor.c, nenutit
programatorovi na pracovn plochu nastroje na praci s objekty, ale
uvidme, vse se vyvj.
Jak je dobrym zvykem, pristupuje i SN k psan programu jako k tvorbe
projektu. Projekt je mozne vytvorit i z exis- tujcch souboru. K
tomu slouz neco co lze nazvat mana- zerem projektu. Zde je mozne
pridavat a ubrat adresare, soubory do projektu, ale i spojovat
projekty atd. Pri vytvo- ren projektu udela SN v urcenem adresari
jeden soubor a adresar, ve kterych si udrzuje databaze o zdrojovem
ko- du. Pro kazdy projekt lze vytvorit specieln nastaven vseho
nastavitelneho. Tedy kratce:
• barvy a fonty pro asi 40 druhu textu (napr. komentare, deklarace,
. . .), oken a menu
• tisk
• tvorba zaloh (.bak)
• a jeste moc a moc vecicek. . .
Po vytvoren projektu se objev neco jako manazer sou- boru. Ten je
schopen zobrazovat bud’ seznam souboru nebo velice pekny seznam
funkc (na obrazku). Prave schopnost zachazet s projektem z hlediska
funkc a ne jen souboru je velice efektivn. Programator pak uz nemus
premyslet, kde v jakem souboru je jaka funkce, ale jen v seznamu
funk- c, ktery lze trdit dle nastavitelneho filtru, najt tu pravou
a editovat.
Editor v sobe sdruzuje hned nekolik hezkych nastroju (nektere lze
volat i z manazera souboru). Editor je schopen zarovnavat,
zvyraznovat klcova slova, koprovat, zachazet s bloky a hlavne
umoznuje hledat a hledat (v aktualnm souboru nebo v celem
projektu).
Linuxove noviny 06/98
Pokud kliknete pravym tlactkem mysi na jakoukoliv funkci nebo
promennou, editor vam nabdne menu, po- moc nehoz se premstte na
implementace nebo dekla- race dane funkce nebo promenne. Nevte-li
tedy, co to je napr. za polozku blabla ve strukture neco, stac
kliknout na neco->blabla a podvat se, kde a co a jak je ve vasem
projektu spojeno s touto polozkou. V horn casti editoru je opet
prstupny seznam se vsemi objekty, promennymi, makry a funkcemi.
Dale pak seznam toho, co bylo naposle- dy hledane. Aby se vyvojar
pri praci neztratil, jsou dostup- na i tlactka (sipky)
back/forward, ktere vas vrat na vasi predchoz/nasledujc pozici v
projektu.
Editor umoznuje i jina zobrazen nez jen klasicke (zaloz- ka Edit)
zobrazen (textu) kodu. Na ostatnch zalozkach je mozne zachazet s
Class, Retriever, Hierarchy (bohuzel pro svou nedotcenost C++ tuto
cast jaksi taktne vynecham, ale z hlediska koncepce SN lze
predpokladat, ze i tato ob- last je zde velice dobre propracovana)
a pak (a to se mi moc lb) zalozky Xref a Include.
V Xref je mozne nechat si dle nastavene hloubky vno- ren doslova
nakreslit jake funkce a promenne jsou volany a pouzity v dane
funkci. Tak napr. na dalsm obrazku je znazorneno, ze funkce init
tree vola funkci rec tree a u obou funkc i pouzite promenne.
Prakticky tak lze ude- lat mapu vzajemnych provazanost funkc v
celem progra- mu, pokud jako zacatek nastavte main() a levels
dosta- tecne velky (a procesor mate dostatecne vykonny). Pocho-
pitelne je mozne se kliknutm premstit do dane funkce. Include
umoznuje to same, ale u souboru. Pouzit zalozky Grep je myslm
jasne.
SN, jak uz zaznelo, ma i interface pro debugovan. Ja- ko debugger
pouzva defaultne gdb. Aktualne provadeny kod zobrazuje SN v okne
editoru, debugovat lze prakticky bez psan prkazu na prkazovou radku
gdb — stac jen kli- kat. V tomto mne SN nejak neoslovil a kvalitou
ho pravde- podobne predc DDD. Ja osobne radeji pouzvam samotne
gdb.
Prevratne nen ani rozhran pro make. Obsahuje vse co lze standardne
ocekavat (ukazovan na chyby odhalene pri kompilaci, nastaven
parametru pro make atd.).
Co mi u SN chyb — a je napr. u Emacsu — je skryvan podmnene
kompilovanych cast kodu dle direktiv #ifdef
8
(bylo v emacsu pekne predvedeno na Cikhaji). Dals trochu neprjemnou
vec je doba ukladan souboru — SN si totiz znova vytvar databaze
informac o zdrojovem kodu a to trochu trva.
To je velice zhruba vse. Pravdepodobne jsem vynechal mnoho detailu,
ktere SN umoznuje, ale to nen napln Li- nuxovych novin, to se mus
zazt pri praci s SN. Na zaver lze rci, ze se jedna o velice dobry
IDE software i pro oprav- du velke projekty, ktery by bylo zajmave
videt v plne verzi (na domovske strance ho maj vyfoceny v uhledne,
ale bo- huzel typicky komercn krabici) a vnutit mu napr. cely ker-
nel Linuxu — a ja myslm, ze i s takovym balkem zdrojaku by bez
vetsch problemu pracoval pro zdar sveho majitele.
1 Cygnus http://www.cygnus.com
Kterak postu na Linuxu Pmailem csti Dan Ohnesorg a Milan Kerslager,
12. cervna 1998
Pokud se rozhlednete po ceskych skolach, zjistte, ze temer vsude se
pouzva jako klient elektronicke posty Pegasus Mail, dlo to Davida
Harrise. Jeho popularita je celosveto- ve obrovska a jeden cas byl
dokonce prostrednictvm firmy Novell prodavan pod nazvem First Mail
jako oficialn klient novellskeho postovnho systemu MHS, posleze ho
v teto funkci nahradil GroupWise. Pegasus Mail je sren jako fre-
eware, s nekolika vyhradami — nejsou k dispozici zdrojove texty,
program se nesm prodavat (muze byt soucast neja- keho placeneho
balku, ale nesm byt prodan sam o sobe), nesm se pouzvat pro
rozeslan nevyzadanych reklamnch mailu a nesm byt modifikovan bez
predchozho svolen au- tora.
Velikou vyhodou je uzka integrace se serverem Novell Ne- tware.
Pegasus mail si nacta konfiguraci prmo ze serve- ru, um lokalne
dorucovat prmo uzivatelum, bez potreby dalsho programu bezcho na
serveru, um vyhledavat lo- kaln uzivatele podle jmen ulozenych v
tzv. bindery databa- zi (mnohem slozitejs obdoba souboru
/etc/passwd, do- stupna ke cten a zapisu jedine sluzbami bezcmi na
serveru (no za tuto vetu by se mi kazdy hacker vysmal, ale pro na-
se ucely toto zjednodusen stac)). Podporuje tzv. nastenky, ktere
funguj asi jako news, ale pouze lokalne. Je velice dob- re
rozsiritelny, umoznuje uzivatelskou definici menu, tm pa- dem take
preklad do jinych jazyku, uzivatel si definuje vlast- n tabulky pro
preklad mezi znakovou sadou sveho poctace a ISO znakovymi sadami,
pouzvanymi pro transport pos- ty po sti. V soucasne dobe jsou k
dispozici kompletne ceske preklady jak menu, tak napovedy. Pmail je
k dispozici ve ver- zch pro DOS, Windows, Windows 95/NT a
Macintosh. Ob- rovskou vyhodou je identicky format pouzvanych
souboru, takze si muzete postu cst soucasne pod vsemi zmnenymi
operacnmi systemy s vyhradou, ze verze pro Macintosh ne- n
lokalizovana a asi v dohledne dobe ani nebude. Vyrovna se i s tm,
ze je spusten vcekrat na vce stanicch v sti pod stejnym uzivatelem.
Nen ale mozne ze dvou poctacu modi- fikovat stejnou slozku, kam se
posta uklada, to ale obvykle prlis nevad, protoze novou postu lze
cst bez omezen.
Logika jeho prace je velmi prosta a dobre zdokumento- vana. Mejme
uzivatele A, uzivatel A ma pod Novellem cslo AN, ktere je mu
prideleno pri vytvoren uctu na serveru. Tmto cslem je uzivatel
identifikovan v bindery databazi.
SMTP_DIR="/home/nwserv.sys/mail/smtp"
for file in $SMTP_DIR/* do if [ -e $file ]; then FROM=‘grep
"^From:" $file | head -1 | sed -e ’s/ ’s/>.*//’‘ TO=‘fromdos
< $file | sed -n ’2,/^$/p $FROM -> $TO ..." fromdos <
$file | sed ’1,/^$/d echo " done." rm $file
fi done
Vypis c. 1: Script pro odes
Na disku, ktery se obvykle jmenuje SYS: existuje adresar nMAILnAN,
ktery ma uzivatel sam pro sebe. Tam se uklada veskera prichazejc
posta, kazda zprava do jednoho sou- boru, ktery se jmenuje nejakym
nahodnym cslem (podle data, hodiny a vysledku fce random()). Tomuto
souboru je pridelena prpona .cnm. Pmail po startu hleda vsechny
souboru *.cnm a zobraz je. Cnm soubory obsahuj cistou mailovou
zpravu ve formatu podle RFC 822 a navazujcch norem (MIME a pod.).
Uzivatel si dopisy potom presou- va do slozek podle sve volby, ve
slozce je jiz vce dopisu v jednou souboru, nebo muze vyuzt sluzeb
automaticke- ho filtrovan a presouvat dopisy do jednotlivych slozek
pri otevren nove posty pomoc pravidel, ktera si sam nadefi- nuje.
Verze pro Windows navc umoznuje aplikovat filtrova- c pravidla na
odeslane dopisy nebo na jednotlive slozky. Take pri odeslan lze na
dopis take aplikovat pravidla, kte- ra rozhodnou o osudu zpravy.
Pokud je zprava lokaln, Pe- gasus mail zjist pro jmeno adresata
jeho cslo a uloz mu zpravu do jeho adresare nMAILncslo. Pokud
zprava spln nejake jine filtrovac pravidlo, adresa treba zacna FAX:
je napr. spusten extern program. Pokud je vyhodnocena ja- ko
Internetova, je ulozena do predem vybraneho adresare kde je
zpracovana typicky dalsm Harrisovym programem — Mercurym, ktery
zajist dorucen. Toto chovan je impli- citn, ale da se zmenit, treba
pri instalaci na server Windows NT se msto csel pouzvaj prmo jmena
uzivatelu.
Co z predchozho vyplyva pro nas. Je zrejme, ze by neby- lo slozite
doslou postu ukladat do adresare MAIL a odes- lanou vyzvedavat z
adresare urceneho pro Mercuryho pro- stredky Linuxu. Uzivatelum by
to prineslo „svobodu“ lokal- nho zpracovan posty, snadne ukladan
prloh dopisu, rych- le startujc program, nepotrebujc sluzby casto
problema- tickeho telnetu a bezproblemovou transparentn podporu
cestiny. To samozrejme nemohlo nezustat nepovsimnuto a tak bych vas
rad seznamil s resenm, ktere pouzil Mi- lan Kerslager. Vyhodou je i
to, ze budete moci pouzt Linux i na mnoho dalsch funkc, pro ktery
byste jinak potrebovali dals stroj.
Budete potrebovat emulator sluzeb serveru Novell Ne- tware, ktery
se pod Linuxem jmenuje Mars nwe. Dale sa- mozrejme fungujc IPX na
stanicch a Pegasus mail. Mars na Linuxu asi mate, je soucast
beznych distribuc, jak se instaluje IPX na stanice je popsano v
dokumentaci Marsu.
Pegasus mail pro DOS (spolu s pconfig.exe) najdeme na URL:
(1)
Doporucuji vsak pouzvat spustitelny soubor z posledn preview, podle
nasi zkusenost je dostatecne stabiln a spo- lehlivy: (2)
9
lan posty do Internetu
Instalace Pmailu spocva v rozbalen do adresare, ktery si vyberete.
Potom nastavte spustenm programu pcon- fig.exe cesty k adresari pro
postu, jmeno serveru a po- dobne, tato cast je popsana v
konfiguraci serveru. Spus- tte program pmail.exe a kouknete se jak
funguje. Pri tom vznikne v postovnm adresari soubor pmail.ini, ten
si prohlednete, nastavte konfiguracn volby podle vlast- n uvahy,
predevsm ale nastavte jako kodovan msto ISO-8859-1 ISO-8852-2.
Potom soubor okoprujete pod na- zvem pmdflts.ini do adresare, kde
je ulozen pmail.exe a smazete nepouzite konfiguracn parametry.
Podle teto sa- blony se budou zakladat konfigurace uzivatelu. Pro
korekt- n funkci cestiny bude jeste potreba stahnout ceskou pod-
poru ze stranek pana Jirho Kuchty na (3) nebo ze stejneho adresare
odkud jste stahli zakladn instalaci pmailu. Insta- lace popsana
tamtez. Tm mame pmail funkcn a dame se do serveru.
Na serveru je konfigurace nasledujc, Pmail um odcho- z postu
smerovat do tiskove fronty nebo do sdleneho ad- resare. Pro nasi
potrebu je vyhodny sdleny adresar, pro- toze do nej Pegasus odchoz
dopisy jednoduse umst jako soubory, ktere muzeme snadno zpracovavat
skriptem. In- formace o umsten tohoto adresare je ulozena v bindery
databazi a tak se nemusme starat o jednotlive konfigura- ce pro
kazdeho uzivatele zvlast’. K jejmu nastaven slouz program
pconfig.exe, ktery je soucast distribuce Pega- sus mailu. Toto
nastaven respektuj obe verze Pegasa (DO- Sova i pro Windows). Jako
SUPERVISOR (ekvivalent roo- ta na serveru Novell) spustme
pconfig.exe a nastavme v menu: „SMTP Internet mail
Interface:“
Spool interface?: Y Output path: SYS:MAIL\SMTP Enabled?: Y
Preferred?: N Use always?: N This server’s name: server.domena.cz
Our time zone: +0100 MET Organization: Nejake jmeno nas
organizace
Umsten spool adresare je prakticky libovolne, pokud ho chceme
skryt, nen spatne ho umstit jako klasicky mai- lovy adresar do
SYS:MAIL. Uzivatele potrebuj do tohoto adresare pouze pravo C
(Create), coz je v Linuxovem pro- stred drwx-wx-wx. Polozka „This
server’s name“ urcuje, co je pridano za jmeno a zavinac v adrese
odeslatele. Mu- ze to byt konkretn jmeno stroje nebo jen domena —
zale- z na konfiguraci naseho postovnho systemu. Casova zona je
ponechana na nas. Uvedena hodnota je stars, posledn
Linuxove noviny 06/98
$mail_dir = "/home/nwserv.sys/mail/user"; $spoll_dir =
"/var/spool/mail";
sub cnm_from_file { $number = 0; $close = 0; while ( $line =
<VSTUP> ) { chop ($line); if ( $line =~ /^From / ) { while (
-e "${mail_dir}/${user_name}/${number} $number++;
} if ( $close != 0 ) { close (VYSTUP);
} else { $close = 1;
} if (! open (VYSTUP, ">${mail_dir}/${user_name} { print "nemohu
zapsat do souboru ${mail_dir}/${user_name}/${number}.cnm\n";
r
} else { print " vytvarim ${user_name}/${number}.cnm
} } print VYSTUP "$line\r\n";
} close (VYSTUP); return 0;
while ( $user_name = readdir(SPOOL) ) { if ( -f
"${spoll_dir}/${user_name}" && -s
"${spoll_dir}/${user_name}") { rename ("${spoll_dir}/${user_name}",
"${spoll_dir}/${user_name}.lock") || \
die "nemohu prejmenovat soubor ${spoll_dir} open (VSTUP,
"${spoll_dir}/${user_name}.lock") |
die "nemohu otevrit soubor ${spoll_dir}/${u if ( &cnm_from_file
) { close (VSTUP); rename ("${spoll_dir}/${user_name}.lock",
"${spoll_dir}/${user_name}");
} else { close (VSTUP); unlink ("${spoll_dir}/${user_name}.lock")
|| \
die "nemohu smazat soubor ${spoll_dir}/${ }
} } exit 0;
Vypis c. 2: Tr
dobou se setkavam se zkratkou CEST, ale jiste si vybere- te format
dle vlastn uvahy. Mezi letn a zimn casovou zo- nou muste prepnat
„rucne“. Jmeno organizace je volitelne a bude take pridano do
hlavicek odeslanych dopisu.
Mel bych se take zmnit o bezpecnosti. Obvykla situace je takova, ze
vsichni uzivatele maj pravo zapisu do pos-
10
.cnm" ) {
Linuxove noviny 06/98
to muze byt neprjemne. Resenm muze byt odebran to- hoto prava a
ponechan jedineho prstupneho adresare pro vsechny uzivatele — spool
adresare pro odchoz dopisy. Pak je mozne dorucit vsechny dopisy jen
pres extern postovn system (nas script nebo Mercury) a odstranme
tak zm- nene potencialn nebezpec. V tomto prpade je vsak nutne
nastavit v pconfig.exe volbu „Use always?“ na „Y“, aby se Pegasus
nepokousel mstn postu dorucovat prmo, ale pouzil spool
adresar.
Cela finta, jak postu prijmat a odeslat, je realizovana dvema
scripty. Jiste existuj i elegantnejs resen pres pro- cmail a
podobne, ale tohle je vyzkousene a funkcn.
Zacneme tm jednodussm scriptem, ktery slouz na ode- slan posty do
internetu. Je na vypise Script pro odeslan posty do
Internetu.
A co vlastne dela? Mus zajistit predan posty ze sdlene- ho adresare
do fronty sendmailu. Pmail odeslanou pos- tu uklada do adresare,
kteremu se v pconfigu rka spool directory, v nasem scriptu je to
SMTP DIR a skript z nej vybere vsechny soubory a v nich nalezne
polozku From: a To: (tyto polozky jsou v souboru dvakrat, jednou
pro Mercuryho a podruhe v tele zpravy, script vybra prvn va-
riantu, druha nemus byt napr. u BCC: validn, z tela zpravy je
vybrano From: ale jen pro diagnosticke ucely). Pote je vyvolan
program sendmail, ktery postu uloz do fronty.
A ted’ slozitejs script Trden posty. Ten funguje takto: Vybra postu
z adresaru /var/spool/mail/jmeno
a rozlame ji na jednotlive soubory. Z tech vyrob *.cnm soubory,
ktere uloz do postovnho adresare uzivatele. Vo- l trochu odlisny
postup nez Pmail, vytvar soubory 0.cnm, 1.cnm a pokud jiz takovy
existuje, inkrementuje nazev, do- kud se netref do volne pozice.
Mail v unixovem mailboxu zacna ΥFrom jmeno\ od zacatku radku. (Nen
tam dvoj- tecka.) Aby se nemohlo stat, ze dopis obsahujc od zacat-
ku radku From bude rozdelen, je pred ulozenm do mail- boxu From
quotovano >From , tzv. vranu je tedy potre- ba odstranit pred
ulozenm do cnm souboru. Script se ne- zabyva zamykanm mailboxu a
jednoduse frontu prejme- nuje na *.lock. Po zpracovan je posta na
linuxu sma- zana. Script vyuzva toho, ze Mars zaklada v postovnm
adresari adresar user s adresari dle jmen uzivatelu a lin- kuje je
oproti adresarum MAILncislo_uzivatele. Dal- sm predpokladem
uspesneho behu je, ze uzivatele maj na Novellu a v Linuxu stejna
jmena, a ze vytvorme link root->supervisor, nebo budeme postu
pro roota forwardo- vat jinemu uzivateli (klasickym souborem
~/.forward). Vytvoren linku povolme marsu v sekci 16, konfiguracn-
ho souboru Marsu, kde nastavme hodnotu bud’ 1 nebo 2. Ceska
dokumenace k Marsu je na (4).
A ted’ jiz tresnicka na dortu, jak to funguje cele dohro- mady.
Nejdrve spustme prvn script. Ten nam preda pos- tu od uzivatelu do
fronty, potom nahodme sendmail, UU- CP, ETRN ci co vlastne pouzvame
a postu odesleme a pri- jmeme. A do tretice spustme druhy script,
ten nam postu rozdel mezi jednotlive uzivatele. Prvn script nen
spatne poustet pravidelne a casto z cronu. Pmail totiz i lokaln
postu, pokud obsahuje @ uklada do fronty pro odeslan do
Internetu.
A ma to nejake chyby? Jiste, nemohu tvrdit, ze Pmail je naprosto
bezchybny produkt, ale pri beznem pouzvan jich moc nenajdete.
Pmailu pro Windows treba nechutnaj nektere specialn prpady MIME
kodovan, treba BASE64 v hlavickach, zato ale narozdl od Netscape
mailu um ode- slat hlavicky s diakritikou.
11
Za urcitou zavadu prezentovaneho resen lze povazovat to, ze k poste
nen nadale mozne pristupovat pres POP3 a IMAP4 protokol. O podpore
pro POP3 se uvazuje, o IMA- Pu zatm ne, ale je zde samozrejme
moznost, ze tento cla- nek prilaka nekoho, kdo by mel zajem s nami
resen dale rozvjet a zdokonalovat. Kdo v, treba se jednou stane
inte- graln soucast MARS NWE. Pokud mate pocit, ze mluvm prave o
Vas, urcite se nam ozvete.
1 Pegasus Mail pro DOS
http://risc.ua.edu/pub/network/pegasus/pmail340.zip
2 Pegasus Mail Preview ftp://risc.ua.edu/pegasus-previews/pmdos
pv.zip
3 Ceska podpora pro Pegasus Mail
http://www.fee.vutbr.cz/~kuchta/pmail
4 Ceska dokumentace k MARSu
http://www.spsselib.hiedu.cz/homedirs/~kerslage/manuals/linux/
Jak psat lokalizovane programy Michael Mraka a Vladimr Michl, 9.
cervna 1998
Tento clanek by mel prinest (pokud mozno jednoduchy) navod, jak
psat programy snadno pouzitelne v ruznych ja- zykovych
mutacch.
Prvnm predpokladem pro spravne chovan takoveho programu je fungujc
lokalizace. Vetsina soucasnych dis- tribuc Linuxu je vystavena nad
knihovnami glibc, kte- re by jiz s lokalizac nemely mt problemy.
Zda je to- mu skutecne tak, lze zkontrolovat pohledem do adresare
/usr/share/locale, ktery by mel obsahovat podadre- sar cs CZ* (na
mem poctaci je to cs_CZ.ISO-8859-2) a v nem soubory LC COLLATE, LC
CTYPE, LC MONETARY, LC NUMERIC, LC TIME a adresar LC MESSAGES.
Pokud to- mu tak nen, ale v systemu existuje alespon definicn sou-
bor cs CZ (byva standardne zahrnut do balku glibc jako
/usr/share/i18n/locale/cs CZ), je mozne lokalizacn soubory pomoc
prkazu
$ localedef -i cs_CZ -f ISO-8859-2 \ cs_CZ.ISO-8859-2
vygenerovat. Pokud system nevlastn ani uvedeny defi- nicn soubor,
je vhodne zact naprklad na adrese (1), kde najdete vce informac
:-).
Nyn pristupme k tvorbe vlastnho programu Prklad lc example.c (. .
.). Nejprve je potreba program primet, aby pouzval lokalizaci; to
provedeme pomoc funkce setloca- le(LC ALL, "") (viz funkce init())
— parametry uve- dene v prkladu sdel programu, aby pouzil nastaven
urce- ne promennymi prostred LC * a LANG. Dale jiz stac pou- zvat
standardn knihovn funkce pro praci s lokalizovanym prostredm.
Pro jednotlive kategorie jsou k dispozici nasledujc funk- ce:
• LC COLLATE — lexikograficke trden (viz funkce lc
collate()).
• int strcoll(const char *s1, const char *s2) — porovnavan retezcu
s ohledem na lokaliza- ci; syntaxe a navratove hodnoty odpovdaj
funkci strcmp().
• size t strxfrm(char *dest, const char *src, size t n) —
transformace retezce tak,
#define LOCALEDIR "/usr/share/locale" #define PACKAGE
"lc_example"
#define BUF 80 #define _(str) gettext(str)
void init() { setlocale(LC_ALL,""); bindtextdomain (PACKAGE,
LOCALEDIR); textdomain (PACKAGE);
}
char *words[] = {"planka", "plane", "Plasil", "ci char *p; int
i,j;
for (i = 0; i < N; i++) for (j = 0; j < N; j++) {
} }
for (i = 0; i < N; i++) printf(" %s", words[i]);
printf("\n"); }
void lc_time() { char buf[BUF]; time_t t = time(NULL);
}
aby porovnan dvou takto vzniklych retezcu pomo- c strcmp() melo
stejny vysledek, jako porovnan puvodnch pomoc strcoll().
• LC CTYPE — rozdelen znaku do trd (mala a velka psmena,
oddelovace, csla, bla msta, . . .) (viz funkce lc ctype()).
12
• int isascii (int c) — 7-bitova unsigned char hodnota z
ASCII.
• (podobne iscntrl(), isdigit(), isgraph(), islower(), isprint(),
ispunct(), isspa- ce(), isupper(), isxdigit())
Linuxove noviny 06/98
printf(_("Wrote some text, please:\n")); fgets(buf, BUF,
stdin);
for (i = 0; i < BUF && buf[i] != ’\0’; i++) { if
(isalnum(buf[i]))
buf[i] = ’+’; else if (isspace(buf[i]))
buf[i] = ’_’; else
}
(int) 12345678, (float) 1234567.1235678); }
void lc_monetary() { char buf[BUF];
strfmon(buf, BUF, _("You have forgotten to pay %n the author of
this program.\n"), (double) 1234);
printf("%s", buf); }
}
• LC TIME — casove udaje (viz funkce lc time()).
• size t strftime(char *s, size_t max, const char *format, const
struct tm *tm) — nahrad sekvence %x v retezci format ca- sovymi
udaji podle casove zony a zvolene lokalizace. Napr. %A = den v
tydnu, %a = zkratka dne v tyd- nu, %B = mesc, . . .„Nahrazuje“
funkce ctime(), asctime().
• LC NUMERIC — formatovan csel (viz funkce lc numeric()).
• int printf(const char *format, ...) — pokud %-sekvence pro csla
obsahuj apostrof (napr. %’d) vytiskne oddelovac desetinnych mst a
ti- scovek s ohledem na lokalizaci (nefunguje az v libc.5).
• LC MONETARY — formatovan peneznch informac (viz funkce lc
monetary()).
13
to\
ample.c (pokracovan)
• ssize t strfmon(char *s, size_t maxsi- ze, const char *format,
...) — nahrad sekvence %x peneznmi udaji podle zvolene loka-
lizace. Ve formatovacm retezci lze zadat: %i = me- zinarodn symbol
meny s penezn castkou (CZK), %n = narodn symbol meny s penezn
castkou (Kc). Penezn castky mus byt csla typu double nebo long
double. O teto funkci se bohuzel v info do- kumentaci nedozvte,
navc v libc.5 tato funkce vubec nebyla. Vce informac naleznete v
souboru strfmon.man3.
Pokud by pro nekterou z kategori neexistovaly stan- dardn funkce,
je mozne formatovan udelat „rucne“ za po- moc struktury lconv
zskane z funkce localeconv().
Samostatnou kapitolu pak tvor preklad (nejen chybo- vych) zprav
programu. V systemech s libc.6 (glibc) se provad pomoc balku
gettext. (Ve starsch systemech s libc.5, prpadne na jinych
operacnch systemech se k tomuto ucelu pouzvaj funkce gencat; vce
viz (2).)
Linuxove noviny 06/98
To, ze program ma pouzvat katalog s ceskymi preklady zprav
(kategorie LC MESSAGES), uz akceptoval pri volan setlocale(); je
ovsem potreba jeste specifikovat jme- no katalogu. To udelame na
zacatku programu volanm funkc bindtextdomain(package, localedir) —
ces- ta ke katalogu — a textdomain(package) — jmeno ka- talogu,
ktery pouzvame (viz funkce init()). Vsechny re- tezce, ktere maj mt
svuj ekvivalent v katalogu, je nutne „prohnat“ funkc gettext() (viz
funkce invite()).
Jeste zbyva napsat ceske preklady zprav. Nejprve je po- treba pomoc
programu xgettext vygenerovat katalog ob- sahujc vsechny originaln
zpravy. Ve vzorovem programu byl k tomu pouzit prkaz
$ xgettext --default-domain=lc_example \ --output-dir=.
--add-comments --keyword=_ lc_example.c
kde
• --output-dir=. – clovy adresar
• --keyword= – msto gettext pouzij klcove slovo
Nyn lze ke kazdemu retezci pripsat za klcove slovo msgstr prslusny
preklad. Pokud by vas katalog byl vets je velmi vyhodne pouzvat na
preklad Emacs v tzv. po-modu (potrebny kod do Emacsu je prilozen v
balku gettext). Hlavn vyhoda je, ze po-mode um na pozadan zobrazit
prmo msto zdrojoveho kodu, kde se zprava nachaz (kla- vesa s ).
Dale umoznuje kontrolu, zda jsou zpravy dobre prelozeny (zda sed
pocet formatovacch znacek, zda zpra- vy zacnaj a konc novym radkem
stejne), automaticke vy- plnen uvodn hlavicky i s datem revize (vse
Shift-v ). Samozrejme editovat preklad lze pomoc klavesy Enter ,
ukoncen Ctrl-c Ctrl-c . Pokud se vam v katalogu objev zprava
oznacena jako „fuzzy“, pak by tato zprava mela byt neuplne
prelozena. Toto oznacen lze odstranit klavesou Tab . Zpravu lze
jako „fuzzy“ oznacit pomoc BackSpace .
Pro instalaci po-modu je treba umstit sou- bor po-mode.el
(po-mode.elc) do adresare /usr/share/emacs/site-lisp a nasledne do
souboru $HOME/.emacs pridat:
(setq auto-mode-alist (cons ’("\\.po[tx]?\\’\\|\\.po\\." .
po-mode)\ auto-mode-alist))
(autoload ’po-mode "po-mode")
$ msgfmt -v -o lc_example.mo lc_example.po
ho prelozme do binarn podoby. Pak uz sta- c jen presunout lc
example.mo do adresare /usr/share/locale/cs CZ*/LC MESSAGES, zkom-
pilovat program a vyzkouset.
$ gcc -o lc_example lc_example.c
14
Utery - to nesnasm! Csla: 12 345 678 1 234 567,125000 Napiste
nejaky text, prosm: Ums cesky, jezku? ++++_+++++-_+++++-_ Zapomnel
jste zaplatit 1 234,00Kc autorovi \ tohoto programu.
$ LC_ALL=en_US ./lc_example Hello! Sorted words: chroust cikada
Plasil \ plane planka Tuesday - I hate it! Numbers: 12,345,678
1,234,567.125000 Wrote some text, please: Ums cesky, jezku?
++--_-++++-_++-++-_ You have forgotten to pay $1,234.00 to the \
author of this program.
Je videt, ze funkce strfmon() zatm nen dokonala (zbytecna mezera na
zacatku, mezi castkou a Kc nen me- zera, ac by podle definice v
souboru cs CZ byt mela), stej- ne jako funkce printf() (desetinna
csla nejsou delena do skupin). Casem se ale tyto chyby urcite
vylad.
A na zaver jeste jedna uzitecna funkce, ktera se muze pri
lokalizaci hodit a to
#include <langinfo.h> char *nl_langinfo(nl_item item);
Tato funkce vrat hodnotu, kterou po n pozaduje- me – napr: prvn den
v tydnu nl langinfo(DAY 1) nebo prvn mesc v roce nl langinfo(MON
1). Argu- menty ktere muzete pozadovat naleznete v souboru
/usr/include/langinfo.h.
1 Definicn soubory pro ceske locales
ftp://ftp.fi.muni.cz/pub/localization/locale
2 Czech-HOWTO
ftp://ftp.fi.muni.cz/pub/linux/local/czech-howto/
V dnesnm dle naseho serialu budu pokracovat ve vykladu problematiky
tvorby RPM balku. Nejprve doplnm o ne- ktere podrobnosti syntaxi
prkazu rpm -b, a pak zacnu detailneji rozebrat strukturu
spec-souboru.
rpm -ba — detaily
V predchozm csle jsem uvedl zakladn zpusoby pouzit prkazu rpm -b
pro stavbu RPM balku. Nyn uvadm dals, mene uzvane volby:
• --buildarch architektura — vytvor RPM balk pro danou architekturu
msto architektury, na ktere prave system bez. Lze pouzt zejmena pri
cross-kompilaci.
• --buildos operacn system — totez, ale zmen ope- racn system, pro
ktery bude balk urcen.
• --test — vytvor skripty pro jednotlive faze kompi- lace (uloz je
do adresare /var/tmp) a skonc. Tvur-
Linuxove noviny 06/98
ce balku pak ma moznost si tyto skripty prohlednout a prpadne i
editovat.
• --buildroot adresar — pro instalaci balku se pouzi- je tento
adresar, msto adresare uvedeneho v hlavicce BuildRoot: ve
spec-souboru.
Uvnitr spec-souboru
Zamerme se nyn na syntaxi spec-souboru, ktery rd ce- lou vystavbu
RPM balku. Jedna z vec, kterou spec-soubor muze obsahovat, je
komentar. Komentare zde zacnaj zna- kem krzek (#) na zacatku radku
a pokracuj do konce rad- ku. Komentare jsou programem rpm
ignorovany.
Dals cast je hlavicka. Syntaxe se trochu podoba hlavic- ce
internetove zpravy podle RFC 822: Hlavicka je umste- na na zacatku
spec-souboru a obsahuje polozky ve forme radku. Kazdy radek
definuje hodnotu jednoho tagu (cesky atributu? Asi ne.) a ma tuto
syntaxi:
tag:hodnota U jmena tagu se nerozlisuj mala a velka psmena a
kolem
dvojtecky mohou byt ble znaky (mezery, tabulatory, . . .). Na druhe
strane syntaxe hodnoty tagu zavis na konkretnm tagu a obvykle se
rozlisuje velikost psmen. Nektere tagy mohou mt jen cselne hodnoty,
nektere nesmej obsahovat urcite znaky (treba pomlcku), atd. Nyn
uvedu, ktere tagy system RPM rozpoznava, a jak je pouzt.
Tagy pro pojmenovan balku
• name — nazev softwaru, ktery se bal do balku. Dopo- rucuje se,
aby tento tag byl stejny (vcetne velikosti ps- men), jako u
zdrojoveho archvu prslusneho softwaru. Prklady: gcc,
ImageMagick.
• version — verze softwaru (to jest verze specifikovana autorem
softwaru). Prklady: 2.7.2.1, 19980302be- ta.
• release — verze RPM balku daneho softwaru. Casto lze pomoc
release rozlisit verze RPM balku pro ruzne distribuce nebo ruzna
prostred. Takze pro secure shell s RSAREF knihovnou muze byt
release 2us, cili pro pouzit ve Spojenych statech. Mezinarodn verze
balku pak muze mt tento tag nastaveny na hodnotu 2i.
Popisne tagy
• summary — jednoradkova informace o balku a je- ho pouzit. Jiz
drve jsem uvedl, ze podrobnejs in- formaci lze nalezt v sekci
%description prslusne- ho spec-souboru. Prklad: Secure Shell -- en-
crypts network communications.
• copyright — kratka informace o podmnkach sren balku. Nejde o
kompletn licenci, ale o jej shrnut ne- bo nazev. Prklady: GPL, BSD,
distributable, post- cardware.
• distribution — nazev distribuce, do ktere balk pat- r. Prklady:
Red Hat Linux Rembrandt, Red Hat Power Tools 5.0.
• icon — jmeno souboru, ve kterem je ulozena ikona balku. RPM
system tento tag nepouzva, ale muze byt
15
pouzit naprklad grafickym spravcem balku, jako je na- prklad glint.
Jde o graficky soubor naprklad ve for- matu xpm nebo gif.
• vendor — nazev organizace, ktera je zodpovedna za vznik tohoto
balku. Prklad: Red Hat Software, Inc..
• url — domovska stranka balku. RPM tento tag nepou- zva, slouz
pouze uzivatelum balku jako odkaz na dals dokumentaci prpadne
novejs verze softwaru.
• group — tematicka skupina, do ktere tento balk pat- r. Seznam
vsech platnych skupin i jejich podskupin lze nalezt v souboru
groups v dokumentacnm adresari RPM (obvykle /usr/doc/rpm-verze).
Prklady: Lib- raries, X11/Games/Strategy.
• packager — jmeno a kontaktn informace (e-mailova adresa, telefonn
cslo) cloveka, ktery konkretn balk vyrobil (prpadne adresa
technicke podpory, jde-li o vet- s firmu).
Zavislosti mezi balky
• serial — seriove cslo softwaru. Pro potreby instalace novych verz
balku (upgradovan), ale i pro zavislosti mezi balky (kdy balk muze
vyzadovat naprklad „balk pam verze novejs nez x.y.z“), je potreba
urcit, ktera ver- ze softwaru je novejs nez jina. V nekterych
prpadech je vsak „oficialn“ cslovan daneho softwaru natolik kryp-
ticke, ze nen mozne algoritmicky urcit, ktere oznacen znamena
novejs verzi. Proto je mozne RPM balku pri- radit seriove cslo a
toto cslo pouzvat pri (casovem) porovnavan verz namsto skutecneho
oznacen verze. Poznamenavam jeste, ze balky, obsahujc tag serial se
povazuj vzdy za novejs nez balky bez tohoto tagu.
• provides — jmeno jednoho nebo vce „virtualnch ba- lku“, ktere
prslusny balk poskytuje. Nektere balky totiz nepotrebuj ke sve
cinnosti jiny konkretn balk, ale urcity typ balku. Naprklad
programy pro doruco- van posty mohou vyzadovat existenci programu
pro cten posty. A je lhostejne, jde-li o exmh, mutt ne- bo treba
gnus. Takovy program pro dorucovan pos- ty pak vyzaduje virtualn
balk s nazvem (naprklad) mail-reader. A kazdy program pro cten
posty bu- de mt ve svem spec-souboru uveden tag Provides:
mail-reader.
• requires — seznam balku, ktere nas balk vyzaduje ke korektn
cinnosti. Nektere zavislosti jsou generovany automaticky (zejmena
zavislosti na sdlenych knihov- nach a na interpreterech skriptu),
jine lze specifikovat tmto tagem. Prklad: requires: pam >= 0.51
rka, ze ke spravnemu provozu daneho balku mus byt v sy- stemu balk
pam verze aspon 0.51. Je take mozno vy- zadovat verzi balku podle
serioveho csla: requires: playmidi =S~4 vyzaduje jmenovany balk
serioveho csla prave 4. Muze zde krome jmena balku byt uve- den i
jen soubor, ktery je v systemu vyzadovan pro ko- rektn cinnost
balku. Tento zpusob zavislost se speci- fikuje retezcem, ktery
zacna lomtkem. Naprklad pos- tovn klient, odeslajc postu na
standardn vstup pro- gramu sendmail v podstate nepotrebuje balk
send- mail, ale stac jakykoli balk, ktery poskytne program
Linuxove noviny 06/98
/usr/sbin/sendmail. Do spec-souboru se pak na- pse requires:
/usr/sbin/sendmail.
• conflicts — seznam balku, ktere jsou konfliktn (to jest nemohou
byt v systemu instalovany zaroven) s tm- to balkem. Tento tag nen
prlis casto pouzvan, pro- toze vetsina konfliktu je detekovana
systemem RPM uz z toho duvodu, ze navzajem konfliktn balky obsa-
huj soubory stejneho jmena a tedy nen mozne je pr- mo a zaroven
nainstalovat. Prklad conflicts: inn muze byt uvedeno ve
spec-souboru news serveru LeafNode, nechce-li tento byt instalovan
zaroven se serverem inn.
• autoreqprov — zapna/vypna automaticke generova- n polozek do
seznamu requires (sdlene knihovny ze spustitelnych programu a
interpretery skriptu) a do se- znamu provides (.so-jmena vsech
sdlenych kniho- ven, zabalenych v tomto balku). Povolene hodnoty
jsou yes a no.
Tagy architektury a operacnho systemu
• excludearch — upozorn RPM, aby se nepokousel kompilovat balk na
vyjmenovanych architekturach, protoze je znamo, ze na techto
platformach dany balk nefunguje. Prklad: nen-li balk schopen bezet
na 64-bitovych architekturach, muzeme napsat exclu- dearch: alpha
sparc64.
• exclusivearch — rka, ze balk muze byt postaven pouze na
vyjmenovanych platformach. Naprklad ba- lk dosemu muze bezet jen na
procesorech x86, tedy exclusivearch: i386 je na mste.
• buildarchitecture — specifikuje architekturu, pro kterou se balk
ma vytvaret, bez ohledu na to, na kte- re platforme momentalne bez
program rpm, ktery jej vytvar. Tento tag se pouzva zejmena pro
tvorbu bal- ku, nezavislych na architekture. Naprklad balk s fon-
ty, ktere jsou pricipialne prenositelne mezi platforma- mi, muze
obsahovat tag buildarchitecture: no- arch. Pri pouzit rpm -ba na
takovyto spec-soubor na libovolne platforme se vytvor balk s
koncovkou no- arch.rpm.
• excludeos — totez jako excludearch, ale tyka se operacnho systemu
msto architektury. Prklad: balk WINE by klidne mohl mt excludeos:
windows95 :-)
• exclusiveos — analogie k exclusivearch. Prklad: balk util-linux
jiste muze mt exclusiveos: li- nux.
• buildos — analogie k buildarchitecture.
Adresare
• prefix — pouzva se pri tvorbe relokovatelnych ba- lku (tj.
nezavislych na umsten). Je-li tento tag uve- den, mus kazda cesta v
sekci %files zacnat danym adresarem. Relokovatelny balk pak spravce
muze in- stalovat do adresare podle sve potreby (naprklad zvo- lit
mezi /usr/local a /opt). Vytvorit relokovatelny balk ovsem nen tak
uplne jednoduche – samotny soft-
16
ware mus byt nezavisly na umsten. Nesm tedy na- prklad obsahovat
zakompilovanou cestu ke konfigu- racnm souborum, PID-souborum a
podobne.
• buildroot — s tmto tagem jsme se setkali. Navzdo- ry svemu jmenu
neoznacuje adresar, ve kterem pro- bha kompilace, ale adresar, do
ktereho skript %in- stall uloz zkompilovane soubory. Je dobre mt
ten- to tag v balku, aby i bezny uzivatel mohl provadet je- ho
rekompilaci. Typicky se zde uvad jmeno ve stylu /var/tmp/balk-root.
Bez tohoto tagu by beznemu uzivateli selhala sekce %install,
jelikoz bezny uziva- tel pravdepodobne nemuze zapisovat do adresaru
jako /usr/bin nebo /usr/doc. Zaroven s definic toho- to tagu je
ovsem nutno upravit skript %install tak, aby instaloval do zde
specifikovaneho adresare. Zde jiz tedy nestac proste make install.
Casto ale zmena nen az tak slozita. Nekdy postacuje prkaz typu make
PREFIX=$RPM BUILD ROOT/usr install.
Zdrojove soubory a zaplaty
• source — jmeno nebo URL, odkazujc na zdrojovy archv, ze ktereho
se dany balk vytvar. Tagu sour- ce lze uvest i vce (dals se pak
jmenuj source1, source2 atd. Msto source lze take pouzt logic- ky
ekvivalent source0. Program rpm z hodnoty to- hoto tagu bere v
uvahu pouze cast za poslednm lo- mtkem. Soubor tohoto jmena se
hleda v adresari /usr/src/redhat/SOURCES. URL nebo cesta slouz
pouze jako odkaz na msto, odkud byl zdrojovy archv zskan. Prklad:
balk ssh ma tyto zdrojove soubory:
Source0: ftp://ftp.cs.hut.fi/pub/ssh/\ ssh-1.2.25.tar.gz Source1:
ftp://ftp.funet.fi/pub/crypt/mirrors/... Source2: sshd.init.rh50
Source3: ssh.pam Source4: ftp://ftp.cs.hut.fi/pub/ssh/\
ssh-1.2.25.tar.gz.sig
Zde vyjmenovane soubory mohou, ale nemusej byt pouzity ke tvorbe
binarnho RPM balku, kazdopadne ale jsou za- razeny do zdrojoveho
RPM balku (to je treba prpad vyse uvedeneho source4, ktery obsahuje
PGP podpis zdrojove- ho archvu a je distribuovan pouze pro usnadnen
overen pravosti tohoto archvu.
• patch — odkazuje zaplatu, pouzvanou pri sestavovan daneho
softwaru. Podobne jako u tagu source i zaplat muze byt vce a jsou
oznaceny tagy patch0 (coz je ekvivalent tagu patch), patch1, patch2
a tak dale.
• nosource — seznam csel zdrojovych souboru, ktere nemaj byt
zarazeny do src.rpm balku. Pokud licen- ce daneho softwaru
nepovoluje sren zdrojove podo- by balku v jine nez puvodn podobe,
nebo pokud z ji- neho duvodu nechceme nektery ze zdrojovych archvu
zahrnout do zdrojoveho RPM souboru, napseme jeho cslo do tagu
nosource. Pokud si pak uzivatel chce postavit binarn RPM soubor,
stac prslusny zdrojovy archv ulozit do /usr/src/redhat/SOURCES a
spus- tit rpm --rebuild na prslusny src.rpm soubor. Pr- klad: pokud
by naprklad RPM balk pgp byl distribuo- van z USA, podle tamejsch
zakonu by se vlastne mohl
Linuxove noviny 06/98
distribuovat jen predpis ke kompilaci — zdrojovy RPM soubor.
Pouzily by se tyto tagy:
Source0: ftp://.../pgp50.tar.gz Source1: ftp://.../rsaref.tar.gz
NoSource: 0 1
• nopatch — analogie k nosource pro soubory se za- platami.
Takto tedy vypadaj jednotlive polozky hlavicky spec-souboru. V prst
casti se podrobneji zamerme na dals sekce tohoto souboru a na
jednotlive faze tvorby RPM balku.
Zasmali jsme se! Pavel Jank ml., 12. cervna 1998
Ano, i v cervnu jsme se smali. Ja osobne naprklad pri horlive
diskusi na tema zda diakritika v konferenci li-
[email protected] ano ci
ne, zda se pokusme zmenit uznava- nou normu, zda ma ci nema pri
bootovan Linuxu na ob- razovce mrkat tucnak, jestli ma kernel mt
neco jako /proc/config, ktery bude obsahovat aktualn konfigura- ci
kernelu, kdy uz Linus konecne vyda dals pre-patch a kdy uz konecne
bude opravena chyba pri make menuconfig a zvuk v kernelu
(
[email protected]), jestli ma pdfTEX podporovat i jine
graficke formaty nez PNG a JPG apod.
Mame to vubec zapotreb se takhle hadat? Ja jsem jiz zjistil, ze
nikoli a vzdy msto toho, abych podobne „valky slov“ cetl a zapletal
se tak do diskus, radeji neco udelam. Nekdy uz ale tyto nesmysly
vydrzeti nemohu a potom se opet smeju, ale tentokrate jiz sam sobe.
Jsem vlastne stejny jako oni. . . Ach jo.
Objevil jsem zajmavy obrazek. Uhadnete, jak se jmenu- je tucnak na
obrazku? Pokud ne, odpoved’ naleznete na adrese (1).
V minulem csle Linuxovych novin jsme vyhlasili malou soutez.
Jestlipak si pamatujete, jak znela soutezn otazka? Pokud ano, ctete
dale, pokud ne, prectete si minule cslo. Shromazdilo se mi nekolik
odpoved, z tech nejvtipnejsch vybram:
17
Co se stane, kdyz Microsoft uvoln zdrojove kody OS Windows? Hackeri
odstran nestabiln cast a Billovi bude zase stacit 640kB. Miro
Bobovsky
Co se stane? To je jasny: Vetsina programatoru Microsoftu si bude
muset najt uplne jine zamestnan, protoze jako programatory uz je
nikdo nezamestna. Texty budou vydany knizne a zapsany do
Guinnessovy knihy rekordu jako nejdels vtip na svete. Petr
Zima
Co se stane? Bohuzel tm asi zlikviduj vetsinu vyvojaru otevrenych
systemu, protoze ti si bud’:
• zlom vaz od vehementnho kroucen hlavy
• uchechtaj se k smrti
• uplacou se k smrti
• nebo prasknou vzteky, kdyz najdou kousky svych vlastnch kodu
naiplementovanych do MS Windows zcela nefunkcnm zpusobem. . . Pavel
Martak
Poslednm zajmavym prspevkem je neobvykly soubor, ktery najdete pri
Linuxovych novinach. Jmenuje se Co- SeStane.mpg a jedna se o Mpeg
Video. Prosm prohled- nete si jej a radujte se, vzdyt’ na svete je
tolik krasnych vec (pravda, co muze byt hezcho nez Linux 2.1.106 na
Quad Pentiu II ;-). Tento prspevek, ci spse jeho autor — v nas
soutezi zvtezil. Prosm jej, aby mi napsal.
1 Tucnak http://www.chalice.gen.nz/linpic/
Linuxove noviny a jejich sren
Linuxove noviny vydava Ceske sdruzen uzivatelu operac- nho systemu
Linux (1) pro sve prznivce a sympatizan- ty. Vlastnkem autorskych
prav k tomuto textu jako celku je Pavel Jank ml.
(
[email protected]). Autorska prava k jednotlivym clankum
zustavaj jejich autorum.
Tento text muze byt sren a tisten bez omezen. Pokud pouzijete cast
nektereho clanku zde uverejneneho v ji- nych dlech, muste uvest
jmeno autora a cslo, ve kterem byl clanek uverejnen.
Linuxove noviny jsou otevreny kazdemu, kdo by chtel nasim ctenarum
sdelit neco zajmaveho. Prspevky (ve formatu cisteho textu v kodovan
ISO 8859-2) poslej- te na adresu (2). Autor nema narok na financn
odmenu a souhlas s podmnkami uvedenymi v tomto odstavci. Vy-
davatele si vyhrazuj pravo rozhodnout, zda Vas prspevek uverejn, ci
nikoli.
Registrovane znamky pouzite v tomto textu jsou ma- jetkem jejich
vlastnku.
Chtel bych podekovat Fakulte informatiky Masaryko- vy university v
Brne, INET, a.s., Juraji Bednarovi a spo- lecnosti OptiCom za
poskytnut diskoveho prostoru pro Linuxove noviny.
Linuxove noviny muzete najt na akademicke sti CESNET (3), na sti
IBM Global Network na adrese (4), na serveru casopisu Netacik (5),
ktery je pripojen do slo- venskeho SIXu, prpadne na serveru
spolecnosti OptiCom (6).
Linuxove noviny jsou k dispozici take ve formatu HTML na adrese
(7).
1 Ceske sdruzen uzivatelu operacnho systemu Linux
http://www.linux.cz/czlug
2 Adresa redakce mailto:
[email protected]
4 Linuxove noviny na sti IBM Global Network
ftp://ftp.inet.cz/pub/People/Pavel.Janik/noviny
5 Slovenske zrcadlo Linuxovych novin
ftp://netacik.sk/pub/linux/cz-noviny
6 Linuxove noviny – OptiCom http://www.mathew.sk/noviny
7 Linuxove noviny ve formatu HTML http://www.linux.cz/noviny
Sefredaktor: Pavel Jank ml. mailto:
[email protected]
sazba: Ondrej Koala Vacha mailto:
[email protected] jazykove
korekce: Bohumil Chalupa mailto:
[email protected] preklady:
Hanus Adler mailto:
[email protected] prevod do HTML: Pavel Juran
mailto:
[email protected]
Abstract
Zhodnocení
Grasp
Jak psát lokalizované programy
Adresáøe