# FLUIdS
Компиляция и установка

- Разархивация дистрибутива FLUIdS
- Компиляция для нетерпеливых
- Автоконфигурация
- Параметры команды configure
- Перевод исходных текстов из формата DOS в UNIX и обратно
- Кодировка исходных текстов
- Изменение кодировки исходных текстов вручную
- Настройка параметров компиляции
- Компиляция
- Исталляция и деинсталляция FLUIdS
- Дополнительные утилиты
- Очистка диска после компиляции

Смотрите также: особенности реализации FLUIdS для операционных сред MS Windows 95/98/NT и OS/2.

| Разархивация дистрибутива FLUIdS |

Документация и исходные тексты системы FLUIdS поставляются в одном архивном файле fluids-cur.tgz (или fluids-cur.zip). Если у Вас имеется GNU версия программы tar, то его можно разархивировать командой

`tar zxf fluids-cur.tgz`

в противном случае воспользуйтесь командой

`gzip -dc fluids-cur.tgz | tar -xvf -`

В результате выполнения команды в текущей директории будет создана директория с именем fluids-4.2.x (где x - номер текущей подверсии системы). Перейдите в эту директорию. В ней Вы увидите три поддиректории

- docs - содержит документацию к системе в формате HTML;
- examples - в ней можно найти найти примеры написания конфигурационных файлов FLUIdS и некоторые другие сопутствующие файлы;
- src - с исходными текстами системы;

а также файлы COPYING с открытой лицензией GNU и CHANGES, содержащий список последних изменений, внесенных в поисковую систему.

| Компиляция для нетерпеливых |

Установки FLUIdS, принятые по умолчанию, вполне разумны. Если Вы не хотите копаться в могочисленных параметрах компиляции, можно сразу переходить к сборке исполняемых модулей. Все, что нужно сделать - это убедиться, что koi8-r - это именно та кодировка, которая Вам подходит, и, быть может, изменить значение параметра MAX_MEMORY_VOLUM (файл ./src/cfg.h).

  - В дистрибутиве, созданом для MS Windows 95/NT, рабочая кодировка определена как windows-1251, а не как koi8-r.
  - Значение параметра компиляции MAX_MEMORY_VOLUM, определяемое в момент компиляции системы, можно будет изменить в конфигурационном файле индексации директивой MaxMemoryVolum.

Перейдите в директорию ./src и выполните две команды:

`configure`

которая приведет к созданию make-файла, адаптированного к операционной системе, в которой Вы работаете, и

`make`

после выполнения которой в директории ./bin должны появиться пять исполняемых модуля FLUIdS - flindex, flsearch, flmerge, fldump и fluids.cgi, а в директориях ./lib и ./include - формируемые библиотеки и заголовочные файлы к ним.

| Автоконфигурация |

FLUIdS первоначально разрабатывалась как продукт, пригодный для использования в разных операционных средах, но прежде всего в системе UNIX. И, хотя сам UNIX в достаточной степени стандартизирован, существует множество его реализаций, отличающихся друг от друга некоторыми элементами программного интерфейса. Иными словами, совместимость разных систем на уровне программного кода неполная, и то, что спокойно компилируется в одной реализации UNIX, в другой может не скомпилироваться, нужно будет выправлять исходные тексты программы под используемую операционную систему.

Автоконфигурация и позволяет избежать такой ситуации. В ее процессе операционная среда тестируется на наличие тех или иных составляющих программного интерфейса, возможностей компилятора и наличия необходимых библиотек.

Автоконфигурация для системы FLUIdS осуществляется просто. Необходимо только запустить на выполнение файл configure, располагающийся в директории ./src. Он был создан с помощью пакета GNU autoconf версии 2.13 и выполнен в виде набора команд оболочки shell.

Итак, выполните команду

`configure`

Первое, что будет проверено - это поддерживает ли используемый в системе компилятор стандарт ANSI C. Если нет - то Вы не сможете откомпилировать FLUIdS, так как исходные тексты системы выполнены именно в этом стандарте. В таком случае Вам нужно будет установить на свою систему компилятор GNU C (gcc), разработанный практически для всех платформ.

Далее в процессе выполнения команды configure Вам будет сообщено, какие именно элементы программного интерфейса тестируются на наличие или отсутствие, а под конец будут сформирован make-файл, адаптированный к Вашей операционной среде. Команда configure может исполняться с параметрами, некоторые из которых будут Вам полезны.

| Перевод исходных текстов из формата DOS в UNIX и обратно |

Некоторые текстовые редакторы весьма критически относятся к форматам редактируемых файлов, поэтому вполне возможна ситуация, когда необходимо превести исходные тексты поисковой системы из формата UNIX в формат DOS (или наоборот), в противном случае их редактирование будет затруднительно.

Такой перевод осуществляется командами

`make to_dos`

  для преобразования исходных текстов из формата UNIX в формат DOS

`make to_unix`

  для преобразования из формата DOS в формат UNIX.

В процессе исполнения этих команд будут скомпилированы и выполнены утилиты dos2unix и unix2dos.

| Кодировка исходных текстов |

