Archive for category linuxing

qualche tips su django

Rimozione django

Per rimuovere django installato da sorgenti (nel caso si voglia installare una versione piu’ recente, per esempio) basta trovare la directory “django” e cancellarla. Per trovarla impartire il comando:

sit@debian:~$ python -c “import sys; sys.path = sys.path[1:]; import django; print(django.__path__)”

che nel mio caso restituisce:

['/usr/lib/pymodules/python2.6/django']

MD_PYTHON ERROR in django

Dopo un blocco inaspettato del server (durante un processo di rsync) il gestionale django installato riportava il seguente errore:

MOD_PYTHON ERROR

…………..

…………..

Import Error: Could not import settings ‘my_app.settings’ (Is it on sys.psth? Does it have syntax error?): No module named myapp.settings

Dopo avere cercato in rete ho trovato che la causa di questo messaggio potrebbe essere:

- file di configurazione di apache errato;

- sys.path sbagliato;

- permessi non corretti su cartelle e files del progetto (permessi che inibiscono all’utente www-data di leggere i file di settings);

- bug nel codice django.

Prima di procedere ho provato a replicare l’aplicativo sul portatile (compreso db postgresql colllegato) e tutto funzionava a modino (NB: stesso SO Debian stable).

Quindi ho confrotato il file di configurazione di apache (/etc/apache2/apache2.conf”) e sono identici; quindi il problema non sta li;

ho confrontato il sys.path delle due macchine: per farlo ho lanciato una shell python, poi:

>>> import os, sys

>>> print sys.path

ed i risultati sono identici: quindi anche la seconda ipotesi e’ scartata.

Anticipo che il bug nel codice django e’ da escludere a priori visto che sul portatile gira senza problemi. Rimangono da verificare i permessi sulle cartelle del progetto.

Infatti confrontando i listati di “ls -l” sulle due macchine si nota che la directory “/home/user/” ha dei permessi differenti (nel server e’ inibita la lettura a tutti. Molto probabilmente durnate l’operazione di rsync lanciato da root ha modificato i diritti di accesso durante; il blocco del server causato da un down temporaneo della rete ha messo in lock anche le directory interessate). Cambiando questa impostazione con:

$ chmod 751 -R /home/user/

tutto e’ andato a posto

Lascia un commento

Da Postgresql 8.3 e Postgis 1.3.3 a Posgresql 8.4.11 e Postgis1.5.1 su Debian stable

Con questo post volevo tenere traccia della procedura di aggiornamento e migrazione dati da Postgresql 8.3 e Postgis 1.3.3 a Posgresql 8.4.11 e Postgis1.5.1.

Ho seguito questa utilissima pagina wiki

Sul nostro server “girano” attualmente Postgresql 8.3 e Postgis 1.3.3.

1- Facciamo dapprima il backup dei database presenti (il comando va lanciato per ogni db presente nel cluster).

$ PGUSER=postgres pg_dump -Fc nome_db > /percorso/alla/dir/di/dump/nome_db.dmp

NB: pg_dump con l’opzione -Fc crea un archivio compresso (un tar compresso con gzip, ovvero un tar.gz).

Nel caso si trattasse di db non spaziale e’ sufficiente dare:

$ PGUSER=postgres pg_dump -c nome_db > /percorso/alla/dir/di/dump/nome_db.sql

2- Stoppiamo Postgresql-8.3 (come root):

# /etc/init.d/postgesql stop 8.3

3- Installiamo Postgresql-8.4 e Postgis-1.5

# aptitude install postgresql-8.4 postgresql-8.4-postgis

A questo punto (non ricordo purtroppo tutte le fasi che ho percorso) al comando di stop de nuovo postgresql-8-4 compariva un errore. Ho provato a reinstallarlo ma a questo punto ottengo:

# Error: move_conffile: required configuration file /var/lib/postgresql/8.4/main/postgresql.conf does not exists.

Decido allora di reinstallare tutto ma succede il fattaccio. Non si riesce piu’ a lanciare postgresql-8-3. Il messaggio d’errore diceva che non esiste piu’ la directory “/var/lib/postgresql/8.3/main” panic…..praticamente mi e’ sparito tutto il cluster di postgresql-8.3, fumato!

Ok, pero’ i backup li ho e decido di fare un purge profondo prima di ripartire. Cerco tutti i pacchetti relativi a Postgresql.

# dpkg -l | grep postg

e rimuovo tutto con:

# aptitude purge postgresql-8.3 postgresq-8.4 postgresql-client-8.3 postgresql-client-8.4 postgresql-client-common postgresql-common postgresql

Rimuovo anche tutte le directory di sistema:

# rm -r /etc/postgresql/

# rm -r /etc/postgresql-common/

# rm -r /var/lib/postgresql/

