[Gfoss] utilizzo libreria Spatialite su host no root

a.furieri a lqt.it a.furieri a lqt.it
Lun 30 Gen 2017 13:06:27 CET


On Mon, 30 Jan 2017 12:34:53 +0100, francesco marucci wrote:
> gentile lista,
> so che ci vedremo tutti a Genova la prossima settimana ma non posso
> attendere per risolvere questo dubbio.
>
> vorrei tanto usare un database sqlite+spatialite in un host sul quale 
> non
> ho diritti di root e quindi non ho la possibilità di installare 
> nulla.
>
> la prima domanda é: si può fare?
>

ciao Francesco,

se intendi "nulla" alla lettera la risposta e' NO.

spatialite e' un modulo di estensione dinamica per SQLite, quindi
per attivarla e' assolutamente indispensabile installare il
relativo modulo a caricamento dinamico (mod_spatialite), che e'
materialmente una libreria dinamica (.so) sulle piattaforme Linux
mentre e' una DLL sulle piattaforme Windows.

a sua volta mod_spatialite presenta svariate altre dipendenze
(geos e proj.4 giusto per limitarsi alle principali), che
naturalmente devono essere istallate a loro volta per consentire
il caricamento di mod_spatialite.

infine, dopo che avrai copiato "da qualche parte" occorre
modificare le regole di sistema per la ricerca delle librerie
in modo tale che includano anche "da qualche parte"; in assenza
di tutti questi prerequisiti spatialite non parte.


> a me piacerebbe accedere in Python, ma alla fine ho ripiegato su PHP
>

anche con Python e PHP il succo non cambia (anzi, se possibile si
complica ulteriormente). alla fine comunque dovrai pur caricare
mod_spatialite e tutte le dipendenze che si porta dietro, ma
l'ambiente tipico del linguaggio potrebbe aggiungere altri
vincoli ulteriori.


> seguendo queste chiare istruzioni:
> http://www.gaia-gis.it/gaia-sins/spatialite-cookbook/html/php.html
>
> l'host in questione è una RedHat ed è già presente Sqlite 3.8.10.2 e 
> PHP
> 5.6.29.
>
> ho provato quindi a copiare libspatialite.so e/o mod_spatialite.so 
> (da me
> presenti in locale), ma l'errore PHP alla riga:
> $db->loadExtension('mod_spatialite.so');
>
> è il seguente:
>
> "mod_fcgid: stderr: PHP Warning: SQLite3::loadExtension(): 
> /var/www/vhosts/
> alveo.coop/httpdocs/sqlite3_ext/mod_spatialite.so.so: cannot open 
> shared
> object file: No such file or directory"
>
> sono davvero fuori strada?
> è una cosa che non si può fare senza i permessi di root?
>

se ricordo bene (ma non ci giuro) PHP esige che tutti gli eventuali
moduli dinamici per SQLite devono stare in una directory ben precisa
(una delle sue, ben protette ed accessibili solo da root).
se non erro c'e' un file config che consente di rimappare la
location di questa dir, ma ovviamente per editare un file config
dovrebbero servire poteri di root.


> è necessario configurare la variabile di sistema "LD_LIBRARY_PATH"?
> (che non posso fare...)
>
> cosa posso chiedere di "poco invasivo" al mio gestore dell'host per 
> usare
> spatialite con PHP o con Python?
>

il problema e' molto semplice: caricare un modulo di estensione
dinamica significa comunque caricare codice eseguibile nel sistema,
il che apre un'infinita' di potenziali vulnerabilita' (malware etc).
non e' affatto irragionevole che Linux esiga che operazioni di questa
portata vengano effettuate solo da root e siano proibite per tutti
gli users non privilegiati; e' il minimo per evitare di aprire
falle di sicurezza che potrebbero essere mortali.

l'intervento meno invasivo possibile che potresti chiedere al
tuo sysadmin e' di convincerlo ad installare i pacchetti di
sistema spatialite: esistono per Debian, Fedora ed altri Linux,
ma dubito molto che siano disponibili per RedHat e CentOS.
il fatto che si tratti di roba ufficialmente supportata dovrebbe
bastare a convincerlo che non e' roba pericolosa per la sicurezza;
nel caso di Python e PHP questo da solo potrebbe facilmente non
essere sufficiente, forse potrebbe servire creare dei symlink
o trafficare sui files config (dipende caso per caso).

ciao Sandro


Maggiori informazioni sulla lista Gfoss