Portál AbcLinuxu, 1. května 2025 14:12
Rádi byste chtěli něco podobného, jako mají uživatelé MacOS nebo Visty, tedy rychlé prohledávání metadat? V Linuxu sice existují nástroje, například Beagle, jenže to je žrout prostředků napsaný v jazyce C#. A projekt Kat je mrtvý. Co teď?
Tracker je šikovný malý démonek, který docela rychle umí indexovat mnoho obsahu. Je napsán v jazyce C a sám o sobě zná mnoho formátů, namátkou HTML, PDF, PS, OLE2 (DOC, XLS, PPT), OpenOffice (sxw/odt), StarOffice (sdw), DVI, MAN, MP3, OGG, EXIF, JPEG, GIF, ZIP a další. Dále umí číst přímo z API rozhraní mailových klientů KMail, Evolution a Thunderbird. Navíc se umí napojit na kdovíjaké D-BUSy a hlídat změny v souborech.
Tracker má dobrý UNIXový návrh (démon, utility, GUI, knihovna) a má opravdu fajnový footprint (autor uvádí 4 MB v klidovém stavu). Zdrojáky jsou v dobrém stavu, program prodělává bouřlivý vývoj, ale směřuje to už od začátku správně. Všechny potřebné knihovny jsou součástí balíku, žádné velké závislosti se nekonají.
Také proto, že pokud si s nějakým formátem Tracker neví rady, pustí na to utilitu, která to odedře za něj. A to je myslím správné -- tak například PDFka zpracovává pdftotext, na DOCy zase antiword. Je zbytečné snažit se naprogramovat tucty modulů, které by to stejnak asi nedělaly tak dobře, jako ten nejlepší dostupný program v Linuxu. Program samotný umí číst jen OpenOffice.org soubory, HTML/XML a metainformace z datových souborů (MP3, videa, obrázky).
Indexace probíhá přímo bleskově, vyhledávání je okamžité. K dispozici je také nějaké GUI, to jsem ale neinstaloval (stačí mi řádkový klient, jinak kdyby vás to zajímalo, je postaven na GNOME knihovnách). A existuje i jakási nadstavba pro Nautilus. Ten také nepoužívám, ale vsadím pět dukátů, že je skvělá. Stejně jako nadstavba pro Deskbar.
Co se týče kvality samotného indexátoru, musím jej pochválit. Přítomna je "lámací" knihovna doktora Portera (stemming algoritmy pro mnoho jazyků -- češtinu nehledejte, je to nestemovatelný jazyk). Stoplisty program zná taky, lze také nakonfigurovat omezení pro délku slov. Program předpokládá kódování UTF-8 u textových souborů, co se týče dokumentů (DOC, ODT), tak tam je za převedení do UTF-8 textu zodpovědný delegovaný program.
Všechno ten malý ďáblík strká do ~/.Tracker, používá jakousi kombinaci binárních souborů a SQLite3 databáze. Celý index měl na mém stroji necelých 20 MB. Ve stejném adresáři najdete konfigurační soubor, ve kterém specifikujete jazyk, další adresáře pro indexaci, spojení s poštovními klienty a mnoho jiných užitečných parametrů.
Tracker nabízí velmi zajímavou vlastnost -- tagování. Pomocí příkazu tracker-tag můžete přidávat souborům metainformace, které vám pak pomohou data zařadit.
Jako hlavní nevýhodu vidím to, že program ignoruje přípony, které nezná. Například historie klienta PSI mají připonu .history, budu se muset podívat na způsob, jakým donutit Tracker, aby četl i soubory tohoto typu (nejlépe jen v daném adresáři -- zde v ~/.psi/*/history).
Projekt je zatím řekněme v beta stádiu, ale je dobře použitelný. Při prvotní indexaci jsem zaznamenal asi v polovině citelné zpomalení při indexaci mých zdrojových souborů (je jich hodně), takže jsem démona zastavil, poté znovu spustil. Zřejmě se z toho otřepal a dokončil indexaci ve standardní rychlosti (disk skoro nestíhá). Za 10 minut nebylo co řešit (mám asi 2 GB "smysluplných" dat -- dokumenty, zdrojáky atd).
Jistě, není to asi tak pohodlné, GUI mi nezobrazí náhledy na dokumenty nebo snad kontexty textu, ale kdoví, kam se tenhle projekt za rok posune... Šuškanda -- bude v GNOME 2.18.
lzap@teevee:~$ tracker-stats -------fetching index stats--------- Videos : 10 Text Files : 334 Other Files : 502 Documents : 632 Images : 1167 Folders : 1749 Development Files : 1820 Total files indexed : 6214 ------------------------------------ lzap@teevee:~$ tracker-search qwertzuiop lzap@teevee:~$ echo "qwertzuiop" > test.txt lzap@teevee:~$ tracker-search qwertzuiop /home/lzap/test.txt lzap@teevee:~$ tracker-tag -a hohohoo test.txt lzap@teevee:~$ tracker-search hohohoo /home/lzap/test.txt lzap@teevee:~$ tracker-tag hohohoo : 1 testing : 1 lzap@teevee:~$ rm test.txt lzap@teevee:~$ tracker-search qwertzuiop lzap@teevee:~$
Tiskni
Sdílej:
find
je find
… :-)
Ja uz si ani moc nedokazu predstavit, jak si v domovskem adresari ten bordel vytvorit.Proste mi to prijde automaticke, ze kdyz mam napriklad nejake video, tak ho plesknu nekam do adresare multimedia/video. Je to film, tak pujde mezi filmy, prednaska do adresare prislusneho predmetu v prednaskach a nejaky kratky vtipny filmecek hezky do adresare zabava. Hotovo, rozdeleno, nijak slozite to myslim neni a navic si tim usetrim spoustu problemu s hledanim.
![]()
Já vám to ani nemůžu mít za zlé, protože přesně takhle jsem si to také kdysi představoval. Jenže když pak množství těch souborů po letech poněkud naroste, přestane to být tak jednoduché. Buď totiž budete mít v příslušném adresáři těch souborů několik set (a pak začnou mít nejen Gtk, ale i Qt filepickery značné problémy) nebo těch adresářů bude trochu víc. Jen pro představu, právě jsem si to nechal spočítat a pod svým domácím adresářem mám 35094 adresářů a 389629 souborů. Když vynechám ~/source
, klesne počet v obou případech asi na třetinu, ale i tak je to pořád příliš mnoho na to, aby fungoval tak jednoduchý systém, jak jste tu nastínil.
První skupina by potřebovala spíše nějaký databázový filesystém, kde je možno mít jeden dokument na více místech, nejlépe automaticky. Například "Implementační smlouva" je stejně dobře součástí výběrového řízení i implementace samotné, takže není úplně zřejmé, kam ji umístit - nehledě na to, že můžu z fleku vymyslet další tři adresáře, kde bych ji chtěl mít taky. Bez ohledu na to, jak jsem moc pořádkumilovný, tato situace nemá bez nějakého symlinku řešení.
Za prvé má řešení bez symlinku, konkrétně hardlink. Za druhé přesně tohle je důvod, proč byly linky obou druhů vymyšleny, tak nevím, proč pracně vymýšlet něco jiného.
ls
nad souborem, abychom si vylistovali v jakých adresářích je zařazen # echo "app-misc/tracker -gnome" >>/etc/portage/package.use # emerge -av trackerTohle bude spíše problém tvé distribuce, že z toho neudělají dva balíčky. Za to nikdo z Gnome ani KDE nemůže
Všechny potřebné knihovny jsou součástí balíku, žádné velké závislosti se nekonají.
a beagle byla vzdycky prvni vec co sem zastavoval a odinstalovaval (jakoz i jiny indexovaci nastroje - treba kat). akorat to zpomalovalo ...
zase na druhou stranu, podari-li z toho udelat rychlej, lehkej a presto schopnej program a bude k tomu gui v qt nebo primo kde, tak by to za hrich jiste stalo. precijen clovek je linej a nechce se mu prolyzat tech par adresaru ... plus naka ta statistika kde mam kolik souboru jakyho druhu a jak sou asi velky a stary - to se taky hodiřešení (pokud máte stejný problém) jsem našel tady: http://jamiemcc.livejournal.com/5630.html?thread=57342
Stručně - musí být před spuštěním démona i klienta spuštěn dbus. Tj. spustit dbus-launch a ty dvě proměnné co vyplivne nastavit do prostředí a teprve potom začít spouštět trackerd a klienty. Pak mi to začalo fungovat.if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then # if not found, launch a new one eval `dbus-launch --sh-syntax --exit-with-session` fiPokud používáte KDE spolu s KDM (či jiným display managerem), tak ho přidejte do adresáře /opt/kde/env (případně ~/.kde/env) a učiňte spustitelným (chmod +x nazev_skriptu). Pokud nepoužíváte žádný display manager (Xka spouštíte z konzole pomocí startx), tak by možná mohlo stačit přidat ten skript do vašeho ~/.bashrc. Je prostě potřeba aby ty proměnné prostředí byly nastavené ještě před startem vašeho prostředí. Spustíte li ten skript až z Xek, je už pozdě, protože ostatní spouštěné programy ty proměnné neuvidí.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.