linux

gmailfs con Ubuntu Dapper

Dopo le consuete scorribande online alla ricerca di documentazione corretta, ma soprattutto aggiornata, sono finalmente riuscito a utilizzare il mio spazio Gmail come se si trattasse di un normale filesystem.

Nel repository Universe di Ubuntu sono presenti alcuni pacchetti relativi a gmailfs, ma assolutamente non funzionano. E’ necessario compilare il software dai sorgenti ed utilizzare alcuni piccoli accorgimenti. Sperando di ricordarmi tutto, scrivo qui i passaggi necessari.

Per prima cosa installiamo il pacchetto “module assistant” (repository “universe”), che utilizzeremo per compilare il modulo “FUSE” per il nostro kernel e lanciamolo:

$ sudo apt-get install module-assistant
$ sudo module-assistant

Scegliamo l’ opzione “PREPARE”. Una volta che il sistema è configurato, possiamo selezionare “SELECT” e scorrere la lista fino a che non vediamo il pacchetto “fuse”, che selezioniamo tramite la barra spaziatrice. Premiamo OK e quindi “GET” per scaricare i sorgenti del pacchetto. Fatto questo selezioniamo BUILD e quando ci viene chiesto se vogliamo installare il pacchetto compilato diciamo sì.

Un rapido controllo ci dice se FUSE è up and running:

$ lsmod |grep fuse
fuse 38412 0

Ora scarichiamo alcune dipendenze che ci serviranno in seguito:

$ sudo apt-get install fuse-utils python-dev m2crypto python-pyopenssl cvs pkg-config

Creiamo una directory dove scaricheremo i vari sorgenti:

$ mkdir ~/src
$ cd src

Ora scarichiamo i bindings FUSE per python da CVS e compiliamoli:

$ cvs -d:pserver:anonymous@fuse.cvs.sourceforge.net:/cvsroot/fuse co -P python
$ cd python
$ python setup.py build
$ python setup.py install

Scarichiamo libgmail e compiliamola:

$ wget http://belnet.dl.sourceforge.net/sourceforge/libgmail/libgmail-0.1.5.1.tar.gz
$ tar xzvf libgmail-0.1.5.1.tar.gz
$ cd libgmail-0.1.5.1
$ python setup.py build
$ sudo cp lgconstants.py /usr/lib/python2.4/site-packages/
$ sudo cp libgmail.py /usr/lib/python2.4/site-packages/

Scarichiamo e installiamo gmailfs:

$ wget http://richard.jones.name/google-hacks/gmail-filesystem/gmailfs-0.7.2.tar.gz
$ tar xzvf gmailfs-0.7.2.tar.gz
$ cd gmailfs-0.7.2
$ sudo cp gmailfs.py /usr/local/bin
$ sudo cp mount.gmailfs /sbin/
$ sudo cp gmailfs.conf /etc

Ora editiamo il file /etc/gmailfs.conf inserendo i dati richiesti, che sono:

  • [username] = il nostro username gmail (senza @gmail.com)
  • [password] = la nostra password
  • [filesystem] = un nome univoco di nostra scelta (se è troppo semplice esiste la possibilità che la nostra sessione venga intercettata)

Impostiamo i permessi corretti per evitare che altri leggano la nostra password:

$ sudo chmod 600 /etc/gmailfs.conf

Creiamo il mountpoint e impostiamo i permessi corretti:

$ sudo mkdir /mnt/gmail
$ sudo chown -R nostroutente.nostroutente /mnt/gmail

Affinchè tutto funzioni dobbiamo anche impostare una variabile per python, che altrimenti farà le bizze, mostrando tipicamente questo errore:

TypeError: __init__() got multiple values for keyword argument 'usage'

Impostiamo la variabile d’ambiente:

$ export FUSE_PYTHON_COMPAT=0.1 

(da impostare ogni volta)

Ora siamo pronti per montare il nostro filesystem gmailfs:

$ sudo mount -t gmailfs /usr/local/bin/gmailfs.py /mnt/gmail/

Attualmente ho un problema: una volta montato il filesystem, non riesco ad accedere all’ interno della directory, mentre se il mio utente si trova già al suo interno il tutto funziona.

Un esempio per chiarirmi meglio:

keltik@koky:$ sudo mount -t gmailfs /usr/local/bin/gmailfs.py /mnt/gmail/
Ignored option :rw
keltik@koky:$ cd /mnt/gmail
bash: cd: /mnt/gmail: Permesso negato

mentre:

keltik@koky:$ sudo umount /mnt/gmail
keltik@koky:$ cd /mnt/gmail/
keltik@koky:/mnt/gmail$ sudo mount -t gmailfs /usr/local/bin/gmailfs.py /mnt/gmail/
Ignored option :rw
keltik@koky:/mnt/gmail$ pwd
/mnt/gmail
keltik@koky:/mnt/gmail$ ls -la
totale 8
drwxr-xr-x 2 keltik keltik 4096 2006-09-21 20:47 .
drwxr-xr-x 3 root root 4096 2006-09-21 20:47 ..
keltik@koky:/mnt/gmail$ touch prova.txt
keltik@koky:/mnt/gmail$ ls -l
totale 0
-rw-r--r-- 1 keltik keltik 0 2006-09-21 21:58 prova.txt

Se avete qualche idea … 😉

Happy hacking!

N.B.: Se quando tentate di montare il filesystem ottenete questo errore:

TypeError: __init__() got multiple values for keyword argument 'username'

controllate di aver copiato *tutti* i files nelle directory corrette, come indicato nella guida.

Guida alla sospensione e ibernazione del sistema con Debian GNU/Linux

Ho appena ultimato di scrivere una guida dedicata alla installazione e configurazione degli strumenti necessari alla sospensione e ibernazione del nostro sistema operativo sui moderni laptops e portatili.

La guida tratta la corretta installazione di Suspend2 (patching e configurazione del kernel), la configurazione del bootloader e dei permessi corretti.

La guida, dal titolo Debian: software suspend e ibernazione per laptops, è come sempre ospitata sul Wiki di Debianizzati.Org.