Τελευταία ενημέρωση: 22/10/2207 23:43

Χρήση των CGAL/CGAL-Python στο εργαστήριο Linux

Οι βιβλιοθήκες CGAL/CGAL-Python έχουν εγκατασταθεί στο εργαστήριο Linux και είναι προσβάσιμες από τα μηχανήματα linux{01-12}. Μπορείτε λοιπόν να κάνετε login με τον κωδικό σας και να τις χρησιμοποιήσετε. Για την μεταγλώττιση προγράμαμτος c++ που χρησιμοποιεί τη CGAL αλλά και για τη χρήση της CGAL-Python είναι απαραίτητο να ορίσετε την ακόλουθη μεταβλητή περιβάλοντος (στο bash shell):

export CGAL_MAKEFILE=/home/users/compgeom/lib/cgal/321/make/makefile_i686_Linux-2.6_g++-4.0.3

Για να χρησιμοποιήσετε τα bindings για Python, εκτός της παραπάνω μεταβλητής περιβάλοντος, χρειάζεται να ορίζετε στο πρόγραμμά σας το path για τη βιβλιοθήκη της CGAL-Python. Έτσι λοιπόν πριν κανείς γράψει:

import CGAL

ή κάτι ανάλογο, π.χ.:

from CGAL.Kernel import Point_2

θα πρέπει να έχει ορίσει το που θα βρει η Python τη βιβλιοθήκη:

import sys
sys.path.append("/home/users/compgeom/lib/cgal_package")

Έτσι λοιπόν, όλα σας τα προγράμματα Python, θα πρέπει να αρχίζουν με τις παραπάνω 2 γραμμές.

Ακολουθεί ένα πλήρες πρόγραμμα Python που χρησιμοποιεί την CGAL-Python. Αν το αντιγράψετε και το τρέξετε χρησιμοποιόντας τον κωδικό σας θα πρέπει να πάρετε σαν έξοδο όλες τις ακμές μιας τριγωνοποίησης Delaunay με 20 τυχαία σημεία:

import sys
sys.path.append("/home/users/compgeom/lib/cgal_package")

from CGAL.Triangulations_2 import Delaunay_triangulation_2
from CGAL.Kernel import Point_2
from random import *

dt = Delaunay_triangulation_2()
for i in range(20):
     dt.insert(Point_2(random(),random()))

for e in dt.edges:
     print dt.segment(e)

Χρήση των CGAL/CGAL-Python στο Virtual Machine

Θα σας δωθεί μια minimal εγκατάσταση Debian Etch που περιέχει εγκατεστημένες τις βιβλιοθήκες CGAL/CGAL-Python. Η εγκατάσταση έχει γίνει σε ένα virtual machine που δημιουργήθηκε με το λογισμικό VMware-server έκδοση 1.0.3 (μάλλον θα πρέπει να το εγκαταστήσετε, βρείτε τα αρχεία εγκατάστασης στον υποκατάλογο vmware-server του dvd). Μπορείτε να βρείτε τα αρχεία του virtual machine στο dvd που σας δώθηκε στον υποκατάλογο "Debian Etch". Οι παρακάτω οδηγίες ισχύουν αν χρησιμοποιείτε Windows, όπως και αν χρησιμοποιείτε Linux, για να τρέξετε το λογισμικό VMware-server.

Αρχικά πρέπει να αντιγράψετε όλο τον κατάλογο "Debian Etch" κάπου στον σκληρό σας δίσκο. Για να ξεκινήσει το virtual machine μέσα από το περιβάλλον του VMware-server θα πρέπει να επιλέξετε File, Open, Browse, να οδηγήσετε το πλαίσιο διαλόγου στο σημείο όπου αντιγράψατε τον κατάλογο "Debian Etch", να ανοίξετε αυτό τον κατάλογο και να επιλέξετε το αρχείο "Debian Etch.vmx".