poi togliamo manualmente l’utente “postgres” dal file “/etc/passwd” (mediante “# nano /etc/passwd” e modificando il file eliminado la riga di interesse).

Quindi reinstallo tutto con:

# aptitude install postgresql-8.4 postgresql-8.4-postgis (che si tira dietro anche tutte le dipendenze del caso)

A questo punto possiamo recuperare i dump fatti. Per fare questo ci viene in aiuto uno script in perl che si installa con postgis-1.5 (new_postgis_restore.pl).

Prima si devono ricreare i database vuoti (con lo stesso nome di quello di partenza). Essendo tutti db spaziali creiamo dapprima un template spaziale che chiamiamo “template_gis” e lo useremo poi per creare ogni db.

Come utente postgres creiamo anche gli utenti dei db stessi:

$ su

# su postgres

(come utente postgres) # psql template1; (si entra in un db qualsiasi per creare gli utenti)

=# CREATE USER nome_utente WITH PASSWORD ‘secret’ CREATEDB CREATEUSER;

Creo il nuovo database che diventaera’ il template (sempre come utente postgres):

=# CREATE DATABASE template_gis template=template0;

Usciamo dal db (<CTRL>d) e (sempre come utente postgres) importiamo in esso le funzioni spaziali:

# psql -f /usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql -d template_gis

poi

# psql -d template_gis -f /usr/share/postgresql/8.4/contrib/postgis-1.5/spatial_ref_sys.sql

A questo punto rientriamo in template1:

# psql template1;

e facciamo in modo che il nuovo db sia un template usabile in futuro:

# UPDATE pg_database SET datistemplate=’t’ WHERE datname=’template_gis’;

ok, ora possiamo creare tutti i nostri db in base a questo template.

# CREATE DATABASE nome_db template=template_gis OWNER nome_utente; (questo va fattoper ogni db)

Quindi popoliamo i db con lo script perl citato prima (come utente normale):

$ /usr/share/postgresql/8.4/utils/new_postgis_restore.pl  /percorso/alla/dir/di/dump/nome_db.dmp | psql nome_db

Vedremo scorrere sul terminale una serie di istruzioni (il db si sta popolando). Fatto.

Alla fine (nel mio caso) ricordarsi di modificare i file “/etc/postgresql/8.4/main/postgresql.conf” e “/etc/postgresql/8.4/main/pg_hba.conf”.

Per il primo decommentare la riga relativa a “listen_addresses” e inserire l’asterisco al posto di “localhost” come riportato:

#——————————————————————————
# CONNECTIONS AND AUTHENTICATION
#——————————————————————————

# – Connection Settings -

listen_addresses = ‘*’                  # what IP address(es) to listen on;

………………

Per il secondo (nella parte finale del file):

# Database administrative login by UNIX sockets
local   all         postgres                          ident

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# “local” is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
host    all         all         0.0.0.0/0             trust
# IPv6 local connections:
host    all         all         ::1/128               trust

altrimenti non sono consentiti connessioni da altri client (nel primo file) e l’esecuzione di pg_dumpall (nel secondo file)


Lascia un commento

linux | qualche tip, qualche trick…

rename

comando per rinominare uno o piu’ file; in particolare mi e’ tornato utile per rinominare una serie di immagini che presentavano alcune lettere maiuscuole, altre minuscole. Per riportare tutto a minuscolo:

$ rename ‘y/A-Z/a-z/’ *

In questo modo tutti i file presenti nella dir corrente vengono trattati e rinominati in lowercase.

,

Lascia un commento

primo script in python | da gradi sessagesimali a gradi decimali

Pubblico il mio primo timido script “operativo ” in python. E’ frutto di un misto tra studio e tentativi vari spulciando tutorial in rete, un piccolo pocket libro e il famoso “diveintopython” :-) .

Il lavoro che presento è l’evoluzione del piccolo script che, attendendo gli input dell’utente, converte i gradi, primi e secondi di un angolo in formato sessagesimale (una coordinata geografica in lat-lon per esempio) in formaro decimale (molto utile per l’elaborazione in molti programmi GIS).

In questo secondo step invece viene letto un file in formato .CSV contenente gli angoli nel formato gradi, primi, secondi (con la virgola come separatore) e viene generato un nuovo file (.CSV) con gli angoli convertiti nella forma decomale. Ecco lo script:

========================

from __future__ import division
angoli= open( “/home/sit/python/angoli.txt”, “r” ) # apre in lettura il file che contiene gli angoli da elaborare
angoli_trasformati=open(“/home/sit/python/angoli_trasformati.txt”, “w”) # genera un nuovo file che conterra’ i risultati
for angolo in angoli:
try:
g, p, s = angolo.strip().split( “,” ) # crea una tupla eliminando eventuali spazi tra valori e separandoli (i valori) con una virgola “,”
res =  float(g), float(p), float(s), (float(g)+(((float(s)/60)+float(p))/60)) # calcola il valore dell’angolo in formato decimale
print res
print>>angoli_trasformati, res # restituisce l’output sul file creato in precedenza
except ValueError:
pass
angoli.close() # chiude lo stat sul file aperto
angoli_trasformati.close() # chiude lo stat sul file generato

