/*****************************************************************************/
                 Как инсталлировать программу "Правда".
/*****************************************************************************/
   
Я, конечно понимаю, что лучше когда программа "сама ставится". Но для этого
надо компьютеру как-то обьяснить что и как ставить, и что делать если возникла
непредвиденная ситуация. Ну, "как ставить", я еще могу написать, на каком-нибудь
скриптовом языке. А вот с непредвиденными ситуациями, пока еще лучше справляется
люди с их "ественным интеллектом". По этому - читайте маны, и делайте все руками.

Я пишу этот файл в июле 2004 года. Сейчас основным сайтом, с которого я раздаю
программу "Правда" является:

   http://www.prawda.newmail.ru/

Оттуда можно взять:
prawda-0.3.0-dev.i386.rpm - rpm для Red Hat
prawda-0.3.0-dev.src.rpm  - rpm с исходникам
prawda-0.3.0-dev.tar.bz2  - архив с исходникам
prawda-0.3.0-cpp.tar.bz2  - архив только с сишниками
prawda-0.3.0-doc.tar.bz2  - архив только с документацией

// -------------------------------------------------------------------
   Что должно быть на Вашей машине для работы "Правды".
// -------------------------------------------------------------------
0) Какой-нибудь Юникс (у меня Red Hat 7.1, но были орлы, которые водружали
   "Правду", например, на Альфу и Digital UNIX)
1) компилятор языка С++ (желательно gcc, но пойдет любой другой)
2) архиватор bzip2 и bunzip2
3) (девелоперская) библиотека ncurces (вроде версия неважна)
4) (девелоперская) библиотека X11 (вроде версия неважна)
5) русские шрифты (хотя бы один) в кодировке koi8

// -------------------------------------------------------------------
   Как установить
// -------------------------------------------------------------------
Сейчас будет как у Задорнова - "Что и это не помогает?!!!".

0) Если у Вас стояла предыдущая версия "Правды" - удалите ее. (Умные люди
   не удаляют, а "прячут".) Удалить надо следующее:
   0.1) ~/.prawdarc - файл настоек
   0.2) ~/prawda (или куда Вы его там ставили) - каталог словарей и других 
        данных.
   0.3) деинсталировать rpm

1) Если у Вас не Red Hat, то переходите к пункту 3.
   Если у Вас Red Hat, или что-то ему подобное, скачиваете rpm и ставите его
   командой:
   
   rpm -i prawda-0.3.0-dev.i386.rpm

2) Программа, конечно, поставится, но на некоторых машинах при запуске сразу 
   же получается SegFault. Это происходит из-за несоответствия версий libc.
   Грамотно исправить эту ситуацию я не могу, а неграмотно - можно пересобрать
   exe-шники на Вашей машине. Для этого случая я держу отдельный архив только
   с cишниками. Делается это так:
   2.1) Скачиваете prawda-0.3.0-src.tar.bz2
   2.2) Разворачиваете
        bunzip2 prawda-0.3.0.src.tar.bz2
	tar xvf prawda-0.3.0.src.tar
   2.3) делаете make -f makefile.exe. Получите массу исполняемых файлов.
   2.4) Получившиеся файлы  prawda и prawda_x кладите в каталог /usr/bin
        (остальные Вам не нужны)
        Должно заработать.

3) Если у Вас не Red Hat, скачиваете prawda-0.3.0.tar.bz2
   3.1) разворачиваете:
        bunzip2 prawda-0.3.0.tar.bz2
	tar xvf prawda-0.3.0.tar
   3.2) собираете:
        make
	Если не собралось, читаете следующую секцию.
   3.3) ставите:
        make install
   Должно заработать.

// -------------------------------------------------------------------
   Как скомпилировать
// -------------------------------------------------------------------

В принципе достаточно дать команду make в каталоге bin.
По этой команде должно произойти следующее:
   1) сделаться все исполняемые модули
   2) разархивироваться все словари
   3) оттранслироваться файл описания грамматики
   4) сформироваться документация на С++ исходники, и описание грамматики

