1 votes

Existe-t-il un moyen d'installer GeoIP à partir du code source sur Mac OS X ?

Je souhaite installer le Bibliothèque MaxMind GeoIP C afin que je puisse utiliser GeoIP dans le cadre de Django . Je travaille sur Mac OS X.

J'ai téléchargé GeoIP-1.4.8.tar.gz de aquí et courir :

./configure
make
make check
make install

Sans aucun problème. J'ai également téléchargé GeoIP.dat.gz y GeoLiteCity.dat.gz Je les ai décompressés et placés dans un répertoire local.

J'ai ensuite défini les chemins d'accès suivants dans mon fichier settings.py :

GEOIP_PATH = 'path_to_dat_files'
GEOIP_LIBRARY_PATH = 'path_to_c_files'

Maintenant, j'essaie d'exécuter python manage.py migrate (qui fait référence à GeoIP dans un projet que j'utilise), mais j'obtiens toujours cette erreur :

from django.contrib.gis.utils import GeoIP
ImportError: cannot import name GeoIP

Des idées ?

3voto

Giacomo1968 Points 48326

Je me rends compte que cette question date de plus de 4 ans, mais je voulais ajouter des détails supplémentaires sur la façon dont les utilisateurs des versions plus récentes de Mac OS X - comme Mac OS X 10.7 (Lion), Mac OS X 10.8 (Mountain Lion) et Mac OS X 10.9 (Mavericks) - peuvent installer GeoIP sur leurs machines. J'ai testé cette méthode jusqu'à Mac OS X 10.9.5, mais je pense que les mêmes instructions devraient fonctionner pour Mac OS X 10.10 (Yosemite).

En ce qui concerne l'intégration de Python/Django, je suis presque sûr que si le binaire GeoIP - et les bases de données associées - sont correctement installés dans tout le système, il n'est pas nécessaire d'utiliser la fonction GEOIP_PATH ou des paramètres connexes. Mais je suis prêt à entendre d'autres personnes dans les commentaires si mon hypothèse est erronée.

Prérequis.

Tout d'abord, il faut que Xcode soit installé. Et comme Xcode - depuis au moins la version 4.3 je crois - n'inclut plus les versions GNU de autoconf , automake y libtool Ceux-ci doivent également être installés. Je donne des détails sur comment installer autoconf , automake y libtool dans cette réponse . Le reste de cette réponse suppose que votre système dispose déjà de cette configuration.

Installation de GeoIP à partir de la source.

Une fois les conditions préalables remplies, vous pouvez installer GeoIP de MaxMind comme suit.

Définissez le répertoire de travail comme étant votre répertoire personnel :

cd

Obtenez le code source et décompressez-le :

curl -O http://www.maxmind.com/download/geoip/api/c/GeoIP-latest.tar.gz
tar -xvzf GeoIP-latest.tar.gz

Allez dans le répertoire du code source non compressé :

cd ./GeoIP*

Exécuter libtoolize sur le code source :

libtoolize -f

Lorsque cela est fait, exécutez le programme configure script sur le code source :

./configure

Exécuter maintenant make pour le compiler :

make

Exécutez ensuite make check pour vérifier que tout va bien :

make check

Installez-le maintenant :

sudo make install

Vérifiez qu'il est installé en exécutant le programme geoiplookup dont le résultat devrait ressembler à ceci :

Usage: geoiplookup [-h] [-?] [-d custom_dir] [-f custom_file] [-v] [-i] [-l] <ipaddress|hostname>

Vous avez maintenant compilé le code source de GeoIP, mais vous n'avez pas installé de bases de données GeoIP pour qu'il puisse les utiliser/référencer. Installons-les donc.

Installation des bases de données GeoIP.

Nous allons donc obtenir les trois (3) principales bases de données GeoIP qui sont disponibles sur le marché avec curl comme ceci. Définissez le répertoire de travail comme étant votre répertoire personnel :

cd

Et maintenant, utilisez curl pour obtenir le GeoIP.dat.gz , GeoLiteCity.dat.gz y GeoIPASNum.dat.gz des bases de données :

curl -O http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
curl -O http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
curl -O http://geolite.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz

Ceci fait, déplaçons-les dans le répertoire approprié pour que le programme GeoIP puisse les référencer, à savoir /usr/local/share/GeoIP/ . Si ce répertoire n'existe pas sur votre système, vous pouvez le créer comme suit :

sudo mkdir -p /usr/local/share/GeoIP/

Une fois cela fait, déplacez le fichier téléchargé GeoIP.dat.gz , GeoLiteCity.dat.gz y GeoIPASNum.dat.gz dans ce répertoire :

sudo mv ~/GeoIP.dat.gz /usr/local/share/GeoIP/
sudo mv ~/GeoLiteCity.dat.gz /usr/local/share/GeoIP/
sudo mv ~/GeoIPASNum.dat.gz /usr/local/share/GeoIP/

Et les décompresser sur place :

sudo gzip -d -f /usr/local/share/GeoIP/GeoIP.dat.gz
sudo gzip -d -f /usr/local/share/GeoIP/GeoLiteCity.dat.gz
sudo gzip -d -f /usr/local/share/GeoIP/GeoIPASNum.dat.gz

Nous devons également renommer GeoLiteCity.dat à GeoIPCity.dat comme ceci :

sudo mv /usr/local/share/GeoIP/GeoLiteCity.dat /usr/local/share/GeoIP/GeoIPCity.dat

Test final du binaire GeoIP.

Avec le binaire GeoIP compilé à partir des sources et installé, ainsi qu'avec les bases de données en place, geoiplookup devrait fonctionner comme prévu. Par exemple, effectuons une recherche GeoIP sur Google :

geoiplookup google.com

Si tout se passe bien, la sortie de cette commande devrait être la suivante :

GeoIP Country Edition: US, United States
GeoIP City Edition, Rev 1: US, CA, California, Mountain View, 94043, 37.419201, -122.057404, 807, 650
GeoIP ASNum Edition: AS15169 Google Inc.

2voto

Larry Shatzer Points 1593

J'ai suivi la même procédure et je n'ai rien trouvé d'anormal.

./configure
make
make check
make install

et placez la base de données dézippée geo dans le répertoire racine du projet django, ajoutez ce qui suit à settings.py :

GEOIP_PATH = "./"

Voici ce que j'ai fait et ce que j'ai obtenu :

% python manage.py shell
>>> from django.contrib.gis.utils import GeoIP
>>> g = GeoIP()
>>> g.country('google.com')
{'country_name': 'United States', 'country_code': 'US'}
>>>>

0voto

gota Points 111

Après la compilation, il devrait afficher le chemin de la bibliothèque :

---------------------------------------------------------------------- 
Libraries have been installed in:    /usr/local/lib

Définir le chemin d'accès au dylib Datei:

GEOIP_LIBRARY_PATH = '/usr/local/lib/libGeoIP.dylib'
GEOIP_PATH = GEOIP_DATA_FILE

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X