GeoIP, PECL, Zend Server z PHP 5.3 i SnowLeopard

Opublikowano: 19.06.2010 | Kategoria: Apple, Programowanie | Tagi: , , | Brak komentarzy »

Potrzebowałem na maszynie developerskiej (z jabłkiem na obudowie) rozpoznawania lokalizacji klientów na podstawie adresów IP. Rozwiązanie manualowe zakończyło się błędem:

$ sudo /usr/local/zend/bin/pecl install geoip
(...)
configure: error: Please reinstall the geoip distribution
ERROR: `/private/tmp/pear/temp/geoip/configure' failed

Próba instalacji przez PEAR, skierowała mnie na nowo do PECLa. Wniosek prosty – czegoś brak. Poszukałem rozwiązania w mac portach:

$ port search geoip
libgeoip @1.4.6 (devel, net)
    Gets country code by IP address

ISTOTNA UWAGA. Ponieważ Zend Server na MacOSX jest tylko w wersji 32 bit, musimy na chwilę namieszać, bo inaczej Zend nie łyknie nowego modułu, ze względu na niezgodność architektury (PHP będzie pluło ostrzeżeniami: PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/local/zend/lib/php_extensions/geoip.so’ – dlopen(/usr/local/zend/lib/php_extensions/geoip.so, 9): no suitable image found. Did find: /usr/local/zend/lib/php_extensions/geoip.so: mach-o, but wrong architecture in Unknown on line 0). W pliku /opt/local/etc/macports/macports.conf musimy odkomentować build_arch i386:

# CPU architecture to compile for. Defaults to i386 or ppc on Mac OS X 10.5
# and earlier, depending on the CPU type detected at runtime. On Mac OS X 10.6
# the default is x86_64 if the CPU supports it, i386 otherwise.
build_arch                      i386

Zapisujemy zmiany i instalujemy port z libgeoip.

$ sudo port install geoip
--->  Computing dependencies for libgeoip
--->  Fetching libgeoip
--->  Attempting to fetch GeoIP-1.4.6.tar.gz from http://lil.fr.distfiles.macports.org/libgeoip
--->  Verifying checksum(s) for libgeoip
--->  Extracting libgeoip
--->  Configuring libgeoip
--->  Building libgeoip
--->  Staging libgeoip into destroot
--->  Installing libgeoip @1.4.6_0
--->  Activating libgeoip @1.4.6_0
--->  Cleaning libgeoip

$ geoiplookup technicznie.miastofabryk.pl
GeoIP Country Edition: NL, Netherlands

$ file /opt/local/bin/geoiplookup
/opt/local/bin/geoiplookup: Mach-O executable i386

Śmiga. I jest w wersji 32 bitowej. Wstawiamy ponownie komentarz w /opt/local/etc/macports/macports.conf:

# build_arch                      i386

Wracamy do PECLa… ściągamy paczkę i ją rozpakowujemy:

$ cd; mkdir temp; cd temp
$ /usr/local/zend/bin/pecl download geoip
downloading geoip-1.0.7.tgz ...
Starting to download geoip-1.0.7.tgz (9,416 bytes)
.....done: 9,416 bytes
File /Users/skar/temp/geoip-1.0.7.tgz downloaded
$ tar xvf geoip-1.0.7.tgz
(...)
$ cd geoip-1.0.7

Teraz czas na konfigurację i kompilację modułu geoip dla PHP:

$ export "CFLAGS=-arch i386"
$ /usr/local/zend/bin/phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626

$ ./configure --with-php-config=/usr/local/zend/bin/php-config --disable-shared
(...)
$ make
(...)
$ sudo make install
Password:
Installing shared extensions:     /usr/local/zend/lib/php_extensions/

W katalogu /usr/local/zend/lib/php_extensions/ powinien pojawić się plik geoip.so. Jeżeli plik istnieje, to wszystko przebiegło prawidłowo. Odpalamy teraz konfigurację Zend Server (http://localhost:10081/ZendServer) i wchodzimy w Server Setup/Extensions i klikamy Turn On przy geoip. Restartujemy PHP. Powinno działać.


Instalacja git ze źródeł na Ubuntu 7.04

Opublikowano: 05.03.2008 | Kategoria: Linux | Tagi: , , , , | Brak komentarzy »

Problem. Spory. Dla Ubuntu w wersji 7.04 nie ma w repozytoriach git (narzędzie do wersjonowania plików, utrzymywania repozytoriów etc. – “podobne” do cvs, svn) w wersji większej od 1.4.x. Inna składnia (od 1.5.1 nastąpiła zmiana), inne nawyki… Pozostaje instalacja ze źródeł.

1. Wywalamy stare paczki (ja miałem tylko dwie, ale może się zdarzyć, że będziesz ich miał więcej):

sudo apt-get autoremove git-core gitweb

Musimy podać swoje hasło.

Czytaj dalej »