SAI, SS 2005, Allgemeine Informatik II

Das Ulmer Oberon-System für die Linux/I386-Plattform


Dank Christian Ehrhardt gibt es eine Portierung des Ulmer Oberon-Systems für die Linux-Plattform. Zu bedenken ist nur, daß sich diese noch im Alpha-Zustand befindet (d.h. mit Fehlern, Problemen und Unschönheiten muß noch gerechnet werden) und sich in der Benutzung unterscheidet. Auch sind einige Grundkenntnisse für Linux erforderlich, um dieses System unter Linux nutzen zu können. Wenn jedoch alles klappt, können Beispiele aus der Vorlesung und Lösungen für Übungsaufgaben unverändert übertragen und zur Ausführung gebracht werden. Wenn es nicht klappt, können Sie gerne zu uns kommen. Entweder mit Ihrem Notebook (das macht es einfacher) oder detaillierten Fehlerberichten mitsamt allen Fehlermeldungen und einem Installationsprotokoll.

Wichtig: Für die Installation kommen nur neuere Maschinen in Frage, die genügend Hauptspeicher mitbringen (empfohlen sind mindestens 256 Megabyte). Bitte quälen Sie damit nicht alte Maschinen mit zu wenig Hauptspeicher. Da kann eine Übersetzung tatsächlich Stunden dauern, die sonst binnen Sekunden erledigt ist.

Wir haben das Ulmer Oberon-System bereits erfolgreich unter SuSE 9.1, SuSE 9.2, Debian Woody, Gentoo und Fedora 2 installiert. Letzteres allerdings erst ab Version 0.7.6. Ab Version 0.7.13 werden auch 64-Bit-Systeme unterstützt (getestet auf AMD-Athlon-64-Systemen unter SuSE 9.2 und Fedora 2). Grundsätzlich kann es bei einigen Linux-Kernels Probleme geben, da das Ulmer Oberon-System nicht die C-Bibliothek nutzt und wir daher gelegentlich die ersten sind, die neue Kernel-Bugs entdecken dürfen.

Sollten Sie jedoch ein glücklicher Besitzer eines UltraSPARC-Systems sein, das unter Solaris läuft, dann steht ein Solaris-Paket für Oberon zur Verfügung.

Kürzliche Änderungen:

0.8.6 Einige Fehler im Compiler wurden behoben, die zu einem Absturz oder zu unvollständigen Fehlermeldungen führen konnten.
0.8.5 Einige Fehler wurden im Compiler behoben (unvollständige Laufzeitüberprüfungen bei Typerweiterungen und einige Crashes des Compilers beim Übersetzen). Ferner ist XPlotters nun toleranter bezüglich von Extremfällen mit minimaler Breite oder Höhe.
0.8.4 Ein Wechsel von 0.8.3 zu 0.8.4 ist nur für diejenigen interessant, bei denen eine Verbindung zum X-Server nicht gelang, weil der Authorisierungs-Eintrag nicht gefunden wurde. Die Fehlermeldung lautete dann ``no matching entry found''. Die neue Version ist jetzt toleranter, falls als Rechnername ein voll-qualifizierter Name konfiguriert worden ist. Wenn jedoch X-Anwendungen vorher bereits funktionierten, dann gibt es keinen Grund, auf 0.8.4 zu wechseln.
0.8.3 Im Vergleich zu 0.8.2 gibt es nur eine kleine Verbesserung des Moduls TurtleGraphics, die Crashs vermeidet, wenn die Grafik leer oder in einer der beiden Dimensionen unendlich schmal ist (z.B. nur ein senkrechter Strich).
0.8.2 Im Vergleich zu 0.8.1 gibt es nur eine minimale Änderung im Modul XPlotters, die dafür sorgt, daß das darzustellende Fenster auch wirklich auf den Bildschirm paßt.
0.8.1 Leider hat sich in die Version 0.8 noch ein Fehler eingeschlichen, der dazu führte, daß sich UNIX-Domain-Sockets nicht öffnen ließen. Das betrifft insbesondere Versuche, das lokale X-Display zu eröffnen.
0.8 Neben einer Reihe von Fehlerbehebungen (insbesondere auch beim Compiler) ist insbesondere eine erste Unterstützung für X-Windows hinzugekommen. Diese ist relevant für die Übungsblätter zu Beginn des Sommersemesters.

Neu: Für Gentoo-Systeme steht inzwischen ein Gentoo-Paket zur Verfügung, das freundlicherweise von Dominik Brugger zur Verfügung gestellt worden ist. Entpacken Sie ulm-oberon-i386-0.8.6.ebuild.tar.bz2 in $PORTDIR_OVERLAY und installieren Sie es danach mit emerge ulm-oberon-i386.