Кодировка исходных текстов FLUIdS - важная составляющая поисковой системы. Эта кодировка - та, в которой будет выполняться процесс индексирования и, следовательно, будет создан индексный файл. (К сожалению, пока нет программы-перекодировщика для индексного файла, но в самом индексном файле содержится указание, в какой именно кодировке он находится.)

Все рассуждения, приведенные ниже в данном параграфе, имеют смысл только, если определен параметр компиляции RUSSIAN_RELEASE в файле ./src/cfg.h. В противном случае, этот параграф можно пропустить. (Начальные установки в дистрибутиве определяют этот параметр.)

После развертывания архива исходные тексты системы FLUIdS находятся в кодировке koi8-r (для варианта под Windows 95/NT - в windows-1251). Если это именно та кодировка, с которой Вы работаете в операционной системе, то Вам беспокоиться нечего. Иначе Вам необходимо ее поменять, т.к. большинство сообщений (об ошибках, например) командами FLUIdS выдаются на русском языке. Вы их можете просто не понять.

Изменение кодировки исходных текстов проводится достаточно просто (предполагается, что этап автоконфигурации Вы уже прошли). Выполните одну из перечисленных ниже команд в зависимости от той кодировки, в которую вы хотите перевести исходные тексты FLUIdS:

`make to_koi`

  в кодировку koi8-r

`make to_alt`

  в альтернативную кодировку (cp866)

`make to_win`

  в кодировку windows-1251

`make to_mac`

  в маковскую кодировку

`make to_iso`

  в кодировку ISO-8859-5 или ее варианта для SCO UNIX

Если все прошло гладко, то в дальнейшем можно будет еще раз поменять кодировку исходных текстов, если выбранная вдруг перестала Вас удовлетворять.

После выполнения команды необходимо удостовериться в правильном значении параметра компиляции LOCAL_CHARSET в файле ./src/zcfg.h. Этот параметр может принимать значения arc_koi, arc_alt и т.д. Поэтому начальное значение arc_koi должно измениться на arc_alt для альтернативной кодировки, на arc_win - для виндузовской, и т.д.

Кроме этого, Вам может понадобиться проверить правильность задания букв 'Ё' и 'ё' (cyrillic capital and small letters io) в файле ./src/libz/chars.h. Ибо даже для одной и той же кодировки их расположение в таблице символов может варьироваться. FLUIdS же переводит их в буквы 'Е' и 'е' соответственно.

Так, в начале файла ./src/libz/chars.h есть две строчки

    #define _RUSSIAN_CAPITAL_IO     'Ё'
    #define _RUSSIAN_SMALL_IO       'ё'

Здесь надо убедиться, что буквы в одинарных кавычках - это буквы Ё и ё.

| Изменение кодировки исходных текстов вручную |

Иногда бывает необходимо сменить кодировку исходных текстов вручную. Такое случается, например, когда автоматическая перекодировка сбивается при неудачной компиляции, или же по вине разработчика, когда тот указывает неверное значение параметра компиляции LOCAL_CHARSET, не соответсвующее кодировке исходных текстов.

Ручная перекодировка исходных текстов проходит в четыре этапа:

- На первом этапе скомпилируйте программы-перекорировщики командой

  `make convertors`

  (их работа не зависит от кодировки исходных текстов).

- На втором - настройте файл ./src/zdefs.h. В нашем случае, настройка заключается в установке правильного значения параметра компиляции LOCAL_CHARSET. Установите ее значение в имя той кодировки, в которою хотите перевести исходные тексты. Естественно, это имя должно быть знакомо системе.

- Теперь убедитесь, что кодировка исходных текстов Вас устраивает. Это можно сделать, заглянув в файл ./src/libz/zchars.h. Строки, определяемые параметрами компиляции _UPPER_RUSSIANS и _LOWER_RUSSIANS, должны содержать русские (и возможно, украинские и белорусские) буквы в алфавитном порядке, в верхнем и нижнем регистрах. Если это не так, то необходима перекодировка всего файлового дерева исходных текстов. Она проводится командой

  `xxx2yyy -r -u ./src`

  где xxx - начальная кодировка исходных текстов (ее, конечно же, нужно знать или, на худой конец, можно определить, пытаясь перекодировать копию файла ./src/libz/zchars.h, применяя к нему различные команды xxx2yyy), yyy - конечная кодировка (т.е. та, которую Вы хотите иметь). Опция `-r` как раз и заставляет перекодировать целое файловое дерево, определяемое вторым аргументом, ./src. Опция `-u` нужна для правильной перекодировки украинских букв.

- И, наконец, очистите дистрибутивную директорию командой

  `make clean`

| Настройка параметров компиляции |

Основные параметры компиляции системы FLUIdS собраны в трех заголовочных файлах - ./src/cfg.h, ./src/zcfg.h, ./src/defs.h. В них параметры компиляции задаются директивами `#define`, имеющими два формата:

`#define имя`

и

`#define имя значение`

В первом случае объявляется, что определен параметр с именем имя. В дальнейшем он может использоваться в конструкциях вида

    #ifdef   имя
                 один набор команд
    #else
                 другой набор команд
    #endif

