topoJSON/contextify/node-gyp unter Windows installieren - Tutorial

topoJSON ist ein noch recht neues Datei-Format, welche es erlaubt Geo-Daten noch effektiver abzuspeichern im Vergleich zu geoJSON. Hier zeige ich euch die Installation unter Windows. Unter Linux lässt sich topoJSON ohne große Probleme installieren. Windows allerdings stellt sich da quer und man benötigt etliche zusätzliche Software und Fehlermeldungen sind dabei Gang und gebe. Oft ist es so, dass kein Linux System installiert werden kann oder der Aufwand einfach zu erheblich wäre um ein kleines Tool zum Laufen zu bringen. Nach einigen Tagen Rumprobierens und lauter Fehlschlägen war das Ergebnis zum Glück positiv und topoJSON zum Laufen gebracht. Damit ihr diese Probleme nicht durchlaufen müsst, hier das Tutorial als Schritt-für-Schritt Anleitung. Nehmt euch etwas Zeit für dieses Tutorial. Abhängig davon ob ihr eine HDD oder SSD habt, kann allein das abarbeiten des Tutorials bis zu 2 Stunden benötigen!

Wir installieren hier sämtliche Software als 32 bit. Alternativ könnt ihr auch die 64 bit Versionen installieren. Achtet dann immer darauf, dass alle Bestandteile die gleiche Version aufweisen.

Python 2.7 installieren

Wir benötigen später Python um topoJSON auszuführen. Leider gelingt dies mit der aktuellen 3.4er Version nicht. Daher müssen wir Python < v.3 nehmen. Am besten nehmen wir die 2.7er Version, weil diese überall empfohlen wird und es garantiert damit funktioniert. Hier alternativ der Direkt-Link.

Installiert Python am besten mit den empfohlenen Einstellungen. Somit liegt Python dann unter C:\Python27\.

Node.js installieren

Node.js wird verwendet um topoJSON später herunterzuladen und zu kompilieren. Wir laden Node.js herunter und installieren es. Hier alternativ der Direkt-Link.

Installiert Node.js mit den Standard-Einstellungen. Ihr müsst darauf achten auch npm mitzuinstallieren. Node.js ist am Ende unter C:\Program Files (x86)\nodejs\ zu finden.

Windows-Software installieren

Leider benötigen wir ein Sammelsorium an Windows-Software. Vieles kann hier variieren. Hier gezeigt worauf aber im Speziellen zu achten ist.

Visual C++ 2010 deinstallieren

Um sicher zu gehen, dass wir später keine Probleme haben, ist es notwendig die 2010er Versionen von Microsoft Visual C++ 2010 zu deinstallieren.

Hinweis: Natürlich können wir später auch einfach eine spezielle C++ Version angeben. Es ist sogar möch eine komplett andere Version wie 2013 zu verwenden. Daher könnt ihr auch die Deinstallation zunächst belassen und bei Problemen dann hier wieder ansetzen.

Visual Studio 2010 Express installieren

Wir benötigen eine lauffähige C++ Runtime. Die kostenlose Express Version reicht dazu vollkommen aus. Ladet euch also die Express Version herunter und installiert diese.

Auch hier einfach die Standard-Einstellungen belassen und durchklicken.

Windows SDK 7.1

Jetzt benötigen wir noch das Windows SDK. Achtet darauf, dass ihr hier bei der Installation Microsoft Visual C++ 2010 abwählt. Ansonsten wird die Installation leider fehlschlagen mit einem merkwürdigen Fehler-Code.

Nach etlicher Verweildauer schließt die Installation ab und ein neues Fenster erscheint. Diesen Help Library Mananger können wir aber Schließen, da er nicht von Belang ist für den weiteren Ablauf.

Visual Studio Service Pack 1

Jetzt updaten wir um ganz auf Nummer sicher zu gehen auf das SP1 von Visual Studio.

Visual C++ Service Pack 1

Zu guter letzt nur noch das SP1 von Microsoft Visual C++ 2010 installieren.

cmd.exe als admin starten

Wir benötigen für das weitere Vorgehen Adminrechte in einer Konsole. Dazu unter Windows 8 einfach im Start-Menu nach cmd suchen, rechtsklicken und als admin starten auswählen.

npm einrichten

Zunächst schauen wir uns die installierten Versionen an. Dazu jeweils node -v und npm -v eingeben. Solltet ihr Probleme haben, könnt ihr ja diese hier verwendeten Versionen auch einmal testen.

Danach installieren wir per npm install -g npm das Paket npm global auf dem System.

Dadurch sind wir nun in Lage nur mit dem Befehl npm alle Befehle auflisten zu lassen.

