Neues von der Sternwarte: astrometry.net kompilieren und installieren

In unsrem Astro-Projekt wird astrometry.net dazu verwendet, um mit dem Teleskop hochgenau Sterne anfahren zu können.

Wir haben astrometry.net schon auf unserer Festplatte. Das Kompilieren und Installieren gestaltete sich aber schwieriger, als ich es mit vorgestellt hatte. Es war eine wie eine große Abenteuerreise quer durch die Tiefen des Internet auf der Suche nach Hilfe zur Fehlerbeseitung.

Also, los geht´s. Auf ins große Abenteuer! Und bitte, zuerst diesen Artikel ganz durchlesen, bevor irgend jemand ans Nachmachen denkt!

Die Quelldateien des Projekts liegen, wie wir schon wissen, hier:

~/astrostuff/astrometry.net

Das Kompilieren findet diesmal nicht in einem eigenen dafür angelegten „build-Ordner“ statt, sondern direkt im Ordner der Quelldateien. Des weiteren wird hier nicht cmake zum Bauen der build-files verwendet, sondern make. Das Erstellen der ausführbaren Dateien und deren Installation erfolgt dann mit dem uns schon bekannten „sudo make install“.

Klingt einfach, oder? Springen wir also zuerst in das Quell-Verzeichnis:

cd ~/astrostuff/astrometry.net

Nun kompilieren das Ganze:

make NETPBM_INC="-I/usr/include/netpbm" NETPBM_LIB="-L/usr/lib64 -lnetpbm" &&\
make extra NETPBM_INC="-I/usr/include/netpbm" NETPBM_LIB="-L/usr/lib64 -lnetpbm"

Hmm der Compiler meckert. Er bemängelt, daß er die Datei „Python.h“ nicht finden kann:

python-h-error

Was ist da nur los? Die fehlende Datei „Python.h“ befindet sich doch im Paket „python3-devel“. Und dieses Paket ist installiert. Warum also das Gemeckere?

Mal schauen, welche Version von Python auf meinem Laptop als Standard gesetzt ist:

python --version

python2-version

Aha!!! Standard ist Python2. Und dafür ist das devel-Paket nicht istalliert.

Da haben wir das Problem gefunden:

Python ist eine Programmiersprache. Wenn nun beim Bauen der build-files der Interpreter mit „python“ aufgerufen wird, kommt Python2 zum Zug. Ist ja schließlich Standard. Nur fehlt eben die Datei „Python.h“ aus dem nicht existierenden devel-Paket für Python2.

Warum zum Henker installieren wir dann nicht dieses devel-Paket?

Da gibt es ein neues Problem.

astrometry.net verlangt zum erfolgreichen Kompilieren nach einem Paket mit dem Namen „python-astropy“. Und dieses Paket gibt es nur für Python3, nicht aber für Python2.

Zwei Python-Versionen für ein Projekt, um alle Abhängigkeiten zu lösen? Das will ich nicht. Da muß es etwas anderes geben. Das einfachste dürfte wohl sein, python3 als Standard auf dem Laptop zu setzen.

Und das geht eigentlich ganz einfach:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1 &&\
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 2

Was hab ich da getan?

  • Zeile 1 sagt:
    Immer, wenn der Interpreter mit der Anweisung „python“ oder ausgeschrieben mit „/usr/bin/python“ aufgerufen wird, wird Python2 als Standard gesetzt
  • Zeile 2 sagt:
    Immer, wenn der Interpreter mit der Anweisung „python“ oder ausgeschrieben mit „/usr/bin/python“ aufgerufen wird, wird Python3 als Standard gesetzt

Hää? Zwei unterschiedliche Python-Versionen und beide sollen Standard sein auf dem Astro-Laptop? Das ist doch Unsinn!!!

Stimmt schon, alles Quatsch, wenn da nicht die Ziffern am Ende der jeweiligen Zeilen wären. Diese Ziffern geben nämlich die Priorität an. Sie sagen, welche der beiden Alternativen als Standard gesetzt werden soll.

Je größer die Ziffer ist, um so höher ist die Priorität der jeweiligen Alternative.

Die Ziffer 2 ist größer als die Ziffer 1. Das heißt, die Alternative mit der Ziffer 2 am Schluß hat die höchste Priorität und gilt.

Wir haben nun also Python3 als Standard auf dem System, was wir auch erreichen wollten.

Und alles ist gut…

Überprüfen wir das nochmal kurz:

python3-version

Damit können wir die nochmal versuchen, das Projekt zu bilden:

make NETPBM_INC="-I/usr/include/netpbm" NETPBM_LIB="-L/usr/lib64 -lnetpbm" &&\
make extra NETPBM_INC="-I/usr/include/netpbm" NETPBM_LIB="-L/usr/lib64 -lnetpbm"

Und diesmal läuft die Sache problemlos durch.

Fehlt noch die Installation:

sudo make install

Mist! Schon wieder ein Fehler!:

numpy-error

Da fehlt doch schon wieder irgend so ein Paket! Irgend so eine Datei aus einem devel-Paket von „numpy“.

Nun, hier ist der Fehler schnell gefunden.

„python3-numpy“ wurde zwar als abhängiges Paket bei der Installation von „python3-astropy“ mit installiert. Aber nicht das dazugehörige devel-Paket.

Nun, da kann Abhilfe geschaffen werden:

sudo zypper install \
python3-numpy-devel

Wagen wir nun also einen neuerlichen Installationsveersuch mit:

sudo make install

Und diesmal klappt es! Astromety.net wird installiert nach:

/usr/local/astrometry

Die ausführbaren Dateien von astrometry.net liegen damit in folgendem Verzeichnis:

/usr/local/astrometry/bin

Das Unschöne ist nun, daß unser System in diesem Ordner nicht nachschaut, wenn eine dieser ausführbaren Dateien aufgerufen wird. Und kstars, das wir später noch kompilieren werden, muß von der Existenz dieser Dateien wissen, sonst ist es Essig mit der astrometrischen Unterstützung in kstars.

Sagen wir also dem System, daß es auch unter „/usr/local/astrometry/bin“ nachschauen soll, wenn es nach ausführbaren Dateien sucht:

echo "export PATH="$PATH:/usr/local/astrometry/bin"" | sudo tee -a /etc/profile.local

Systemneustart und gut isses.

Wer übrigens genau wissen will, was es mit dem obigen Befehl auf sich hat, dem sei dieser Blogartikel emphohlen, den ich einmal in einer ruhigen Minute geschrieben habe 🙂 :

https://sternenkarten.com/2018/07/13/path-erweitern-fuer-astrometry-net/

Wer nun meint, das wär´s mit astrometry.net, den muß ich enttäuschen. Astrometry.net braucht zum Funktionieren noch Index-files.

Das Installieren dieser Index-files ist ein Thema für sich. Das Verstehen, was es mit diesen Index-files auf sich hat ist ein weiteres Thema.

Gute Aussichten also für zwei weitere interessante Blog-Artikel.

demnächst in diesem Theater…

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.