где компилятор будет использовать тот или иной набор команд в зависимости от того, был ли задан указанный параметр или нет. Таким образом можно настроить систему на поддержку определенных функциональных возможностей или же наоборот, эту поддержку отключить, устранив определение соответствующего параметра.

Чтобы убрать определение параметра директиву `#define` надо закомментарить (вывести из области видимости компилятора). Это делается путем добавления символов `/*` в начало строки и символов `*/` в конец:

`/* #define имя */`

Объявления параметров компиляции этого типа всегда можно брать в комментарий.

Во втором случае параметру присваивается некоторое значение, которое может быть числом, символьной строкой и даже именем другого параметра. Выбор подходящего значения для конкретного параметра можно назвать тонкой настройкой системы. В редких случаях определения этого типа можно брать в комментарий, и там, где существует такая возможность, это специально оговаривается.

Скорее всего, Вам понадобится изменить значение одного или нескольких параметров компиляции, установленных по умолчанию. Пожалуйста, обратите особое внимание на параметр с именем MAX_MEMORY_VOLUM (файл ./src/cfg.h). От выбора подходящего значения для него будет зависеть производительность процесса индексации.

cfg.h
  здесь определяются основные параметры компиляции поисковой системы;

defs.h
  в этом файле собраны базовые определения системы FLUIdS. Вряд ли Вам понадобится исправлять здесь что-либо, но такая возможность не исключается;

zcfg.h
  сюда вынесены параметры компиляции, относящиеся к библиотекам libz и libzex.

| Компиляция |

После процедуры автоконфигурации и настройки нужных параметров можно переходить непосредственно к компиляции. Для этого перейдите в директорию ./src (если Вы уже в ней не находитесь) и выполните команду

`make`

Компилятор приступит сначала к созданию необходимых библиотек, а затем перейдет к сборке исполняемых модулей системы.

| Исталляция и деинсталляция FLUIdS |

Инсталляция и деинсталяция предусмотрена только для UNIX систем. По умолчаню исполняемые модули, библиотеки и загловочные файлы инсталлируются в папки директории /usr/local, поэтому для установки системы необходимы дополнительные полномочия (права пользователя root), если, конечно, при проведении процедуры автоконфигурации не была задана другая установочная директория. Инсталляция поводится командой

`make install`

при выполнении которой четыре исполняемых модуля (т.е. кроме fluids.cgi) системы FLUIdS будут помещены в директорию /usr/local/bin, собранные библиотеки - в /usr/local/lib, а заголовочные файлы - в /usr/local/include.

Чтобы обеспечить функционирование системы из под Web-сервера необходимо вручную перенести CGI модуль из директории ./bin в подходящее для него место файловой системы. Так, CGI модуль можно поместить в директорию /www/server/root/cgi-bin, где хранятся программы для Web сервера, либо в любую другую область видимости Web сервера (где не забудьте дать разрешение на выполнение программ). В соответствующую директорию поместите также конфигурационный файл, без которого CGI модуль не сможет работать. (Начальные установки предполагают, что оба файла находятся в одной и той же директории.)

Систему FLUIdS можно деисталлировать командой

`make uninstall`

при выполнении которой из соответствующих папок директории /usr/local будут удалены ранее установленные файлы FLUIdS.

| Дополнительные утилиты |

В FLUIdS входят в качестве дополнения несколько полезных утилит, некоторые из которых применяются при процедуре перекодировки исходных текстов. Возможно, они Вам пригодятся как отдельные приложения, используемые вне рамок поисковой системы. Утилиты компилируются и устанавливаются в директорию ./bin одной командой:

`make utils`

В число прилагаемых утилит входят программа-перекодировщик текстов (conv), программы, переводящие файлы из формата DOS в формат UNIX и наоборот (dos2unix и unix2dos), программа, заменяющая в файлах одну последовательность символов на другую (repl), программа простого поиска последовательности символов в строках текстовых файлов (smpgrep) и программа для перевода имен файлов в нижний регистр (lname). Все утилиты способны обрабатывать множество файлов, задаваемое шаблонами, и рекурсивно работать с директориями.

| Очистка диска после компиляции |

После того, как проведены процедуры компиляции и установки системы FLUIdS, Вы можете очистить свой диск от вспомогательных файлов командой

`make clean`

В результате выполнения этой команды будет удалено подавляющее большинство уже не нужных файлов, созданных во время компиляции FLUIdS. К ним относятся главным образом объектные файлы (файлы с расширением .o или .obj), а также сгенерированные (файлы xxx2yyy.c в директории ./src/libz/tables), библиотечные (с расширением .lib), bak-файлы и некоторые другие.

Дополнительно, выполнив команду

`make distclean`

можно удалить все исполняемые модули FLUIdS из директории ./bin, библитеки из ./lib, заголовочные файлы из ./include, а также файлы, образованные процедурой автоконфигурации. Тогда дистрибутивная директория системы должна принять свой первоначальный вид.

На главную страницу | valera@sbnet.ru