Dienstag, 3. Juni 2008

Prolog auf Mac OS X installieren

Für alle, die in PROLOG programmieren müssen und es auf Mac OS X nicht gescheit zum Laufen bringen können :)

Erstmal was man alles braucht, um SWI-Prolog unter Mac OS X laufen zu lassen:
1. X11
2. Darwinports
3. Readline (mehr Infos http://readline.darwinports.com/)
4. SWI Prolog
5. Pfade definieren damit die Konsole die Libraries laden kann.
6. Für diejenigen, die Terminal.app bevorziehen, sollte man noch den Pfad zu X11 definieren.

1. X11 laut Anweisungen installieren: entweder von der mitgelieferten DVD oder aus anderen Quellen.

2. Darwinports runterladen und installieren (http://darwinports.com/) Nach der Installation selfupdate machen (damit man Updates macht, muss man sich erstmal als root anmelden können): - wenn ihr gerade nicht als Admin am Mac angemeldet seid, dann einfach in der Konsole folgende Befehle eingeben, um sich in root anzumelden

su [username]
Password: [Adminpassword]
sudo bash Password [Adminpassword]

Dass ihr als root angemeldet seid, erkennt ihr an #-Zeichen (root#). Jetzt kann man Darwinports updaten, dafür den Befehl eingeben:

port -d selfupdate

Darwinports lädt automatisch alle nötigen Updates runter.

3. Jetzt, immer noch als Root angemeldet, kann man mithilfe von Darwin Ports SWI-Prolog downloaden und installieren lassen. Allerdings soll noch man noch einen Port namens readline installieren, bevor man mit Prolog anfängt. Um readline zu installieren, sollte man einen Ordner einlegen, falls nicht da ist: unter opt/local/bin einen Ordner "portslocation" und drinnen noch einen Ordner "dports" und da drinnen noch einen "readline". Dann in diesen Ordner wechseln und readline installieren:

cd /opt/local/bin/portslocation/dports/readline
port install readline


Dann kommt ungefähr das:

---> Fetching readline
---> Verifying checksum for readline
---> Extracting readline
---> Configuring readline
---> Building readline with target all
---> Staging readline into destroot
---> Installing readline
etc.

4. SWI-Prolog 5.6.54 installieren mit folgendem Befehl:

port install swi-prolog

SWI-Prolog wird installiert. Nach der Installation, falls keine Fehlermeldung, überprüft die installierten Ports:

port installed

Folgende Ports müssen installiert sein (bei mir readline+swi prolog):

The following ports are currently installed:
apache-ant @1.7.0_0 (active)
expat @2.0.1_0 (active)
gawk @3.1.6_0 (active)
gettext @0.17_3 (active)
gmp @4.2.2_1 (active)
hamcrest-core @1.1_0 (active)
jpeg @6b_2 (active)
junit @4.4_0 (active)
libiconv @1.12_0+darwin_8 (active)
libmcrypt @2.5.8_0 (active)
ncurses @5.6_0 (active)
ncursesw @5.6_1 (active)
readline @5.2.007_0 (active)
swi-prolog @5.6.52_0+mt (active)
zlib @1.2.3_1 (active)


So soll es auch bei Euch aussehen, wenn ihr readline und swiprolog erfolgreich installiert habt.

5. Alles nötige ist jetzt also installiert. Das einzige, was fehlt, ist die Umgebungsvariable(n). Dafür in bash-directory die Datei ".bashrc" erstellen. Das geht mit folgenden Befehlen (immer noch als Root):

cd /
cd bin/ cat >.bashrc

[im Input folgendes eingeben]
# This allows using Prolog graphics if you use Terminal.app
if [ -z "$DISPLAY" ]; then export DISPLAY=:0; fi
# This sets up the path
PATH=$PATH:/opt/local/bin

[mit ctrl+c Eingabe beenden]

Ihr sollt also im bin/ eine Datei ".bashrc" haben, wo die Umgebungsvariable definiert ist. Jetzt kann man eigentlich loslegen. Allerdings mit emacs-Editor nur in der X11-Konsole. Wem das recht ist, kann schon damit Feierabend haben :) Wer aber (wie ich) X11 als Konsole nicht benutzt, soll für Terminal.app (sowie iTerm oder Ähnliches) extra den Pfad zu X11 exportieren. Dafür eine Profil-Datei ".profile" ergänzen (falls bereits vorhanden) oder erstellen unter /Users/[Benutzername]. Da gebt ihr ein:

# Setting the path for MacPorts. export PATH=/opt/local/bin:/opt/local/sbin:$PATH

Jetzt könnt ihr im X11-Terminal mit dem Befehl "swipl" PROLOG starten. Falls ihr iTerm oder Terminal.app benutzt, dann lasst X11 im Hintergrund laufen (sonst funktioniert der Emacs wiederum nicht :) Achtung: Falls ihr Darwinports schon installiert habt und eine Fehlermeldung bekommt, dass swipl die entsprechenden Libraries nicht laden kann, kann ist etwas bei Darwinports schief gelaufen. Ich habe auch das Problem gehabt und die einzige Lösung, die ich gefunden habe, war es, jeden einzelnen installierten Port zu entfernen. Anschließend das ganze Verzeichnis auch löschen:

port uninstall [portname]
rm -rf /opt/local /Applications/DarwinPorts /Library/Tcl/darwinports1.0 /etc/ports


Dann neuinstallieren. Das war's dann eigentlich. Falls ihr Fragen oder Probleme habt, einfach melden!

Viel Erfolg!!! :)