========================

ogni commento e’ benvenuto

,

Lascia un commento

il primo “hello world” in python

python logo

A distanza di qualche mese mi sono riavvicinato alla programmazione (una espressione “grossa” per me) tentando di rifare un esperimento: convertire un angolo dal formato gradi primi secondi a decimale.

Riporto il codice python:

gradi = input(‘scrivi i gradi: ‘)
primi = input(‘scrivi i primi: ‘)
secondi = input(‘scrivi i secondi: ‘)
print “l’angolo in formato decimale e’”,float(gradi)+(((float(secondi)/60)+float(primi))/60)

[per evitare di dichiarare ogni input come float() si puo' importare il modulo divisione; ecco il codice modificato:

from __future__ import division
gradi = input('scrivi i gradi: ')
primi = input('scrivi i primi: ')
secondi = input('scrivi i secondi: ')
print "l'angolo in formato decimale e'",gradi+(((secondi/60)+primi)/60)

il risultato non cambia]

salvandolo in un file che potermmo chiamare dms2dd.py ed eseguendolo otterremo quanto richiesto:

$ python2.7 dms2dd.py
scrivi i gradi: 45
scrivi i primi: 5
scrivi i secondi: 5
l’angolo in formato decimale e’ 45.0847222222

Lascia un commento

docky e la barra nera

Ho provato ad installare docky.

docky

docky agganciato al lato sinistro del desktop

L’installazione avviene tramite apt o synaptic:

# apt-get install docky

Unico inconveniente iniziale è la presenza di una fastidiosissima fascia nera a lato (o sotto, a seconda del punto in cui abbiamo agganciato docky). Di questo veniamo anche avvisati da un messaggio che recita più o meno così “…enable composting…“. Per ovviare al problema è necessario un Compositing window manager. Per abilitarlo in Metacity agire come segue:

- lanciamo gconf-editor:

$ gconf-editor

Sul frame di sinistra ci posizioniamo su “apps > metacity > general“; poi, sulla destra, spuntiamo il checkbox in corrispondenza della voce “compositing_manager“.

spuntiamo "compositing_manager"

Fatto: la barra nera dovrebbe scomparire.

Lascia un commento

Debian | creare scorciatoie da tastiera in Gnome

Per impostare scorciatoie da tastiera personalizzate in gnome (su Debian) ho trovato questa splendida spiegazione. La riassumo brevemente.

- da terminale lanciamo gconf-editor:

$ gconf-editor

- nella finestra che compare ci spostiamo sulla voce “apps > metacity > keybinding_commands

- sul pannello di destra compare un elenco di “command_nn“; selezioniamo il “command_1

selezionare keybinding_commands

- doppio clic su “command_1” e impostiamo il percorso al programma che vogliamo eseguire: nel mio caso vorrei lanciare Iceweasel quindi inserisco “/usr/bin/iceweasel

selezione del programma da lanciare

- ci spostiamo poi (nel pannello di sinistra) sulla voce “global_keybindings” , scegliamo il “command_1” scorrendo l’elenco che si presenta a destra; doppio clic su “command_1” e inseriamo la combinazione di tasti che vogliamo dare per il comando in questione: nel mio caso “<Control><Alt>i“.

impostazione della combinazione di tasti

- fatto: da ora in avanti schiacciando contemporaneamente CTRL+ALT+i si avvierà il browser web.

Lascia un commento

importare dati da tabella QGIS a LibreOffice

Se durante una sessione di lavoro con QGIS vogliamo eseguire un “copia/incolla” di dati da una tabella ad un foglio di calcolo LibreOffice puo’ succedere che i dati “incollati” presentino alcuni problemi. In particolare i dati numerici decimali (aree di oggetti poligonali per esempio) vengono mantenuti come “testo” e non numero con tutte le conseguenze negative del caso: se vogliamo fare una somma di valori ottenimao un errore.

Come fare per ovviare a tutto cio’?

Andiamo per punti:

- dalla sessione QGIS apriamo la tabella attributi del layer interessato, selezioniamo tutte o parte delle righe che ci interessano e clicchiamo sul pulsante “copia le righe selezionate nel blocco appunti” che si trova in basso a sinistra della tabella.

- apriamo una sessione di LibreOffice Calc e andiamo su “modifica > incolla” oppure “CTRL+V“;

