Instalace
Snažil jsem se instalaci nanejvýš usnadnit a aby se daly veškeré důležité
vlastnosti C-SaCzechu nastavit či přispůsobit. Program vznikal v prostředí
operačního systému Unix a dále popisovaný postup instalace předpokládá, že
bude provozován v tomto systému. Jeho přenesení
do jiného prostředí je sice principiálně možné, ale
narazíme na množství problémů.
Distribuce programu je uložena v souboru csaczechXX.tar.gz (kde XX
je číslo verze), který můžete získat na URL
http://www.fi.muni.cz/~dolecek/c-saczech/src/
Distribuci je třeba rozbalit použitím příkazu
gunzip < csaczechXX.tar.gz | tar xvf -
Soubory budou rozbaleny do podadresáře csaczechXX. Poté následuje fáze
přizpůsobení vašim konkrétním podmínkám. Veškeré zásahy se týkají souboru
makeit, který je součástí distribuce.
V tomto souboru následují proměnné, jejichž hodnoty možná uznáte za
vhodné změnit. Jsou to:
- Proměnné ovlivňující chování budoucího C-SaCzechu:
- SHELLPATH
- měla by obsahovat příkaz (včetně cesty), kterým se spustí
nějaký Unix shell. V tomto shellu bude zpracován
whichcode. Uveďte proto takovou cestu k shellu,
kterou mohou použít CGI skripty (pokud váš server při spuštění
mění kořen systému souborů, může se lišit od obvyklé cesty;
to platí např. i v případě, kdy WWW server běží na jiném
počítači než jsou WWW stránky). Doporučuji použít shell
sh, ksh, bash, nebo zsh, pro ty byl
whichcode otestován, že korektně funguje.
- Default - /bin/sh.
- DEFSOURCE
- Implicitní kódování zdrojových textů stránek. Zde uveďte kódování, ve
kterém bude pravděpodobně vytvořena většina Vašich stránek. Jestliže
si stránka nepředepíše zdrojový kód, bude jako výchozí pro její
překódování použit tento kód. Platné názvy kódů zjistíte
prohlédnutím souboru nazvy. Nedělá se rozdíl mezi
velkými a malými písmeny.
- Default - ISO-8859-2.
- CGIPATH
- Cesta k CGI skriptům. Obsahem této proměnné by měl být začátek cesty
(část uváděná bezprostředně za jménem serveru), která povede ke
konverzním skriptům. Jestliže konverzní skripty uložíte do obecného
adresáře, obsahujícího ostatní CGI skripty a budete se na ně
odkazovat pomocí URL
http://www.kdesi.cz/cgi-bin/toASCII
a podobně, ponechte implicitní hodnotu "/cgi-bin".
Cestu uvádějte bez závěrečného zpětného lomítka.
- Default - /cgi-bin
- CGISUFFIX
- Přípona CGI skirptů. Pokud váš server vyžaduje, aby CGI skripty byly
vyznačovány určitou konkrétní příponou (nejčastěji .cgi), uveďte
ji jako hodnotu této proměnné. Je-li server dostatečně inteligentní na
to, aby poznal CGI skript podle cesty, doporučuji ponechat jako hodnotu
proměnné prázdný řetězec.
- Default - nenastaveno.
- GETMETHOD
- Způsob, kterým má C-SaCzech získávat kódované texty. Můžete si vybrat jednu
z následujících alternativ (musí být vypsáno malými písmeny):
- file
- Soubory budou vyzvedávány přímo ze systému souborů počítače. Tento
způsob je efektivní, ale umožňuje kódovat jen texty, které jsou
přítomny v podobě souborů. Nelze např. kódovat výstupy z CGI
skriptů.
- http
- V tomto režimu práce C-SaCzech získává kódované dokumenty od svého
serveru prostřednictvím HTTP protokolu. Tedy zahraje si na WWW
klienta, odstraní své vlastní jméno z dotazu, který mu byl položen,
a položí serveru tento modifikovaný dotaz. Data, která získá jako
odpověď, posoudí a buď překóduje (jestliže se jedná o text, přesněji
MIME typ text/html nebo text/plain) nebo propustí
beze změny.
Tento způsob je podstatně méně efektivní (obsloužení každého dotazu
vyvolává jeden dotaz navíc), umožňuje však překódovat vše, co je na
serveru k dispozici - včetně výstupů z CGI skriptů.
Zvolíte-li tuto variantu, nemá žádný význam nastavení proměnné
DEFAULTFILE a příznaků
TIMESERVICES a IFMODIFIEDSINCE.
- guess
- C-SaCzech se pokusí automaticky určit pro každý dotaz, kterou z výše
uvedených metod má použít. Využívá k tomu hodnotu proměnné
CGIPATH. Jestliže je začátek
cesty ke kódované informaci (část URL, uvedená za voláním skriptu)
shodný s CGIPATH, použíje pro získání dokumentu HTTP. V
opačném případě jej vyzvedne přímo ze systému souborů.
Metoda GUESS se snaží o rozumný kompromis mezi předchozími
alternativami. Určení, kdy použít který způsob, však rozhodně není
dokonalé.
- Default - GUESS.
- DEFAULTFILE
- Obsahuje jméno souboru, který má být uživateli předložen, pokud zadá
pouhé jméno adresáře. Většinou se pro tento účel používá
index.html. Pokud uživatel požaduje /texty/, ve
skutečnosti obdrží /texty/index.html.
- Default - index.html.
- TIMESERVICES
- Jedná se o první z příznaků. Vypnuto = nemá žádný obsah, zapnuto
jinak. Příznak
TIMESERVICES udává, zda se lze spolehnout výsledky funkce
stat programovacího jazyka C, kterou C-SaCzech využívá pro
získání informací o velikosti a době vzniku souboru.
- Default - nastaveno.
- IFMODIFIEDSINCE
- Má skript reagovat na hlavičku If-Modified-Since? Pokud vámi
používaný server nepředává CGI skriptům informace z HTTP hlaviček dotazu
(v proměnných prostředí HTTP_hlavička),
nedostává C-SaCzech
potřebné informace. V takovém případě volbu vypněte.
- Default - nastaveno.
- DECODEQUERY
- Pokud nechcete, aby C-SaCzech překódovával i parametr z příkazové
řádky, tuto promennou nedefinujte.
- Default - nastaveno.
- ADDBAR
- Pokud je nastavena tato proměnná, C-SaCzech bude reagovat
na text <!--BAR--> (popř.<!--BAR E-->)
tak, že v daném místě vypíše text, umožňující změnu kódování
dokumentu; podle toho, která varianta je použita,
doplní buď českou hlavičku a závěr (obsah proměnných
HEADBARTEX a TAILBARTEXT), nebo
anglický (EHEADBARTEX a ETAILBARTEXT).
- Default - nastaveno.
- ALLWAYSADDBAR
- Pokud je tato proměnná nastavena, C-SaCzech vypíše lištu vždy;
pokud text neobsahuje řetězec <!--BAR-->, vypíše
ji na konci dokumentu. Samozřejmě pouze tehdy, pokud daný
dokument překódovává (takže obrázky jsou v pohodě).
- Default - nastaveno.
- LONGNAMEBAR
- Pokud je nastavena, v nabídce kódování se zobrazí celá jména
kódů a ne pouze trojpísmenné zkratky.
- Default - nenastaveno.
- HEADBARTEXT, EHEADBARTEXT
- Text, který se vypíše před lištu s nabídkou překódování.
HEADBARTEXT se vypíše v české verzi, EHEADBARTEXT
v anglické.
- Default - viz makeit.
- TAILBARTEXT, ETAILBARTEXT
- Text, který se vypíše za lištu s nabídkou překódování. Standartně
je to "<HR>", tedy vodorovná linka.
Opět TAILBARTEXT je pro českou lištu,
ETAILBARTEXT pro anglickou.
- Default - "<HR>".
- ADDWHICHCODE
- Pokud je nastavena, v automaticky generované nabídce kódování
se zobrazí i obsah
proměnné BARWHICHCODENAME, který bude odkazem na
volbu pomocí standartního whichcode.
Má smysl pouze tehdy, pokud je nastaveno ADDBAR
.
- Default - nastaveno.
- BARWHICHCODENAME
- Text, který se vypíše do lišty.
- Default - "whichcode".
- MULTIPART
- Nastavením této proměnné bude zkompilovaný C-SaCzech podporovat
více různých dokumenů v jednom dokumentu; jak to funguje
se můžete podívat na tyto příklady.
C-SaCzech bude reagovat na <--PART XXXXX-->
odpovídajícím tak, že podle názvu zjistí, zda má danou
část vypsat (pokud byl spuštěn jako např. toASCII.eng.cgi,
bude vypisovat části <--PART eng-->).
- Default - nastaveno.
- Proměnné používané pouze v čase kompilace:
- CC
- Tato proměnná obsahuje jméno kompilátoru, který bude použit
pro vytvoření spustitelného C-SaCzechu. cc je standartní
a programy jím zkompilované by měly běžet bez problémů.
gcc je lepší, ale některé WWW servery odmítají spustit
jím zkompilované programy. Na systémech BSD/OS
se používá shlicc.
- LINK
- Tuto proměnnou je třeba definovat na systémech, které standartně
nepřilinkovávají knihovny socket a nsl.
Podle mých zkušeností je třeba knihovny přilinkovat
na těchto systémech:
SunOs, SCO Unix
naopak není třeba na:
BSD/OS, Linux, IRIX
Pokud zkusíte zkompilovat C-SaCzech a kompilátor vypíše
zprávu "undefined" a dlouhý seznam jmen,
je třeba každopádně tyto knihovny nalinkovat. Pokud by
ani to nepomohlo (což by už bylo vážné) nebo by
se vyskytly jiné problémy, stále ještě můžete
kontaktovat autora, který
se vynasnaží pomoci.
- COMPILESOURCE, CONSTSOURCE, COMPILETARGET
- Slouží jen pro snadnější změnu konfigurace skriptu makeit.
COMPILESOURCE obsahuje jméno souboru, který se bude
překládat, CONSTSOURCE jméno souboru s kontantami
(tento soubor je skriptem makeit
měněn podle nastavení proměnných popsaných v první části).
Proměnná COMPILETARGET se použije pro určení
jména zkompilovaného souboru. Soubor $COMPILESOURCE se zkompiluje
na to$COMPILETARGET$CGISUFFIX.
Soubor whichcode.src slouží instalačnímu skriptu makeit jako
základ pro budoucí skript whichcode, nabízející uživateli volbu kódu.
Tím je ukončena konfigurační fáze. Jako další krok spusťte
./makeit
Jeho výsledkem bude zkompilovaný to$COMPILETARGET a ostatní
soubory toXXXX, které jsou symbolické odkazy na tento soubor a
spustitelný whichcode.
Je vhodné navíc pro skript whichcode zavést synonyma
to__CHARSET__ a to, pokud odkaz na některý kódovaný
soubor neprošel C-SaCzechem nebo jím prošel se ztrátou typu
cílového kódování. Při standartní instalaci se tedy ještě vytvoří
soubory to__CHARSET__, to, které jsou
odkazy (linky) na skript whichcode.
Všechny tyto soubory
přesuňte do adresáře s CGI skripty tak, aby jejich umístění vyhovovalo
identifikaci, uvedené ve výše zmiňované proměnné
CGIPATH -
například
mv to* whichcode /www/cgi-bin/
Tím je instalace ukončena.
Přenos do jiného operačního systému
Potenciální přenos na jiný OS než Unix není tak jednoduchý jako
u původního
SaCzechu. Musí se totiž zajistit, aby fungovaly na daném OS sockety,
což nemusí být až tak triviální
(na MSDOSu nevím , ve Woknouz by to možná stačil Winsock)
a adekvátně změnit
názvy souborů, které se mají "inklůdnout".
Pokud jsou v cílovém systému jiné oddělovače jmen souborů, je
třeba je také adekvátně změnit ve zdrojovém csaczechXX.c.
Také by se musel předělat skript makeit, aby korektně
fungoval i pod novým operačním systémem. Dále platí to
co u SaCzechu:
Je třeba rozbalit distribuční soubor, ale tar a GNU zip jsou
dostupné pro lecjaké systémy.
Potenciálními zdroji problémů mohou dále být:
- Dlouhá jména souborů.
- Způsob volání shellu ve whichcode.
V Unixu je program, který má zpracovávat
dotyčný soubor, identifikován jeho prvním řádkem ve formátu
#!program. Vůbec netuším, zda se v MS-Windows NT či
něčem podobném dá tato informace zakomponovat přímo do
interpretovaného souboru a jak se tam vlastně spouštějí CGI skripty.
- Použití funkce chmod(). Ta se v C-SaCzechu používá
v instalačním skriptu makeit k označení,
že whichcode je spustitelný. V jiném prostředí budete
pravděpodobně muset spustitelnost vzniklého skriptu
whichcode vyznačit jinak.
Zpět
Tato stránka je součástí dokumentace programu
C-SaCzech.