Если у Вас не получились экзешники, то это может быть по одной из следующих
причин:
   1) Я не делаю automake и autoconf (не умею). По этому мой makefile настроен
   исключительно на Red Hat 7.1. Если у Вас другая верия Юникса, другой 
   компилятор, или библиотеки ncurces и X11 лежат в другом месте, Вам придется
   залезть в файл makefile.exe и поправить там переменные COMP, LINK и LDFLAGS.
   2) У меня довольно древний gcc - 2.96. Новые версии компилятора значительно
   строже, многие шалости, которые раньше были Warning-ами стали Error-ами. 
   Если у Вас возникла ошибка на этапе компиляции, пишите мне, больше тут 
   ничего не придумаешь.

// -------------------------------------------------------------------
   Параметры конфигурационного файла
// -------------------------------------------------------------------
При первом запуске "Правда" пишет в Ваш домашний каталог настроечный файл
.prawdarc (обратите внимание на точку перед именем). Там хранятся настроечные
параметры программы:
   path          - каталог, в котором находятся все данные (грамматика и 
                   словари)
   size_x,size_y - размеры окна программы в буквах (действительны только для 
                   Х-версии)
   font          - шрифт, который использует иксовая версия "Правды"
   RTFM          - если этот параметр равен Yes, то программа при старте
                   дает полезный совет
   Figna         - если этот параметр равен Yes, то при неполном переводе
                   фразы пишется слово #фигня. Этот режим нужен для отладки.
   rus           - включить внутренний руссификатор. На некоторых машинах 
                   моя программа почему-то отказывается понимать русскую 
		   клавиатуру. 

// -------------------------------------------------------------------
   Что еще надо настроить
// -------------------------------------------------------------------
Поскольку "Правда" работает с русским языком, надо присвоить переменной 
окружения LANG значение, соответсвующее русскому языку. У меня LANG = ru_RU.koi8r.
Кроме того на вашей машине должен бять хотя бы один русский шрифт в кодировке
koi8r. Если Вы работаете с терминальной версией, надо задать русский шрифт для
терминала. Я это делаю вот так:

   xterm -fn -cronyx-fixed-medium-r-semicondensed--13-120-75-75-c-60-koi8-r

Это мой любимый шрифт. Вы можете использовать любой другой. 
Если Вы работаете с иксовой версией, задайте значение переменной font в файле 
~/.prawdarc. Ну и это... когда будете шрифт выбирать, выбирайте моноширинный 
(фиксированный) шрифт, иначе выглядеть оно будет как... бред пьяного сисадмина.

// -------------------------------------------------------------------
   Какие файлы для чего
// -------------------------------------------------------------------
Настроечные файлы
   version     - версия данных (должна соответствовать версии программы)   
   language.rc - языки, с которых возможен перевод
   z_preproc.rc - перечисление имеющихся препроцессоров
                  (можно удалить, толку от них никакого)
   z_man.rc     - настройки препроцессора для UNIX-манов

Исходники
   src       - всякие С++ исходники
   src/face  - исходники отвечающие за интерфейс
   src/trans - исходники отвечающие за ядро перевода
   src/utils - исходники различных утилит, нужных для работы над переводчиком

Грамматика
   grammar - исходники грамматики
   grammar/english_russian   - алгоритм англо-русского перевода
   grammar/esperanto_russkij - алгоритм Эсперанто-русского перевода

   В каждом этом каталоге  файлы *.cpp *.h являются исходными.
   lang.txt - описание алгоритма перевода с английского (Эсперанто) на 
   русский. Этот файл получается из исходников грамматики командой mklang 
   (лежит в каталоге grammar).

Словари
   dicts - словари
   grammar/english_russian   - словари для англо-русского перевода
       base_enru  - основной словарь переводов
       base_enru1 - словарь служебных слов
       base_fverb - словарь фразовых глаголов
       base_pre   - словарь препроцессора
       base_post  - словарь постпроцессора
       muller     - словарь "для человека"

   grammar/esperanto_russkij - словари для эсперанто-русского перевода
       base_enru  - основной словарь переводов
       base_enru1 - словарь служебных слов
       bokarev    - словарь "для человека"
   
   zform  - словари, описывающие склонения и спряжения
      english   - английские словари словоизменений
      esperanto - Эсперантские словари словоизменений
      russkij   - русские словари словоизменений