So können Sie loslegen:

  1. Falls bei Ihnen die Dienste pons und cdbd von einer früheren Installation her noch laufen, sollten diese zunächst beendet werden:

    onsshut -a $OBERON/var/pons/shutdown /pub/pons
    

    Wenn onsshut erfolgreich ist, erhalten Sie eine Meldung ``onsshut: fatal: /pub/pons: cannot receive message from remote object''. Falls bei Ihnen die Dienste jedoch unter /etc/init.d laufen, dann sollten Sie diese als Super-User mit

    /etc/init.d/pons stop
    

    beenden. Den zweiten Dienst cdbd müssen Sie nicht beenden, wenn Sie pons terminieren, da cdbd automatisch terminiert, wenn der Oberon-Namensdienst verschwindet.

    Wenn Sie Ihre die alten Datenbanken von pons und cdbd in den entsprechenden Verzeichnissen unter $OBERON/var nicht löschen, bleiben diese bei einer Neu-Installation erhalten. Wenn Sie load_libsources im Rahmen der Installation aufrufen, stehen dann die neuen Bibliotheks-Quellen neben den alten Quellen und Ihren eigenen zuvor eingefügten Quellen zur Verfügung, wobei automatisch immer die neueren Quellen verwendet werden.

  2. Laden Sie sich die aktuelle Version (zur Zeit 0.8.6) auf Ihr Linux-System und packen Sie diese unter /tmp/oberon oder einem anderen temporären Verzeichnis aus:

    mkdir /tmp/oberon && cd /tmp/oberon
    wget ftp://ftp.mathematik.uni-ulm.de/pub/soft/oberon/ulm/i386/ulm-oberon-i386-0.8.6.tar.gz
    tar xvfz ulm-oberon-i386-0.8.6.tar.gz
    cd ulm-oberon-i386-0.8.6
    

  3. Falls bei Ihnen die libelf-Bibliothek nicht installiert ist oder diese fehlerhaft sein sollte (ist bei Ubuntu Linux, Fedora 2 und diversen Versionen von Red Hat der Fall), dann würde die Übersetzung oder die nachfolgende Verwendung des tof2elf-Werkzeuges nicht funktionieren. Sie können in diesem Falle eine fertig übersetzte statische Fassung herunterladen und so in das ausgepackte System hineinkopieren, daß nicht mehr versucht wird, es neu zu bauen:

    make download_tof2elf
    

  4. Jetzt müssen Sie sich entscheiden, wohin Sie das Oberon-System installieren möchten. Kandidaten wären beispielsweise /usr/local/oberon oder ~/oberon. Im folgenden Beispiel wird von /usr/local/oberon ausgegangen. Sie können aber auch jedes andere (nach Möglichkeit noch nicht existierende) Verzeichnis wählen:

    make DestDir=/usr/local/oberon
    

  5. Die Umgebungsvariablen PATH und MANPATH können Sie automatisch anpassen, wenn Sie das rc-Skript von Ihrer Shell einlesen lassen:

    . /usr/local/oberon/rc
    

    Es empfiehlt sich, dies auch in ~/.profile oder in /etc/profile aufzunehmen. Unter Gentoo Linux sollte rc unter /etc/env.d installiert werden:

    cp /usr/local/oberon/rc /etc/env.d/oberon
    env-update
    

  6. Dann sollten Sie den Namensdienst für Oberon und die Datenbank für den Compiler starten. Dies ist jeweils ``per Hand'' möglich oder in einer automatisierten Form, die auch nach jedem Neustart zur Ausführung gelangt. Für letzteres gibt es allerdings bislang nur unter SuSE direkte Unterstützung.

    Ob die beiden Dienste korrekt arbeiten, können Sie leicht überprüfen, indem Sie mit Hilfe von nsh einen Blick in das Namenssystem von Oberon werfen:

    borchert@portia:~> nsh
    * ls
        pub
    * cd pub
    * ls
        cdb
    * cd cdb
    * ls
        oberon
    * cd oberon
    * ls
        cdbd
        modules
    * q
    borchert@portia:~>
    

  7. Danach sind alle beiliegenden Quellen der Oberon-Bibliothek in die Datenbank zu laden:

    load_libsources
    

    Dies ist nur einmalig erforderlich.

  8. Wenn alles soweit geklappt hat, können Sie mit dem in dem ausgepackten Verzeichnis liegenden ersten Beispiel sehen, ob es tatsächlich funktioniert:

    borchert@portia:~/Hello> obci Welcome.o[dm]
    borchert@portia:~/Hello> obbuild Welcome
    borchert@portia:~/Hello> ./Welcome
    Welcome to Ulm's Oberon System on the I386 platform!
    borchert@portia:~/Hello>
    

    Bitte haben Sie auch für so ein winziges Programm Geduld. Da zu Beginn in der Datenbank nur Quellen enthalten sind, muß der Compiler zunächst recht viele Module übersetzen, bevor er zu Welcome kommt.

  9. Erfolgsmeldungen an borchert@mathematik.uni-ulm.de sind willkommen :-)

Einige Fragen und Antworten zu dem Ulmer Oberon-System unter Linux


Andreas Borchert, 22. August 2005