Installieren von esl Letzte Aktualisierung: 07.11.2007 -------------------------------------------------------- Neu: Update-Hinweise, siehe Punkt 4. 0. Voraussetzungen Pruefen, ob guile installiert ist und funktioniert. Die Eingabe guile --version sollte eine Version anzeigen. Bei mir ist es 1.8.1. Jede 1.6.* und 1.8.* sollte funktionieren. Ein anderer Versuch. guile starten mit guile Dann am guile-Prompt zum Beispiel eintippen: (+ 7 8) oder (* 5 (+ 3 7)) Hinweis: Wahrscheinlich kann die Eingabezeile nicht editiert werden (ausser mit backspace). guile beenden mit Control-D, alternativ sollte (quit) oder (exit) auch funktionieren. Ausserdem muss (glaube ich) die readline dynamic library vorhanden sein, damit esl richtig funktioniert. Aber das ist wohl normalerweise der Fall. 1. Als root: in /usr/local das directory esl anlegen (also /usr/local/esl) 2. Als root: in /usr/local/esl die Datei esl.tar.gz (beziehungsweise esl_xxx.tar.gz) speichern (download, die Datei ist etwa 200 kbyte gross, kilobyte, nicht megabyte), dann cd /usr/local/esl gunzip esl_xxx.tar.gz tar xvf esl_xxx.tar cp guesl /usr/local/bin/guesl cp gmesl /usr/local/bin/gmesl guesl und gmesl sind Startskripte fuer esl; gmesl hat nur Sinn, wenn slib installiert ist (siehe letzten Absatz von Punkt 3). /usr/local/bin/guesl als Symlink auf /usr/local/esl/guesl sollte auch funktionieren (anstelle der letzten cp-Anweisung), entsprechend mit gmesl. Die tar-Datei (esl_xxx.tar) wird nach diesen Installations- schritten nicht mehr gebraucht. 3. Als normaler user im Homedirectory mkdir esl Nach ~/esl folgende Dateien von der Website speichern: plots.e plots1_0.eps plots2_0.eps Dann esl ausprobieren cd ~/esl esl starten mit guesl oder gmesl (letzteres nur, wenn auch slib installiert ist). Eintippen, zum Beispiel 7+8; Der Prompt steht vor der eigentlichen Eingabezeile, das heisst, man tippt in eine zunaechst vollkommen leere Zeile. Das ist deshalb so, weil das readline von guile nicht richtig in diesem Kontext funktioniert. Editieren der Eingabezeile sollte funktionieren, auch die Eingabe-History-Funktion (etwa wie am bash-Prompt), zusaetzlich Funktion: Bei Eingabe einer schliessenden Klammer sollte der Cursor kurzzeitig auf die entspre- chende oeffnende Klammer springen. Verlassen von esl mit Control-D (eventuell mehrmals Control-D tippen). Eintippen vom shell prompt in ~/esl : guesl plots Das sollte esl starten, esl sollte die Datei plots.e verarbeiten, und dabei die Dateien plots1.eps plots2.eps erzeugen. Dann sollte sich esl beenden. Die erzeugten Dateien sollten identisch sein mit plots1_0.eps beziehungsweise plots2_0.eps Die eps-Dateien kann man mit gv (oder anderen eps Viewern) ansehen. In gv kann man die Ansichtsoption "antialias" probieren, das ist manchmal (nicht immer) besser. Besser vor allem bei Texten. Mehr info zu esl nach start mit guesl durch help "overview"; Der Unterschied zwischen guesl und gmesl wird bei diesen Beispielen nicht wirksam. gmesl hat zusätzlich pattern-matching-Funktionen, siehe ? patternmatch 4. Update Wahrscheinlich ist es am einfachsten, alle Dateien aus /usr/local/esl zu loeschen (inklusive rekursivem Loeschen der Subdirectories), die neue esl_xxx.tar.gz in /usr/local/esl zu kopieren und weiter Punkt 2 (oben) abzuarbeiten. Anmerkungen ----------- Bei mir funktioniert das alles mit Suse 10.3 und guile 1.8.1, sowie mit Suse 10.1 und guile 1.6.7. Es hat funktioniert mit kanotix bughunter 9A und X (Fix 2), ausserdem mit Suse 9.1 (jeweils guile 1.6.4). Bei kanotix wurde guile automatisch mit installiert, bei Suse nicht. Bei guesl plots wird auch die Datei .tempplot.eps erzeugt. Sie ist identisch mit der letzten erzeugten eps-Datei. Man kann sie auch loeschen. Die Datei plots.e enthaelt esl-Code zur Erzeugung von plot-Dateien. Mit guesl kann man auch mehrere Dateien mit esl-Code laden: guesl file1 file2 file3 ... Die Dateien file1.e, file2.e, ... muessen im aktuellen Verzeichnis sein. Bei esl kann man Input im Editor bearbeiten. Am esl prompt: ew(); eingeben. Das startet den Editor joe. Dort kann man esl code eintippen. Beim Verlassen des Editors mit Control-k x wird der Code ausgefuert. Beim naechsten Aufruf ew(); wird der vorige Code editiert.