npm muss außerdem wissen wo Python installiert ist und vor allem welche installierte C++ Version genutzt werden soll. Wir setzen daher die config mit npm config set python=C:\Python27\python.exe und npm config set msvs_version=2010.

Die Änderungen könnt ihr übrigens auch in der Datei C:\Users\NAME\.npmrc nachprüfen. Ebenso könnt ihr hier die Änderungen vornehmen, dann jedoch die Konsole neustarten danach. Hier sollte nun:

python=C:\Python27\python.exe
msvs_version=2010

erscheinen.

npm benötigt unter anderem contextify. Dazu versuchen wir es zu installieren mit npm install -g contextify. Dieser Versuch sollte jedoch schief gehen, da das Paket node-gyp noch fehlt.

Daher installieren wir node-gyp mittels npm install -g node-gyp.

Per node-gyp sehen wir nun welche Befehle möglich sind. Interessant ist hierbei vor allem rebuild. Rebuild unfasst 3 Befehle, somit muss rebuild am Ende lauffähig sein. Hauptbestandteil bildet dabei configure.

Wenn wir nun also node-gyp configure starten, werden wir sehen, dass es Probleme mit der lokalen Checksumme gibt. Dies liegt vor allem am fehlenden build Befehl davor. Können wir hier aber ignorieren. Wenn wir später Pakete installieren, wird so oder so immer ein komplettes rebuild durchgeführt.

Wenn wir jetzt einmal node-gyp list eingeben sehen wir, dass noch nichts installiert wurde.

Versuchen wir nun per npm install -g topojson dieses Paket zu installieren. Wir werden auch hier feststellen, dass es wieder einmal Probleme mit node-gyp gibt...

Wenn wir jetzt allerdings node-gyp configure ausführen, dann werden wir merken, dass die Konfiguration schon vielversprechender aussieht. Warum am Ende Fehler auftreten, ist mir nicht bekannt, kann aber ignoriert werden.

Jetzt können wir endlich contextify per npm install -g contextify installieren. Kurze Notiz hierzu: es muss hier nicht unbedignt der -g Flag gesetzt werden.

Da wir am Ende topojson nutzen möchten, installieren wir es nun per npm install g- topojson. Dies sollte ebenso erfolgreich sein wie bei dem contextify von eben. Das -g Flag ist hier sehr wichtig, damit wir es später von überall her aufrufen können.

Tipp: Solltest du Probleme haben, kannst du auch npm install -msvs_version=2010 -g topojson eingeben. Somit setzt du in der Installation selber den C++ Parameter. Aber eigentlich sollte es auch ohne funktionieren.

Jetzt testen wir zum Abschluss noch topojson und stellen fest, dass alles einwandfrei funktioniert. Die Fehlermeldung beruht darauf, dass wir keine Parameter angegeben haben.

Sonstige Anmerkungen

.Net Framework updaten

Bei Problemen kann es auch daran liegen, dass ihr nicht das aktuellste .Net Framework installiert habt. Installiert am besten die Version 4.5.

npm cache leeren

Der Befehl npm cache clean ist sehr wichtig. Sollte Probleme geben versucht also auch damit zu beheben.

node-gyp VS version

Manchmal aktualisiert sich die Config nicht. Dann kann man auch z.B. in node-gyp direkt die Config per node-gyp configure --msvs_version=2010 setzen.

Systemvariablen setzen

Wie oben gut zu erkennen ist, ist das Setzen von Systemvariablen überflüssig. Nur der Python-Pfad muss dem Paket-Manager bekannt gemacht werden innerhalb der Umgebung.

mit npm updaten

Wenn ihr evtl. npm schon installiert hattet und Pakete heruntergeladen habt, so könnt ihr diese sehr einfach aktualisieren. Installiert zunächst per npm install -g npm-check-updates und führt es dann per npm-check-updates aus. Achtet darauf, dass ihr im entsprechenden Ordner seid.

node-gyp updaten

Per npm install node-gyp@latest könnt ihr Tools updaten oder auch node-gyp selber.

Fazit

npm ist in letzter Zeit immer bekannter geworden. Leider hat sich npm bisher noch nicht unter Windows etabliert und somit werden solche Fehler, wie oben im Tutorial zu erkennen sind noch eine Weile einfach dazu gehören. Ich hoffe dieses Tutorial konnte euch weiterhelfen. Viel Erfolg.

Kommentar schreiben

Kommentare: 2
  • #1

    Frank (Mittwoch, 28 Januar 2015 11:29)

    Good tutorial. Works perfectly. Even tho it is German, everything is easy to get with these pictures. Thanks.

  • #2

    kwoxer (Donnerstag, 16 Juli 2015 07:47)

    No prob and thank you very much ;)