Home > Beagle, GNU/Linux, Guide pratiche GNU/Linux > Beaglefs, ovvero il filesystem semantico

Beaglefs, ovvero il filesystem semantico

La principale novità di Windows Vista doveva essere WinFS.
WinFS era un filesystem basato su database, in cui i file erano organizzati in base al loro contenuto o relazione, invece che in cartelle e sottocartelle da riempire a cura dell’utente. Ad esempio creando una cartella “Cucina”, essa doveva venire popolata da tutti i file che parlavano dell’argomento “cucina”, in base ad una ricerca sui tag.
Il progetto è stato rimosso da Vista e forse non lo vedremo mai, ma l’idea, non nuova e ovviamente non della Microsoft, era ottima.

Beagle permette di fare anche questo.

Il segreto è Beaglefs, un modulo per FUSE (vi ricordate?) che permette di creare cartelle contenenti i file che risultano da una certa ricerca. Ovviamente i file non vengono copiati, ma viene creato un link simbolico (del tutto trasparente per le applicazioni) al file “vero”.

Siccome la ricerca, con Beagle, può avvenire sul contenuto, sui tag, sul tipo, o persino sul commento che è possibile inserire nella finestra “proprietà” del file su Nautilus, immaginate le possibili applicazioni.

Purtroppo Beaglefs non è mantenuto da tre anni e soffre di un bug dovuto al cambiamento della sintassi della query di Beagle. Inutile installare la versione presente su Synaptic. Ma niente paura: ho risolto il bug con una piccola modifica al sorgente e l’ho segnalato agli sviluppatori di Beagle😉 Queste sono le cose che mi danno soddisfazione con il software libero!

Quindi chi legge il mio blog ha in anteprima l’unica versione di Beaglefs funzionante con l’attuale Beagle. Che culo.

Bando alle ciance e procediamo.

Installazione

Prerequistiti: ovviamente dovete aver installato Beagle come spiegato in nel primo post su questo motore di ricerca desktop.

1. Scaricate questo file: http://www.megaupload.com/?d=B2Z0HZTP e mettetelo nella vostra cartella home
2. Copiatelo nella directory /sbin: sudo cp beaglefs /sbin
3. Rendetelo eseguibile: sudo chmod a+x /sbin/beaglefs

Utilizzo

Prima di tutto occorre crearci un punto di mount, ovvero una cartella che conterrà la nostra ricerca. Possiamo ad esempio crearla sulla Scrivania. Supponiamo di voler avere una cartella con tutti i file che citano la parola “Roma” (la ricerca verrà effettuata anche nei tag delle fotografie, se li avete valorizzati, ad esempio con F-Spot), creiamo sulla Scrivania una cartella vuota e chiamiamola proprio Roma.
Ora da terminale diamo:

beaglefs "Roma" ~/Scrivania/Roma

Il risultato sarà questo:

Beaglefs

Figo no?

In generale la sintassi è:

beaglefs "query di ricerca" /punto/di/mount

Purtroppo non è possibile smontare direttamente da Nautilus, quindi da terminale diamo:

fusermount -u ~/Scrivania/Roma

Utilizzi divertenti

Combinate questa nuova funzionalità con la sintassi di ricerca di Beagle per ottenere risultati carini:

  • beaglefs "ext:mp3" ~/Scrivania/mp3
    una cartella con tutti gli mp3, anche se li abbiamo messi per sbaglio da un’altra parte invece che in musica
  • beaglefs "artist:beatles" ~/Scrivania/Beatles
    tutte le canzoni dei Beatles
  • beaglefs "Parigi ext:jpg" ~/Scrivania/Foto_Parigi
    tutte le fotografie di Parigi che avete taggato con F-Spot

E se volessimo montarle in fstab? Aggiungiamo una riga come questa:

beaglefs#Roma /home/guido/Roma fuse user 0 0

