Установка онлайнового словаря dict Автор: © Chris
Gibbs | ||||||||||||||||||||||||||||||||||||||||||||||||||
Для чего писалась эта статьяДля того, чтобы рассказать о значительной работе, выполненной и выполняемой на http://www.dict.org/ и помочь пользователям Linux, независимо от их квалификации, установить работоспособную систему словарного поиска на своем компьтере или сервере сети. СОДЕРЖАНИЕ
ВведениеЯ работаю исключително под операционной системой Linux уже более трех лет. Одна из немногих вещей, которых мне недоставало по сравнению с "той другой операционной системой" -- это доступность дешевых, а зачастую и бесплатных версий коммерческих энциклопедий и словарей. Так что, установив свежую версию S.u.S.E. Linux я был приятно удивлен, обнаружив на своей машине пакет Kdict. Из сопровождающей документации стало ясно, что это лишь оболочка для другой программы, и что, если я пожелаю установить локальный сервер словарного поиска, все нужные компоненты пришлось бы доставать в Интернете. Группа разработки DICT [DICT Development Group] (www.dict.org)Замечание: Этот раздел просто пересказывает содержание файла ANNOUNCE из дистрибутива dict.Группой разработки DICT [The DICT Development Group (www.dict.org)] созданы описанный в RFC 2229 протокол словарного поиска [Dictionary Server Protocol], серверное и клиентское программное обеспечение на C, клиенты на других языках (Java и Perl), а также ей выполнена конвертация имеющихся бесплатных словарей в формат, используемый собственными программами. Протокол словарного поиска (DICT) основан на TCP и определяет транзакции для выполнения запросов и получения ответов, открывающий клиенту доступ к словарным статьям из набора словарных баз данных на естественном языке. Минимум программного обеспечения включает:
Собственно словарные данные, программы для преобразования и форматированного вывода для нескольких свободно распростарняемых словарей доступны в виде отдельных .tar.gz файлов. Условия коммерческого распространения каждого такого словаря могут отличаться от условий распространения для некоммерческого ипользования, так что обязательно прочтите лицензионную информацию в начале файла каждой базы данных. Ниже приводятся приблизительные размеры каждой базы данных, число словарных статей в ней и необходимое для работы с базой данных дисковое пространство.
В скомпрессированном виде все базы данных и индексы требуют для своего размещения примерно 32MB дискового пространства. Дополнительно имеется некоторое количество двуязычных словарей, полезных для переводчиков. Хотя я их не смотрел, судя по разному размеру, разные словари имеют неодинаковую ценность (например, Англо-Уэльский словарь, к сожалению, не слишком хорош, в то время, как Англо-Немецкий по-видимому, может оказаться весьма полезным). Создается впечатление, что все словари находятся в непрерывном развитии, так что следите за обнавлениями. Имеющиеся словари
Как уже говорилось, имеется несколько двуязычных словарей (см. далее). УстановкаВсе ссылки работали во время написания статьи. Если с момента опубликования статьи прошло значительное время, Вам следует посетить http://www.dict.org/ и посмотреть, что изменилось. К сожалению, установка упомянутого программного обеспечения, проходит не столь гладко, как хотелось бы, что отчасти и побудило меня к написанию данного опуса ;-) Для начала Вам потребуется изрядный кусок дискового пространства. Словарь Вебстера 1913 года -- самый крупный и требует для пересборки около 85 мегабайт на диске. dictd, dict and dictzipРаспакуйте файл dictd-1.5.5.tar.gz как обычно. ВАЖНОЕ ЗАМЕЧАНИЕ: Поддержка HTML в данной версии dict отключена. Вам придется заново включить ее для того, чтобы воспользоваться преимуществами Kdict. Загружите файл dict.c в свой любимый текстовой редактор и раскомментируйте строку 1069: { "raw", 0, 0, 'r' }, { "pager", 1, 0, 'P' }, { "debug", 1, 0, 502 }, { "html", 0, 0, 503 }, // Раскомментируйте эту строку { "pipesize", 1, 0, 504 }, { "client", 1, 0, 505 },текст должен выглядеть так, как показано. Теперь можно выполнить ./configure;make;make install. Сами увидите, как много предупреждений выдаст компилятор, но в результате у Вас должны получится работоспособный клиент, сервер и утилита сжатия данных. Словарь ВебстераРаспакуйте dict-web1913-1.4.tar.gz и web1913-0.46-a.tar.gz: $ tar xvzf dict-web1913-1.4.tar.gz $ tar xvzf web1913-0.46-a.tar.gz $ cd dict-web1913-1.4 $ mkdir web1913 $ cp ../web1913-0.46-a/* web1913 $ ./configure $ make $ make db Сделайте большую чашечку чая: на моем 133 мегагерцовом пне это заняло более часа. По завершению примите решение, где поселить словари и скопируйте их туда. Я воспользовался рекомендуемой директорией /opt/public/dict-dbs: $ mkdir /opt/public/dict-dbs $ cp web1913.dict.dz /opt/public/dict-dbs $ cp web1913.index /opt/public/dict-dbs ВордНет 1.6Берется dict-wn-1.5.tar.gz. Достойно сожаления, что один из наиболее полезных словарей отказывается компилироваться без ошибок. Для создания жизнеспособного словаря оригинальные данные необходимо обработать специальной программой. Именно она и создается командой make. К несчастью, Makefile , созданный ./configure из этого пакета не работает. Исправить процедуру automake мне не удалось, но это, уверяю Вас, сработает: $ tar xvzf dict-wn-1.5.tar.gz $ cd dict-wn-1.5 $ ./configure $ gcc -o wnfilter wnfilter.c $ make db Опять же -- процесс не быстрый (> часа на моем 133). По завершению, создайте директорию для словарей (если не сделали этого раньше) и скопируйте туда полученный словарь и индекс: $ cp wn.dict.dz /opt/public/dict-dbs $ cp wn.index /opt/public/dict-dbs Файл Жаргона, FOLDOC, Элементы, Библейский словарь Истона и Словарь библейских имен ХичкокаБерется dict-misc-1.5.tar.gz$ tar xvzf dict-misc-1.5.tar.gz $ cd dict-misc-1.5 $ ./configure $ make $ make db $ cp easton.dict.dz /opt/public/dict-dbs $ cp easton.index /opt/public/dict-dbs $ cp elements.dict.dz /opt/public/dict-dbs $ cp elements.index /opt/public/dict-dbs $ cp foldoc.dict.dz /opt/public/dict-dbs $ cp foldoc.index /opt/public/dict-dbs $ cp hitchcock.dict.dz /opt/public/dict-dbs $ cp hitchcock.index /opt/public/dict-dbs $ cp jargon.dict.dz /opt/public/dict-dbs $ cp jargon.index /opt/public/dict-dbs Обновленный Файл ЖаргонаБерется dict-jargon-4.2.0.tar.gz$ tar xvzf dict-jargon-4.2.0.tar.gz $ cd dict-jargon-4.2.0 $ ./configure $ make $ make db $ cp jargon.dict.dz /opt/public/dict-dbs $ cp jargon.index /opt/public/dict-dbs US GazetteerБерется dict-gazetteer-1.3.tar.gz$ tar xvzf dict-gazetteer-1.3.tar.gz $ cd dict-gazetteer-1.3 $ ./configure $ make $ make db $ cp gazetteer.dict.dz /opt/public/dict-dbs $ cp gazetteer.index /opt/public/dict-dbs Чертов СловарьБерется devils-dict-pre.tar.gz Как и в случае описанных ниже языковых словарей, словарный файл уже создан. Просто распакуйте файлы в нужную директорию. Кто Есть Кто: от 5000 г. до Рождества Христова и до наших днейБерется http://www.hawklord.uklinux.net/dict/www-1.0.tgz$ tar xvzf www-1.0.tgz $ cd www-1.0 $ ./configure $ make $ make db $ cp www.dict.dz /opt/public/dict-dbs $ cp www.index /opt/public/dict-dbs Языковые словариНавестите ftp://ftp.dict.org/pub/dict/pre/www.freedict.de/20000906 Установка языковых словарей не подразумевает пересборки словарных файлов из оригинальный данных, Вам просто нужно распаковать каждый файл в словарную директорию. Конфигурация dictddictd ожидает обнаружить файл /etc/dictd.conf, хотя в командной строке можно указать альтернативу. В нем нужно указать каждый словарь для того, чтобы dictd мог найти сам словарь и соответствующий индексный файл. Например, если Вы просто хотите работать со словарем Вебстера, ВордНет и Чертовым Словарем, то потребуются следующие пункты (в предположении, что для размещения словарей используется директория /opt/public/dict-dbs). database Web-1913 { data "/opt/public/dict-dbs/web1913.dict.dz" index "/opt/public/dict-dbs/web1913.index" } database wn { data "/opt/public/dict-dbs/wn.dict.dz" index "/opt/public/dict-dbs/wn.index" } database devils { data "/opt/public/dict-dbs/devils.dict.dz" index "/opt/public/dict-dbs/devils.index" } Более сложная конфигурацияПо-видимому, возможно управлять правами доступа для пользователей и предпринять другие меры безопасности. Я не пробовал. Если бы меня интересовали вопросы безопасности, то программа в ее теперешнем виде не дает даже малейших оснований доверять каким-либо встроенным в нее функциям безопасности. Впрочем, нужда в ограничении доступа к этим словарям находится за пределами моего разумения, т.к. по определению словари предназначены для всеобщего пользования. Тем не менее, если Вы собираетесь открыть доступ к dictd по локальной сети, то следует иметь в виду несколько связанных с безопастностью моментов т.к. иначе сервер останется незащищенным по нескольким направлениям. Если Вы не устанавливаете dictd на сервер в школе или колледже (или в другой большой сети), то сильно задумываться о сказанном ниже не придется. Впрочем, если уж Вы устанавливаете словари в действительно большой сети, то Вы уже и так в курсе подобных проблем. Перегрузка сервера, получение отказов на запросы, чрезмерный своппингВсе эти симптомы возможны, если сразу много пользователей направят запросы наподобие MATCH * re . Такие запросы возвращают индекс почти для всей базы данных и каждому потребуется 5MB буфер на сервере. Возможными решениями может быть ограничение числа одновременных подключений к серверу, ограничения размера данных, возвращаемых по запросу и ограничение числа одновремено проводимых операций поиска [outstanding searches]. Отказ от обслуживания (DoS)Сервер может остановить любой злонамеренный взломщик, вздумающий установить 1000000 подключений сразу. Для предотвращения подобного антиобщественного поведения ограничьте число подключений по адресу IP или маске. Переполнение буфераЕсли у Вас возникают такого рода проблемы, то следует использовать более надежные процедуры для лога [logging routines], использовать strlen и изучить daemon_log. Использование dictdict ищет файл /etc/dict.conf. Этот файл должен содержать строку с именем машины, которую Вы планируете использовать как сервер dictd, хотя это можно изменить из командной строки. Использование текущей версии dict для доступа к dictd разочаровывает. Если Вы ограничены консолью и не можете воспользваться Kdict -- привыкайте. Худшее свойство dict -- программа может легко "попортить" консоль, после чего скорее всего придется перезапустить консоль для восстановления работы клавиатуры! Такое обычно случается, когда есть проблемы с dictd, например, когда делается попытка использования dict, а dictd не запущен. Т.к. dict -- консольное приложение, он просто посылает свой вывод less. Так что, если Вы не обладаете феноменальной памятью, переносить слова и фразы обратно в командную строку придется через 'cut and paste'. Имеется опция для переноса вывода dict в странично ориентированную программу. Я пробовал команду dict -html -P lynx luser, результат оказался удручающим! Lynx свихнулся, показывая случайные страницы справки и файлы конфигурации, что напомнило мне некоторые вирусы для операционных сетей от MS. Я бы посоветовал: можешь обойтись без использования dict напрямую -- обойдись! Однако, dict необходим для Kdict, а работать с Kdict Вам непременно захочется. KdictДля эффективного использования dict Вам непременно потребуется Kdict с сайта http://www.rhrk.uni-kl.de/~gebauerc/kdict. У меня версия 0.2, про другие сказать ничего не могу. Для работы с Kdict Вам не обойтись без поддержки HTML в dict (см. выше). На картинке показан Kdict "в процессе". Kdict неплохо использует скудные HTML теги, предоставляемые dict, и добавляет свои собственные для улучшения видимости перекрестных ссылок. Все, что выделено красным, можно кликнуть мышью и увидеть определение слова или фразы. Особенно приятно то, чтоKdict позоволяет использовать буфер обмена для того, чтобы выделить слово в любом окне на рабочем столе и вставить его в запрос Kdict. ЗаключениеЭто прекрасный проект, который будет только улучшаться со временем, так что он совсем как Linux и другие программы gnu... Поддержите его! Если вы пользуетесь xscrabble с домашней страницы Матта Чапмена, удовольствие можно увеличить, находя определения незнакомых слов - компьютер даcт вам проср***ся;-).
| ||||||||||||||||||||||||||||||||||||||||||||||||||
Copyright © 2001, Chris Gibbs. Copying license http://www.linuxgazette.com/copying.html Published in Issue 63 of Linux Gazette, Mid-February (EXTRA) 2001 | ||||||||||||||||||||||||||||||||||||||||||||||||||
Вернуться на главную страницу |