Στη συνέχεια επιλέγετε "Power on this virtual machine" και στην ερώτηση που θα σας κάνει επιλέξτε "Create". Το virtual machine θα ξεκινήσει και μετά από λίγη ώρα θα σας εμφανίσει ένα login screen, όπου περιμένει user name και password. Δώστε και στα δύο "cgalpython". Στη συνέχεια θα ξεκινήσει ένας minimal window manager που το μενού του εμφανίζεται με δεξί κλίκ πάνω στην γκρί επιφάνεια. Αν σας ενοχλεί η γκρί επιφάνεια δώστε μέσα από ένα xterm:

xsetroot -solid black

Επιλέξτε από το μενού του window manager "Terminal Emulator" (xterm) για να ξεκινήσει ένα bash shell όπου είναι ήδη ορισμένη η μεταβλητή CGAL_MAKEFILE. Μπορείτε να μετακινηθείτε στον υποκατάλογο src και να βρείτε τα demo της CGAL και να πειραματιστείτε κάνοντας compile (αρκεί στον κατάλογο του demo που θα επιλέξετε να δώσετε make).

Για να γράψετε κάποιο πρόγραμμα υπάρχει εγκατεστημένος ο editor scite. Μέσα από ένα xterm δώστε

scite test.py

για να ξεκινήσετε να γράφετε ένα πρόγραμμα python. Όλα τα προγράμματα python που θα χρησιμοποιούν CGAL-Python, μέσα στο virtual machine, θα πρέπει να ξεκινούν με τις ακόλουθες δύο γραμμές:

import sys
sys.path.append("/home/cgalpython/src/cgal-python-0.9.1/cgal_package")

Αν θελήσετε να κλείσετε το virtual machine δώστε

su -
halt

(το password του root είναι cgalpython) και στη συνέχεια πατήστε το πάνω αριστερά κόκκινο κουμπί του προγράμματος.

Οδηγίες εγκατάστασης για Linux (Debian/Ubuntu)

Στις παρακάτω οδηγίες υποθέτω ότι θέλετε να εγκαταστήσετε τη βιβλιοθήκη CGAL και τα bindings για την Python σε λειτουργικό σύστημα Debian ή Ubuntu. Κάνω την παραδοχή ότι χρησιμοποιείτε πρόσφατες εκδόσεις των διανομών, δηλαδή την 6.06 (ή πιο πρόσφατη) για Ubuntu και την 3 (ή πιο πρόσφατη) για Debian. Συνιστώ την έκδοση 6.10 για το Ubuntu και την 4 ("Etch") για το Debian (γιατί έχω τσεκάρει τις παρακάτω οδηγίες σε αυτές τις εκδόσεις και είμαι σχεδόν σίγουρος ότι θα έχουν αποτέλεσμα).

Για να μπορέσετε να εκτελέσετε τις εντολές που εγκαθιστούν πακέτα του λειτουργικού συστήματος, πρέπει ο λογαριασμός με τον οποίο κάνατε login να ανήκει στους "sudoers". Αυτό μάλλον ισχύει αν χρησιμοποιείτε μια εγκατάσταση linux που κάνατε εσείς οι ίδιοι στο μηχάνημά σας. Αν χρησιμοποιείτε κάποιο άλλο μηχάνημα, πρέπει μάλλον να ζητήσετε από το διαχειριστή του να προσθέσει το λογαρισμό σας στους "sudoers" ή να κάνει εκείνος τις διάφορες εγκαταστάσεις πακέτων.

Εγκατάσταση της CGAL (έκδοση 3.2.1)

Βεβαιωθείτε ότι υπάρχουν εγκατεστημένα όλα τα απαραίτητα πακέτα για τη μεταγλώττιση c και c++ προγραμμάτων (είναι πολύ πιθανό να είναι ήδη εγκατεστημένα):

sudo aptitude install build-essential

Οι απαραίτητες για τη CGAL βιβλιοθήκες, εγκαθίστανται με την παρακάτω εντολή (κάντε copy/paste με το mouse γιατί πρέπει να γραφτεί όλη σε μια μόνο γραμμή):

sudo aptitude install libboost-dev libboost-graph-dev libboost-program-options-dev libcore++-dev libgmp3-dev libmpfr-dev libqt3-compat-headers libqt3-mt-dev zlib1g-dev