- ci si presenta la finestra di impostazione dei dati di import che si chiama “Importazione testo” (lo vediamo scritto in alto sulla barra della finestra di popup stessa);

- su “Tipo di carattere” lasciamo “Unicode” come da default e poi scegliamo il simbolo di delimitazione (dovrebbe andare bene la “tabulazione” come proposto); a questo punto ci troviamo i nostri dati nel foglio di calcolo;

- Se schiacciamo contemporaneqmente “CTRL+F8” vedremo alcuni valori diventare blu. Sono i valori numerici. Il resto rimane nero (il testo). In verde eventuali valori calcolati da altri campi (ma essendo dati appena importati non avremo alcun campo di colore verde).

- Nel mio caso ho una colonna che riporta l’area di elementi poligonali e, ahimè, i suoi valori non diventano blu ma rimangono neri. Significa che sono dati importati come testo. Se infatti selezioniamo le celle interessate, tasdo dx e “Formatta celle…” vedremo che il tipo di dato è impostato su “testo”.

- Modifichiamo questa impostazione impostando su “categoria=numero” e “formato=standard”; in questo modo, tornando sul foglio di calcolo e selezionando una delle celle interessate vedremo che il valore indicato nella “riga di digitazione” presenta un’apostrofo all’inizio. Questo significa che la cella dovrebbe contenere numeri ma il valore inserito è un testo. Nel mio caso trovo: ’1011.15.

- Il problema sta nel fatto che il nostro separatore dei decimali è la virgola “,” mentre i dati incollati hanno importato come separatore il punto “.”.

- Basta fare un “trova e sostituisci” (CTRL+ALT+F) sulle celle interessate e sostituire il punto con una virgola.

- A questo punto vedremo automagicamente comparire i nostri valori in blu (ergo sono diventati numeri a tutti gli effetti).

Lascia un commento

ubuntu-party a Schio | pubblicati i video

Gli organizzatori dell’Ubuntu-party che si è svolto a Schio (Vicenza) lo scorso 30 aprile e 1 maggio hanno pubblicato su Vimeo i video dei talk.

Tra i tanti c’è anche il mio soporifero intervento su “Openstreetmap – La mappa del mondo creata dal basso”; se avete difficoltà a dormire e cercate un’alternativa alla conta delle pecore andate qui :-) , sarò lieto di conciliarvi…

Buona notte.

Lascia un commento

libreoffice | installazione su debian

Oggi ho provato ad installare LibreOffice. La suite per ufficio nata dopo che Oracle è entrata in possesso di OpenOffice.

Il progetto fa capo alla “The Document Foundation“. Per farla con un’equazione si potrebbe dire che:

The Document Foundation : LibreOffice = Mozilla Foundation : Firefox (citando la pagina delle FAQ che spiega molto bene questi termini)

Ad oggi sono disponibili per il download vari formati (tutti alla versione Beta del programma):

- Windows;

- Linux 32 bit;

- Linux 64 bit;

- Mac OS X;

- sorgenti.

Ho provato a scaricare la versione per Linux a 32 bit per installarla su Debian testing. I file scaricati sono .rpm (quindi non ci sono pacchettizzati per Debian) ma seguendo questa semplice ed efficace guida si arriva a destinazione. Riassumendo ecco i passi da seguire:

- installare alien per convertire i pacchetti .rpm in .deb:

# apt-get install alien

- scaricare e decomprimere i pacchetti dal sito:

- viene creata una directory “en-US”; spostiamoci in questa cartella.

$ cd en-US

- entriamo nella directory chiamata RPMS:

$ cd RPMS

- convertire gli RPM in DEB mediante alien:

# alien -k *.rpm

vengono convertiti, uno alla volta, tutti i pacchetti con generazione dei relativi .deb.

- installare i pacchetti .deb generati mediante dpkg:

# dpkg -i *.deb

- a questo punto spostarsi nella direcotory chiamata “desktop-integration”  (che si trova in RPMS) e convertire il pacchetto “libreoffice3.3-freedesktop-menus-3.3-1.noarch.rpm”:

# alien -k libreoffice3.3-freedesktop-menus-3.3-1.noarch.rpm

- otteniamo il pacchetto “libreoffice3.3-freedesktop-menus_3.3-1_all.deb” che andremo a installare:

# dpkg -i libreoffice3.3-freedesktop-menus_3.3-1_all.deb

That’s all :-) . Il programma si puo’ lanciare da riga di comando:

$ libreoffice [invio]

Oppure lo troviamo tra le applicazioni per ufficio ben visibile accanto (a chi ce l’ha ancora) a openoffice. Il logo è leggermente diverso.

Ed eccolo in tutto il suo splendore :-)

la finestra di start di LibreOffice

,

Lascia un commento

Iscriviti

Get every new post delivered to your Inbox.