Dieses HOWTO dokumentiert einige meiner Erfahrungen, die ich bei der Kompilierung mit anschließender Installation und Konfiguration der Suchmaschine ht://Dig gemacht habe. Es geht hier darum, meine ganz persönlichen Erfahrungen und Irrwege (und Erfolgserlebnisse!) zu dokumentieren – hauptsächlich als Referenz für mich selbst, falls ich wieder einmal diesen Prozess durchmachen muss. Vielleicht aber kann diese Beschreibung auch dem einen oder anderen wertvolle Hinweise geben.
Im Rahmen einer Neuinstallation meines Webservers, musste ich auch die Suchmaschine ht://Dig neu installieren. Da ich nicht auf die mit der Distribution mitgelieferte Version (3.1.6) angewiesen sein wollte, holte ich mir den aktuellen Beta-Release (Version 3.2.0b3). Nach diversen Problemen mit der Kompilation dieser Quellen mit einem neuen und standardkonformen C++-Compiler, beschloss ich, den aktuellen Snapshot zu verwenden. In meinem Fall war dies die Version 3.2.0b4-20030803.
Mein System ist ein alter Pentium 166 MMX Rechner mit 64 MB RAM und einer 2 GB SCSI-Festplatte. Installiert ist SuSE-Linux 8.0 (Kernel: 2.4@@@genaue Version herausfinden) als Minimalsystem (was anderes geht auf der alten Maschine nicht und es soll ja auch nur als Web-Server dienen).
Die zu indizierenden Webseiten sind fast ausschließlich deutsch, sodass noch spezielle Vorkehrungen zu treffen waren, damit auch eine komfortable Suche über die deutschen Seiten möglich ist. Man benötigt für die korrekte Suche in deutschsprachigen Texten noch ein deutsches Wörterbuch. Möglich ist zum Beispiel die Datei GermanWordlist.zip <http://www.htdig.org/files/contrib/wordlists/GermanWordlist.zip>. Wichtig sind die Dateien: bad_words, german.0, german.aff. Evtl. ist es sinnvoll, die bad_words-Datei anzupassen.
Das bei mir installierte SuSE-8.0-Minimalsystem verfügt leider nicht über die notwendigen Bibliotheken für die Internationalisierung (vgl. <http://sdb.suse.de/sdb/de/html/install-language-switch.html>). Daher musste die Bibliothek glibc-locale hinzuinstalliert werden (Achtung: > 100 MB!).
Configure benötigt für den korrekten Programmlauf eine Variable
$SED: export SED='sed -e'.
Da es sich bei ht://Dig um ein sehr komplexes Programmpaket
handelt, beschloss ich, es komplett in ein eigenes Verzeichnis zu
installieren. In meinem Fall ist dies /home/htdig. Die komplette
Configure-Befehlszeile: ./configure --prefix=/home/htdig
--with-cgi-bin-dir=/home/cgi-bin --with-image-dir=/home/www/htdig --with-zlib=/lib.
Nach Configure musste noch die Verwendung der Header-Dateien
angepasst werden. Es handelt sich um eine relativ aktuelle Änderung
in CVS. Vermutlich entfällt schon recht bald die Notwendigkeit
dieses manuellen Eingriffs. Es gab wohl einen Wechsel der
Dateinamen: include/htconfig.h heißt jetzt include/config.h,
erwartet wird aber von zahlreichen (?) Dateien noch htconfig.h.
Daher muss man von Hand umbenennen: cp include/config.h
include/htconfig.h.
Ein weiteres Problem: undefined reference to __mktime_internal in
libht.so. Tatsächlich wird __mktime_internal zweimal deklariert
(htlib/timegm.c und htlib/mktime.c), aber nur einmal definiert. Die
Datei mktime.c, die die eigentliche Defintion der Funktion enthält,
wird gar nicht kompiliert! Ein Hinweis findet sich in der Datei
ChangeLog.0: "htlib/Makefile.in: Remove mktime.o since source is
included in timegm.o." Lösung: Einfügen der Datei htlib/mktime.c in
die Datei htlib/timegm.c mittels #include "mktime.c".
ACHTUNG: Beim Kompilieren wird der Platzbedarf zwischenzeitlich (zumindest bei mir) sehr (wirklich: sehr) groß (so ca. 250–300 MB)!
Der Rest gestaltet sich wieder einfacher: make install
@@@Vielleicht sollte man hier was schreiben?
| Titel | ht://Dig |
| Autor | Clemens Radl <clemens.radl@googlemail.com> |
| Datum | 2012-09-24 10:55:03 |
| Revision | 1.2 |