Κατεβάστε την έκδοση 3.2.1 της CGAL:

mkdir downloads
cd downloads
wget ftp://ftp.mpi-sb.mpg.de/pub/outgoing/CGAL/CGAL-3.2.1.tar.gz

Αποσυμπιέστε σε κάποιο κατάλογο:

mkdir ~/src
cd ~/src
tar xvf ~/downloads/CGAL-3.2.1.tar.gz

Ορίστε το directory της βιβλιοθήκης QT:

export QTDIR=/usr/share/qt3

Για να ξεκινήσει η εγκατάσταση της CGAL:

cd ~/src/CGAL-3.2.1
./install_cgal -i

Από το μενού της εγκατάστασης επιλέξτε "Test (and save) setup" και το πρόγραμμα εγκατάστασης θα ξεκινήσει ένα αυτόματο έλεγχο του συστήματος και στο τέλος θα πρέπει να εμφανίσει κάτι σαν:

...
Support for: BOOST, BOOST_PROGRAM_OPTIONS, X11, GMP, GMPXX, MPFR, CORE, ZLIB, and QT.
...
Compiler is NOT supported by CGAL.
The setup has been tested ok.
...

Αγνοήστε το μύνημα που αναφέρει ότι ο μεταγλωττιστής δεν υποστηρίζεται από τη CGAL και συνεχίστε επιλέγοντας "Build CGAL Libraries". Μετά από κάποια ώρα και αν όλα πάνε καλά το πρόγραμμα εγκατάστασης θα πρέπει να εμφανίσει:

...
Generating Makefile ... done
Building libCGAL static ... done
Building libCGAL shared ... done
Building libCGALQt static ... done
...

Η μεταγλώτιση της βιβλιοθήκης τελείωσε οπότε μπορείτε να επιλέξετε "Back to OS". Για να γίνει σωστά οποιαδήποτε μεταγλώττιση προγράμματος που χρησιμοποιεί τη CGAL θα πρέπει να θέσουμε τη μεταβλητή περιβάλλοντος CGAL_MAKEFILE. Η παρακάτω εντολή κάνει αυτόν τον ορισμό αυτόματο (υποθέτω ότι το shell σας είναι το bash και ότι το username σας cgalpython, τροποποιήστε ανάλογα):

echo export CGAL_MAKEFILE=/home/cgalpython/src/CGAL-3.2.1/make/makefile_i386_Linux-2.6_g++4.1.2 >> ~/.bashrc

Για να ελέγξετε την εγκατάσταση προσπαθήστε να μεταγλωττίσετε κάποιο demo, π.χ.:

cd src/CGAL-3.2.1/demo/Convex_hull_2
make

Η μεταγλώττιση θα πρέπει να ολοκληρωθεί επιτυχώς και να δημιουργήσει ένα εκτελέσιμο που μπορούμε να καλέσουμε:

./convex_hull_2

Εγκατάσταση της CGAL-Python

Εγκαταστήστε την απαραίτητη βιβλιοθήκη για την python:

sudo aptitude install libboost-python-dev

Κατεβάστε τη CGAL-Python:

cd ~/downloads
wget --no-check-certificate https://gforge.inria.fr/frs/download.php/945/cgal-python-0.9.1.tar.gz

Αποσυμπιέστε σε κάποιο κατάλογο:

cd ~/src
tar xvf ~/downloads/cgal-python-0.9.1.tar.gz
cd ~/src/cgal-python-0.9.1

Στη συνέχεια δώστε τιμή στην απαραίτητη μεταβλητή περιβάλλοντος:

export CPATH=/usr/include/python2.4:/usr/include/boost

Είστε έτοιμοι για τη μεταγλώττιση των bindings της CGAL για την python:

make

Αν όλα πάνε καλά και δεν έχουμε μυνήματα λάθους δίνουμε:

make package

Για να ελέγξουμε ότι η βιβλιοθήκη είναι εντάξει δίνουμε:

cd cgal_package
python

και στο prompt της python:

import CGAL

Πρέπει να επιστρέψουμε στο prompt της Python χωρίς κάποιο μύνημα λάθους.