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.
dimenticavo … ho ancora qualche invito gmail (una ventina), se vi interessa fate un fischio 😉
ed io ne ho 98, se finissero quelli di keltik fatevi avanti 😀
ciao a tutti, io ho lo stesso problema di keltik, per poter usare la partizione gmail, devo entrare nella cartella di mountpoint prima di montare il filesystem…altrimenti non ho i permessi di accesso. qualcuno ha risolto? Uso Ubuntu Edgy se può essere utile… Grazie
ciao!
allora … in ubuntu edgy ci sono stati alcuni cambiamenti, anche perchè libgmail proprio non funzionava!
dovrebbe essere sufficiente installare i pacchetti gmailfs e python-libgmail (oltre a fuse). poi crei un link a /usr/lib/python2.4/site-packages/gmailfs.py in /usr/bin
poi crei un mount point, ad esempio /mnt/gmailfs
a quel punto puoi montare il filesystem.
io ad esempio ho in /etc/fstab la linea:
/usr/bin/gmailfs.py /mnt/gmailfs gmailfs noauto,username=tuo_utente_senza_@gmail.com,password=tua_password,fsname=zOlRRa
e dando il comando: # mount /mnt/gmailfs ottieni:
Ignored option :rw
Ignored option :noauto
e puoi fare quel che vuoi nel tuo spazio gmail (come utente root).
faccio ancora qualche esperimento e poi credo che scriverò qualcosa di più preciso e lineare.