2005年10月23日星期日

軟體介紹:Beagle

首次接觸Google Desktop以來,就盼望著Linux版本的誕生,不論是Google自家出品還是其他開放源碼計劃產品也好,即使功能遠遜於前者也沒相干,對早已為文件管理費煞思量的我來說,聊勝於無的方案也好過什麼都沒有。

對經常要找出藏於十多層目錄內的文件,那樣的工作厭惡極了,即使有”Recent Documents”這功能也不見得有多管用,只要文件量一多,再常用的文件都照樣會石沉大海。

最理想還是使用文字搜尋,只要預先建立索引資料庫,並有程式在背景更新,在不影響系統運作的同時,提供最速捷的搜尋服務,只要打幾隻關鍵字就可以把文件叫出來,簡單又方便。

可是為此而試了幾個Linux上的方案,結果都不符及要求,例如doodle及Gnome的search tool,各自都有自己的問題,例如說doodle就是怎樣也不鳥純文字檔,但那是我最常用的文件格式啊!而Gnome的search tool則只能提供檔案名字的索引服務,本來還算是聊勝於無的東西,可是索引的建立並不支援漸進式更新,每次都要花費大量時間重新製作,嚴重影響系統運 行。

這個情況一直得不到改善,直至我發現到Beagle為止。

Beagle的功能與Google Desktop相若,同樣地提供文件索引的建立及搜尋服務,所支持的文件類型如下:

  • Image:Office-doc.png documents
  • Image:Stock_mail.png emails
  • Image:Gnome-globe.png web history
  • Image:Office-doc.png IM/IRC conversations
  • Image:Source-doc.png source code
  • Image:Image-doc.png images
  • Image:Music-doc.png music files
  • Image:Office-doc.png applications

看來跟Google Desktop差不多呢,急不及待立即便把Beagle裝了起來,玩了幾天,這裏是我少許的心德:

安裝:

在Debian sid下的安裝步驟並不複雜,首先用apt-get把Beagle及其他套件抓下來:

apt-get install beagle gtk-sharp2 mono-xsp wv

之後理論上只要執行`beagled`便可以進行索引及搜尋功能,可是就這樣的設定並不能發揮Beagle的效能,甚至乎會令人失望。在Beagle wiki裏提及過二項可以提高Beagle表現的Kernel功能,雖然那並非必需的設定,但我建議最少要打開其中一項。

首先是檔案系統的Extended attributes,這項功能容許用戶為檔案加入額外的資訊,Beagle因此便能迅速地得知那些檔案需重建索引,若沒有打開這個功能的話,Beagle會使用sqlite為基礎的回饋機制,那可是慢得不能接受的。

故此那其實是非用不可的功能才對,而啟動的方法也不算複雜,只要修改/etc/fstab,找出/home在處的檔案系統,並加入user_xattr這項參數。

假設你的/etc/fstab有這麼一行:

/dev/hda6 /home ext3 defaults 0 2

改為:

/dev/hda6 /home ext3 defaults,user_xattr 0 2

接著重載/home

mount -o remount /home

成功的話在mount指令裏會見到這行:

/dev/hda6 on /home type ext3 (rw,user_xattr)

而另一項功能是inotify,一種用作檔案監控的系統,Beagle可利用inotify得知最新修改的檔案,從而提供live query之類的功能。但inotify是於Linux Kernel 2.6.13-rc3及以後的版本才開始提供,所以不打算在這裏談及,詳情可參考Inotify Kernel - Beagle

建立索引:

建立索引並提供搜尋服務是beagled的工作,那是個在背景執行的程式,而且不需要root執行,在shell裏輸入beagled便可。

Beagle會盡可能在不影響其他程式的狀態下進行索引建立的工作,代價當然是更長的製作時間,如果想提高速度的話可以設置一個環境變數強逼Beagle全速進行索引建立:

export BEAGLE_EXERCISE_THE_DOG=1

為確保每次登入時Beagle都會自動執行,請打開Desktop->Preferences,點擊Sessions,然後把Beagled加入。 (注:新版本的beagle會自動加入)
另外要留意是Beagle並不懂得直接處理FireFox的web history,需依懶FireFox的plugin輔助。先到Firefox Extension - Beagle下載beagle.xpi,把它安裝到FireFox後,所有曾瀏灠過的網頁便會自動記錄到Beagle的資料庫中。

搜索:

Beagle提供三種不同的介面進行搜尋,包括web介面、指令輸入以及專用的程式。最簡單是在灠瀏器打開 http://localhost:8888/Beagle/search.aspx 便可以立即搜索,而習慣輸入指令的用家可以使用`beagle-query `這個指令 ,最後那個專用的程式名字叫做best,於Applications->Accessories內可以找到。

(注:best已經被beagle-search所取代,捷徑在Applications->Accessories->Search)

設定:

通過`beagle-setting`這個指令便可以對Beagle進行簡單的設定,好像說除家目錄外,還有什麼目錄希望制作索索呢,又或者除本地用戶外,準容那些機資搜索這部機器的資料等等。

結束:

停止Beagle只需要輸入`beagle-shutdown`這個指令。

結論:

雖然Beagle已經提供與Google Desktop相若的功能,可是要改良的地方還有很多,就剛是穩定性一項已經需要大大改善,經常無故關閉,但更多時卻會化為zombie,霸著大量的系統 資源(有時高達100多MB)而不工作,即使用beagle-shutdown也沒反應。

至於核心的搜尋速度呢,就恰於其份,感覺上及不上Google Desktop,我想大概沒人期望它能跑贏Google吧? ;P

說到這裏,Beagle雖然有不少缺點,但我相信這是一個非常好的開始,所需要的是更多人的參與,不論是軟件開發或用戶意見都同樣非常重要,可惜我對C#一竅不通,只有參與討論一途呢……幸好剛有人加入了一個叫pybeagle(python binding for beagle)的系統,以後除C#外,還可以使用python進行開發,那麼便可以有更多程式員也可參與Beagle的開發呢!

資料:

Beagle官方網頁

沒有留言:

Creative Commons License
本網誌Ben Lau製作,以共享創意署名-非商業性-相同方式共享 3.0 香港 授權條款釋出。