Existe uma maneira de instalar o GeoIP a partir do código fonte no Mac OS X?

1

Eu quero instalar a biblioteca MaxMind GeoIP C , para que eu possa usar GeoIP como parte do Django . Estou trabalhando no Mac OS X.

Eu baixei GeoIP-1.4.8.tar.gz do aqui e corri:

./configure
make
make check
make install

Sem problemas. Também baixei GeoIP.dat.gz e GeoLiteCity.dat.gz , descompactei-os e coloquei-os em um diretório local.

Em seguida, defini os seguintes caminhos no meu settings.py :

GEOIP_PATH = 'path_to_dat_files'
GEOIP_LIBRARY_PATH = 'path_to_c_files'

Agora, estou tentando executar python manage.py migrate (que tem uma referência ao GeoIP em um projeto que estou usando), mas ainda estou recebendo este erro:

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

Alguma idéia?

    
por Richard 28.06.2011 / 17:41

3 respostas

2

Eu apenas sigo o mesmo procedimento e não encontrei nada errado

./configure
make
make check
make install

e coloque o banco de dados geo unzip-ed no diretório raiz do projeto django, adicione o seguinte ao settings.py:

GEOIP_PATH = "./"

aqui está o que eu corro e obtenho:

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

Eu percebo que essa questão tem cerca de 4 anos, mas eu gostaria de adicionar detalhes adicionais sobre como os usuários de versões mais atuais do Mac OS X - como o Mac OS X 10.7 (Lion), o Mac OS X 10.8 ( Mountain Lion) e Mac OS X 10.9 (Mavericks) - podem instalar o GeoIP em suas máquinas. Isso foi testado por mim até o Mac OS X 10.9.5, mas acredito que as mesmas instruções devem funcionar bem para o Mac OS X 10.10 (Yosemite).

No que diz respeito à integração do Python / Django, tenho certeza de que, se o binário do GeoIP - e os bancos de dados relacionados - estiverem instalados corretamente em todo o sistema, você não precisará copiar GEOIP_PATH ou configurações relacionadas. Mas estaria aberto a ouvir de outros nos comentários se minha suposição estiver errada.

Pré-requisitos.

Primeiro, é necessário ter o Xcode instalado. E como o Xcode - acredito que pelo menos na versão 4.3 - não inclui mais as versões GNU de autoconf , automake e libtool , elas também precisam ser instaladas. Eu forneço detalhes sobre como instalar autoconf , automake e libtool nesta resposta . O restante desta resposta assume que seu sistema já possui essa configuração.

Instalando o GeoIP a partir da fonte.

Com os pré-requisitos cobertos, você pode instalar o GeoIP da MaxMind da seguinte maneira.

Defina o diretório de trabalho para o seu diretório pessoal:

cd

Obtenha o código-fonte e descomprima-o:

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

Entre no diretório do código-fonte descompactado:

cd ./GeoIP*

Execute libtoolize no código-fonte:

libtoolize -f

Quando isso for feito, execute o script configure no código-fonte:

./configure

Agora, execute make para compilá-lo:

make

Em seguida, execute make check para verificar se tudo está bom:

make check

Agora instale:

sudo make install

Verifique se ele está instalado executando o comando geoiplookup cuja saída deve ser algo assim:

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

Agora você tem o código-fonte do GeoIP compilado, mas você não tem nenhum banco de dados GeoIP instalado para usar / reference. Então, vamos instalá-los.

Instalando bancos de dados GeoIP.

Então, vamos obter os três (3) principais bancos de dados GeoIP que estão disponíveis com curl , como este. Defina o diretório de trabalho para o seu diretório pessoal:

cd

E agora use curl para obter os bancos de dados GeoIP.dat.gz , GeoLiteCity.dat.gz e GeoIPASNum.dat.gz :

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

Feito isso, vamos movê-los para o diretório correto do programa GeoIP para referenciá-los como /usr/local/share/GeoIP/ . Se esse diretório não existe em seu sistema, você pode fazer assim:

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

Agora, com isso, mova os bancos de dados GeoIP.dat.gz , GeoLiteCity.dat.gz e GeoIPASNum.dat.gz para esse diretório:

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/

E descomprima-os no local:

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

Também precisamos renomear GeoLiteCity.dat para GeoIPCity.dat da seguinte forma:

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

Teste binário final do GeoIP.

Com o binário do GeoIP compilado da origem e instalado, além de ter os bancos de dados no lugar, geoiplookup deve funcionar como esperado. Por exemplo, vamos fazer uma pesquisa no GeoIP no Google:

geoiplookup google.com

A saída desse comando se tudo correr bem deve ser:

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.
    
por 08.04.2015 / 08:02
0

Após a compilação, deve imprimir o caminho da biblioteca:

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

Defina o caminho para o arquivo dylib :

GEOIP_LIBRARY_PATH = '/usr/local/lib/libGeoIP.dylib'
GEOIP_PATH = GEOIP_DATA_FILE
    
por 17.04.2012 / 09:20