Прочее
   doc   - документация
       html_grammar - исходнки грамматики, в виде html-файлов с гиперссылками.
                Эти замечательные и удобные файлы делаются программий zmkdoc.
		Если Вы будете редактировать описание граматики, то командой
		zgrammardoc можно будет получить такой удобный гипертекст, в 
		котором	относительно хорошо видно, что Вы там накуролесили.
       html_src - мои "гениальные" С-шники, в виде html-файлов с гиперссылками.
                Кхм... предупреждаю, что эти html-ки соответствуют 
		"Правде" v. 0.2.0 То есть несколько устарели.
       help   - онлайн-подсказка. Содержимое этих файлов показывается, когда
                вы нажимаете кнопку F1. Тонкий юмор заключается в том, это 
		настоящий html и Вы его можете еще и браузером смотреть, если
		вам это удобно.
       latex  - Сумма всех моих мыслей, относительно машинного перевода,
                описание того, как это делалось, как это работает и как это можно 
                улучшать и развивать.
          idea.ps - основная идея алгоритма машинного перевода, которую использует
	            "Правда".
          lang.ps - язык описания грамматики. "Правда" - предельно гибкая система,
	            и ее можно "программировать" не будучи программистом. Вплоть 
		    до того, что можно научить понимать ее другой язык (например 
		    немецкий).
          grammar.ps - описание грамматики (по сути, алгоритма перевода с 
	            английского на русский).
          esperanto.ps  - описание алгоритма перевода с Эсперанто на русский.
          source.ps  - описание описание моих замечательных исходников (вдруг 
	            кому-то захочется баги править).
          interface.ps  - мои взгляды, на то, каким должен быть интерфейс
	            программы-переводчика. Своего рода ЧаВо на вопросы, которые 
		    мне задают желающие присоединиться к проекту.

       other(readme) - вся остальная документация, которая не влезла в остальные
                разделы.

   src/bin - make-файлы и исполняемые программы
       makefile     - общий маке-файл
       makefile.exe - маке-файл, делающий исполняемые модули (вызывается
	              из общего маке-файла)
       makefile.doc - маке-файл, делающий документацию (вызывается
	              из общего маке-файла)
       Исполняемые модули (делаются при компиляции):
       prawda      - терминальная версия переводчика
       prawda_x    - X-овая версия переводчика
       
       Эти программы могут быть, а могут не быть (они нужны только 
       разработчикам):
       zcompress2  - мой доморощенный сжиматель словарей
       zerolink    - программа, тестирующая описание грамматики, которая
                     обнаруживает неиспользуемые конструкции
       zfrasa_verb - программа, разжимающая словарь фразовых глаголов
       zgrammardoc - программа, делающая гипертекстовое описание грамматики
       zkod        - кодировка win->koi->dos
       zmkdoc      - программа, делающая гипертекстовое описание сишников
       ztest       - программа, тестирующая описание грамматики на корректность
                     синтаксиса
       zword_absend - программа, обнаруживающая в главном словаре слова,
                      которым не заданы способы склонения и спряжения.
   obj - обьектные файлы (в первоначальный момет этот каталог пуст)

// -------------------------------------------------------------------
   Как удалить
// -------------------------------------------------------------------

Если Вы ставили программу из rpm, то просто удалите rpm.

Если Вы ставили программу из makefile, то я поленился написать соответсвующий 
скрипт. Поминаете меня недобрым словом, потом удаляете следующие файлы и
каталоги:
   /usr/bin/prawda
   /usr/bin/prawda_x
   /usr/share/prawda
   /usr/doc/prawda
   ~/prawdarc  (для каждого пользователя)
   ~/prawda    (для каждого пользователя)