E’ tutto.

  1. fiero_alleaten
    6 luglio 2009 alle 12:34

    Davvero interessante! Per pigrizia fino ad ora non ho installato Beagle, ma credo che lo farò presto, appena avrò un minimo di respiro dagli esami. Peccato però che il progetto non venga mantenuto, sembra davvero ricco di prospettive. È strano questo calo di interesse, è dovuto alla mancanza di sviluppatori o allo sviluppo di altri progetti?

    • 6 luglio 2009 alle 21:12

      L’autore mi ha detto che adesso beaglefs ha un altro mantainer, ho mandato la patch.
      Anche l’aggiornamento per il plugin di firefox l’ho sollecicato io (ma l’hanno fatto loro).

  2. Sara
    6 luglio 2009 alle 14:38

    Molto interessante Guido.
    Dopo il comando
    beaglefs “Roma” ~/Scrivania/Roma
    ricevo questo errore:
    beaglefs: error while loading shared libraries: libfuse.so.2: cannot open shared object file: No such file or directory

    Credo che il problema sia dato dal fatto che ho un SO a 64bit.
    Ho provato a creare un collegamento simbolico alla cartella lib32 coi comandi
    sudo ln -s /lib/libfuse.so.2.7.4 /lib32/
    sudo ln -s /lib32/libfuse.so.2.7.4 /lib32/libfuse.so.2
    ma poi ottengo
    beaglefs: error while loading shared libraries: libfuse.so.2: wrong ELF class: ELFCLASS64

    Consigli?

  3. 6 luglio 2009 alle 15:00

    Interessantissimo.🙂

    Penso proprio che lo proverò

  4. telperion
    6 luglio 2009 alle 15:59

    Ma se beagles con estensioni varie fa tutte queste belle cose
    (e c’è a chi queste cose servono tantissimo)
    perchè buttarsi su tracker o su uno dei vari progetti “semantici” che nascono falliscono e muoiono ogni 3 minuti, e non portare avanti invece beagles?
    Giuro, io dei “decisionsti” dei vari DE e distribuzioni, ogni giorno che passa ne ho sempre più le scatole piene.

  5. Sara
    6 luglio 2009 alle 17:49

    Ok, ho risolto. Spiego come.

    Ho scaricato questo pacchetto
    http://packages.ubuntu.com/jaunty/i386/libfuse2/download
    Ho estratto il file libfuse.so.2.7.4 nella home e ho dato
    sudo mv libfuse.so.2.7.4 /lib32/
    sudo ln -s /lib32/libfuse.so.2.7.4 /lib32/libfuse.so.2

    Poi mi si è presentato un altro problema, ovvero
    beaglefs: error while loading shared libraries: libbeagle.so.1: cannot open shared object file: No such file or directory

    Ho quindo risolto allo stesso modo.
    Ho scaricato il pacchetto da qui
    http://packages.ubuntu.com/jaunty/i386/libbeagle1/download
    Ho estratto il file libbeagle.so.1.0.2 nella home e ho dato
    sudo mv libbeagle.so.1.0.2 /lib32/
    sudo ln -s /lib32/libbeagle.so.1.0.2 /lib32/libbeagle.so.1

    Funziona perfettamente.

    • 7 luglio 2009 alle 21:21

      Potevi chiedermi il sorgente e te lo compilavi nativamente su 64bit😉

  6. 6 luglio 2009 alle 18:18

    In passato avevo provato anch’io beaglefs e mi ero trovato bene, poi quando si è rotta la compatibilità ho lasciato stare.

    Visto che ti interessi di Beagle, sai mica se è possibile far indicizzare (di nuovo) in tag XMP embedded nelle foto?

    C’è questo bug aperto dal 2008 e ancora nessuna novità
    https://bugs.launchpad.net/ubuntu/+source/beagle/+bug/292106

    • 6 luglio 2009 alle 21:16

      Il mantainer diceva che alcuni backend non funzionano più con mono 2. Ci stanno lavorando.

  7. vaino
    7 luglio 2009 alle 12:24

    Cavolo veramente bello, ho seguito dal primo articolo ma non ho mai installato perchè voglio imparare ad usare un po il terminale quindi cercavo con locate.
    Oggi leggendo il tuo articolo mi son detto quasi quasi lo installo perchè mi sembra una figata.
    Complimenti per l’ottimo blog, e ovviamente per aver risolto il bug.
    Magari io sapessi usare il pc come te.
    Sei veramente bravo e spieghi bene le cose ciao e grazie
    Vaino

  8. kimj
    10 luglio 2009 alle 2:30

    ottimo!!!

    guido, sei in grado di creare una gui in gambas?

  9. lorenzo
    14 luglio 2009 alle 14:38

    però interessante! uso questa opzione su kde con gwenview + nepomuk, ma quando mi ritroverò su gnome proverò il cagnaccio.

  10. ukay
    25 luglio 2009 alle 13:38

    ohhh che bello🙂 quanto tempo ho atteso che qualcuno sapesse come risolvere questa cosa🙂
    già installato e in fase di utilizzo, ti ringrazio molto per il contributo e se può servirti ti segnali mediafire.com al posto di megaupload, che non ha limiti né tempi di attesa.

    ciao e grazie ancora,
    uk

  11. giopao
    27 settembre 2009 alle 12:04

    Si possono avere i sorgenti per compilarla con una distro a 64 bit?

  12. sim_0
    16 ottobre 2009 alle 13:17

    Ti devo correggere su due cose, la prima è che win fs non è un filesystem, ma un sistema di gestione di metadati, la seconda è che non sia stato implementato in Vista! Su Vista è possibile creare una cartella virtuale a partire dal modulo di ricerca (il “salva ricerca”) ed è possibile la selezione dei files per metadati, tra cui anche il tag. Questo giusto per onor del vero!

  13. astro
    26 ottobre 2009 alle 16:18

    Grazie, la guida è molto esaustiva. Ho eseguito la procedura alla lettera installando anche l’interfaccia grafica e beaglefs fa il suo lavoro, tuttavia ho due domande da farti:

    1- come mai riavviando il sistema i volumi si cancellano? Come posso renderli permanenti?

    2- E’ possibile non montare i volumi sulla scrivania ma soltanto in places?

    • 26 ottobre 2009 alle 20:39

      1) sì è possibile, se leggi l’ho anche spiegato

      E se volessimo montarle in fstab? Aggiungiamo una riga come questa:

      beaglefs#Roma /home/guido/Roma fuse user 0 0

      2) sì, basta che li monti in un posto diverso da /media (ad esempio in /mnt) poi in nautilus aggiungi il segnalibro.

  14. astro
    26 ottobre 2009 alle 22:21

    Grazie…essendo nuovo del mondo linux semplicemente ignoravo cosa fosse “fstab”.

  1. 10 luglio 2009 alle 8:35

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: