-*- mode: text; mode: auto-fill -*-
$Id: INSTALL.RUS,v 1.9 2006/03/03 17:10:06 cher Exp $

Очень краткое руководство по установке ejudge
=============================================
В данном разделе описывается установка ejudge с минимальным
ручным конфигурированием. Если данный вариант установки не
сработал на Вашей системе или Вас не устраивают настройки по
умолчанию, читайте далее более полное руководство по
инсталляции.

Итак, по шагам:
1. Создайте пользователя ejudge с домашним каталогом
/home/ejudge. Желательно, чтобы для пользователя ejudge была
создана группа ejudge. Если Вы не знаете, как создавать новых
пользователей, обратитесь, пожалуйста, к документации по Вашей
системе.
2. Создайте каталог /home/judges, владельцем которого является
пользователь ejudge. Для создания каталога Вам могут
потребоваться привилегии пользователя root. Для создания
каталогов достаточно выполнить следующие команды из-под root:
mkdir /home/judges
chown ejudge:ejudge /home/judges
3. Войдите в систему под пользователем ejudge, разархивируйте и
скомпилируйте библиотеку reuse в домашнем каталоге:
cd ~
tar xvfz REUSE-ARCH-DIR/reuse-VERSION.tgz
cd reuse/source
./configure
make
make install

Здесь REUSE-ARCH-DIR - это каталог, в котором находится архив
библиотеки reuse. VERSION - версия библиотеки. Всегда
используйте самую последнюю версию (на текущий момент -
это 4.2.3).
4. Перейдите снова в домашний каталог и разархивируйте ejudge
cd ~
tar xvfz EJUDGE-ARCH-DIR/ejudge-VERSION.tgz
cd ejudge
5. Сконфигурируйте ejudge
./configure --prefix=/home/ejudge/inst-ejudge  --with-reuse=/home/ejudge/reuse  --enable-charset=koi8-r --enable-socket-path=/tmp/userlist-socket --enable-super-serve-socket=/tmp/super-serve-socket --enable-contests-home-dir=/home/judges --enable-conf-dir=/home/judges/data --enable-cgi-conf-dir=../cgi-data --with-httpd-cgi-bin-dir=CGI-BIN-DIR --with-httpd-htdocs-dir=HTDOCS-DIR

Здесь CGI-BIN-DIR - это каталог CGI скриптов веб сервера
(например, это может быть /home/httpd/cgi-bin), HTDOCS-DIR -
корень документов веб сервера (например, /home/httpd/html).
Чтобы уточнить эти пути обратитесь к документации по Вашей
версии Linux.
6. Скомпилируйте и проинсталлируйте систему:
make
make install
7. Запустите программу ejudge-setup, перейдите в раздел
"Administrator identity", заполните требуемые поля:
./ejudge-setup
Admin ID:       1
Admin Login:    ejudge
Admin e-mail:   YOUR-E-MAIL
Admin name:     Ejudge administrator
Admin password: PASSWORD
Затем сгенерируйте настроечный скрипт с помощью "Save setup
script". При выборе этого пункта меню будет запрошено имя
скрипта, назовите его ejudge-install.sh.
8. Из-под пользователя root выполните настроечный скрипт.
su -
cd ~ejudge/ejudge
./ejudge-install.sh
9. Запустите систему. Запуск программ должен выполняться из-под
пользователя ejudge:
cd /home/judges/data/db
~/inst-ejudge/bin/userlist-server -D &
cd /home/judges/compile
~/inst-ejudge/bin/compile conf/compile.cfg &
cd /home/judges
~/inst-ejudge/bin/super-serve &
~/inst-ejudge/bin/job-server &

Убедитесь, что права доступа к каталогу /home/ejudge позволяют
читать файлы в нём всем пользователям. Некоторые дистрибутивы
Linux создают домашний каталог пользователей с правами 0700.
В этом случае CGI-программы и необходимые библиотеки просто
окажутся недоступными для web-сервера. Права на домашний каталог
пользователя ejudge необходимо установить в 0755 или 0775.

Для дистрибутивов Fedora Core убедитесь, что подсистема SELinux
отключена. Для этого проверьте содержимое файла
/etc/selinux/config. Для подробной информации, или если Вы
хотите настроить SELinux для работы ejudge, обратитесь к
документации на SELinux (man selinux).

Установка системы ejudge завершена. Теперь можно в строке URL
браузера (естественно, httpd-сервер должен быть запущен) указать
http://localhost/cgi-bin/serve-control.

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

Руководство по инсталляции системы ejudge
=========================================

Данный файл содержит инструкции по инсталляции и начальной
настройке системы ejudge. Инсталляция и настройка состоят из
следующих шагов:
  1) конфигурирование системы для компиляции;
  2) компиляция системы из исходных текстов;
  3) инсталляция скомпилированных файлов;
  4) генерация настроечного скрипта;
  5) выполнение настроечного скрипта;
  6) проверка работоспособности системы;
  7) настройка системы на постоянную работу.
Далее все шаги рассмотрены подробно.

Настоящая инструкция по инсталляции применима только к системе
ejudge, начиная с версии 2.1.30. Для более ранних версий системы
инструкции по инсталляции доступны в сети Интернет по адресу:
http://acm.msu.ru/ejudge/old-install.shtml. Тем не менее,
настоятельно рекомендуется использовать последнюю версию
системы, которую всегда можно найти на сайте системы ejudge по
адресу http://acm.msu.ru/ejudge/download. 

Требования к программному обеспечению
-------------------------------------
Для того, чтобы система ejudge могла быть скомпилирована,
необходимо присутствие следующих инструментальных средств:
  - компилятора языка Си gcc;
  - утилиты make;
  - пакета локализации gettext и xgettext;
  - библиотеки для анализа XML-файлов expat.
Как правило, все эти инструментальные средства устанавливаются
по умолчанию при инсталляции ОС Linux.

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

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

Для конфигурирования используется скрипт configure, находящийся
в каталоге исходных файлов программы. Запустив его с опцией
--help, например,
configure --help
можно получить полный список всех опций, поддерживаемых
скриптом. Задача скрипта configure состоит в генерации всех
Makefile, скриптов компиляции программ, файла config.h в
соответствии с автоматически определёнными и заданными
пользователем настройками.

Если Вы используете копию ejudge из CVS, скрипт configure в ней
отстутствует, и его необходимо сгенерировать с помощью команды
autoconf (без параметров). Для этого требуется версия утилиты
autoconf не ниже 2.59.

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

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

    --with-reuse=REUSE-PATH
        Данная опция позволяет задать путь к корневому каталогу
        инсталляции библиотеки reuse. Путь REUSE-PATH должен
        быть абсолютным путём и указывать на каталог, в котором
        существуют каталоги bin, include и lib, содержащие
        соответствующие компоненты библиотеки reuse.

        Для компиляции системы ejudge требуется библиотека reuse
        версии не ниже 3.0.17. Если по указанному пути
        библиотека найдена не будет, или версия библиотеки не
        удовлетворяет указанному выше ограничению, скрип
        configure завершится с ошибкой. Рекомендуется
        использовать последнюю версию библиотеки reuse (в
        настоящий момент - 4.2.3).

        Как правило, библиотека reuse компилируется и
        инсталлируется в том же каталоге, в который был
        развёрнут архив библиотеки. Таким образом, если исходный
        код библиотеки reuse был развёрнут в каталог
        /home/you/reuse и там же был скомпилирован и
        проинсталлирован, в каталоге /home/you/reuse должны
        существовать каталоги bin, include и lib, содержащие
        конфигурационные скрипт, заголовочные файлы для программ
        на Си или Си++ и библиотечные файлы соответственно.
        Чтобы использовать таким образом проинсталлированную
        библиотеку reuse в командной строке утилиты configure
        необходимо указать опцию --with-reuse=/home/you/reuse.

    --enable-charset=CHARSET
        Данная опция позволяет задать "внутреннюю" кодировку
        символов, то есть кодировку, используемую для
        представления строк в памяти программ. Если данная опция
        не указана используется кодировка по умолчанию "UTF-8".
        Для работы со строками используются строковые функции
        стандартной библиотеки языка Си, поэтому внутреняя
        кодировка символов должна быть с ними совместима, то
        есть не допускать нулевые байты в середине символьной
        строки. Например, кодировка UTF-16 (Unicode) не является
        такой кодировкой, а кодировка UTF-8 --- является.

        Все текстовые конфигурационные файлы (.cfg) считаются
        уже хранящимися на диске во внутренней кодировке,
        поэтому при их считывании преобразований не
        выполняется. При считывании XML-файлов выполняется
        преобразование из кодировки, указанной в заголовке
        XML-файла во внутреннюю кодировку. Для этого
        используется функция `iconv' стандартной библиотеки
        языка Си, поэтому должны поддерживаться практически все
        возможные преобразования кодировок.
        Все XML-файлы генерируются во внутренней кодировке.

        При генерации HTML файлов в программах системы ejudge в
        их заголовке проставляется кодировка, указанная в
        соответствующих конфигурационных файлах в
        конфигурационных переменных (по умолчанию, это
        внутренняя кодировка). Теоретически, кодировка HTML
        документов может не совпадать ни с кодировкой
        конфигурационных файлов, ни со внутренней кодировкой.
        Однако, текущая версия системы ejudge не поддерживает
        перекодирование строк из внутренней кодировки в
        кодировку HTML-документа. Все символьные строки
        вставляются в генерируемые HTML документы без
        перекодировки, что может привести к некорректным
        документам, если внутренняя кодировка и кодировка HTML
        документов не совпадают. Поэтому в настоящий момент не
        рекомендуется использовать для HTML документов
        кодировку, отличную от системной. Поэтому лучше всего в
        конфигурационных файлах не указывать кодировку HTML
        документов явно, а использовать значение по умолчанию.

        Поэтому при конфигурировании системы ejudge в данной
        опции рекомендуется указывать системную кодировку,
        установленную по умолчанию в данной системе. Для Linux,
        настроенных на работу с русским языком --- это "KOI8-R",
        "UTF-8", иногда "MICROSOFT-1251". Определите, какая в
        Вашей системе стоит кодировка по умолчанию (например, с
        помощью команды "echo $LANG") и укажите её в данной
        опции.

1.2. Рекомендуемые опции
------------------------
Опции данной группы позволяют задать значения по умолчанию
некоторых конфигурационных переменных системы ejudge, что
позволить упростить дальнейшую настройку системы и сократить
количество необходимых конфигурационных файлов. Если потребуется
задать новые значения конфигурационных переменных, отличающиеся
от заданных при конфигурировании системы, достаточно будет
указать их в конфигурационном файле.

В частности, указание значений ключей --enable-charset,
--enable-socket-path, --enable-contests-dir приведёт к тому, что
все конфигурационные переменные, необходимые для работы CGI
программ master, judge, team, register, users, будут иметь
корректные значения по умолчанию. Как следствие,
конфигурационные файлы master.cfg, judge.cfg, team.cfg,
register.xml, users.xml и каталог конфигурационных файлов для
работы CGI программ будут не нужны.

Далее дано описание всех рекомендуемых опций.
    --prefix=PREFIX
        Данная опция позволяет указать каталог, в который будут
        проинсталлированы исполняемые файлы и библиотеки системы
        ejudge. Если опция --prefix не задана, её значение по
        умолчанию равно ${HOME}/inst-ejudge, то есть система
        будет инсталлироваться в каталог inst-ejudge текущего
        пользователя. Возможность указания какого-либо
        стандартного каталога инсталляции (/usr, /usr/local) в
        настоящее время не тестировалась. Ею следует
        пользоваться с осторожностью, поскольку возможны
        конфликты имён инсталлируемых файлов системы ejudge и
        стандартных заголовочных и библиотечных файлов.

        По умолчанию каталог инсталляции системы ejudge будет
        иметь следующую структуру (её можно изменить с помощью
        опций тонкой настройки).
                bin/            исполняемые файлы
                cgi-bin/        исполняемые файлы CGI программ
                include/        заголовочные файлы библиотеки
                                libchecker
                lib/            объектные модули библиотеки
                                libchecker
                libexec/ejudge  различные вспомогательные
                                скрипты и программы
                share/ejudge    библиотека testlib (pascal)
                share/locale    каталог сообщений

        Если Вы точно не уверены, какое значение указать в
        данной опции, сохраните значение по умолчанию.

    --enable-socket-path=PATH
        Данная опция позволяет указать путь к UNIX-сокету,
        который используется для обмена данными между сервером
        базы пользователей userlist-server и всеми остальными
        программами. Путь PATH должен быть полным путём к
        некоторому файлу (возможно пока не существующему) в
        существующем каталоге. При старте программа
        userlist-server будет создавать сокет в этом каталоге.
        Путь PATH не должен находиться на файловых системах,
        импортируемых из сети (smb, nfs). Рекомендуется
        располагать UNIX-сокет где-либо в каталоге /tmp или
        /var/tmp, например, указывая опцию
        --enable-socket-path=/tmp/userlist-socket

        Если Вы не уверены, какой путь к сокету выбрать, укажите
        значение /tmp/userlist-socket.

    --enable-super-serve-socket=PATH
        Данная опция позволяет указать путь к UNIX-сокету,
        который используется для управления программой
        super-serve из CGI-программы serve-control. Путь PATH
        должен быть путём к некоторому файлу (возможно пока не
        существующему) в существующем каталоге. При старте
        программа super-serve будет создавать сокет с указанным
        именем в этом каталоге. Путь PATH не должен находиться
        на файловых системах, монтируемых по сети (smb, nfs).
        Рекомендуется располагать UNIX-сокет где-либо в каталоге
        /tmp или /var/tmp, например, указывая опцию
        --enable-super-serve-socket=/tmp/super-serve-socket

        Если Вы не уверены, какой путь к сокету выбрать, укажите
        значение /tmp/super-serve-socket.

    --enable-conf-dir=DIR
        Данная опция позволяет указать путь к каталогу, в
        котором будут размещаться конфигурационные файлы системы
        ejudge. Для каждого конфигурационного файла можно
        уточнить его расположение с помощью соответствующей
        опции configure. Значение данной опции влияет на
        значение по умолчанию для опций --enable-ejudge-xml,
        --enable-contests-dir. Например, если указать значение
        данной опции, равное /home/judges/data, то путь к
        конфигурационному файлу ejudge.xml по умолчанию будет
        равен /home/judges/data/ejudge.xml, а путь к каталогу
        конфигурационных файлов турниров по умолчанию будет
        равен /home/judges/data/contests.

        Если Вы не уверены, какой каталог конфигурационных
        файлов выбрать, укажите значение /home/judges/data.

    --enable-contests-home-dir=DIR
        Данная опция позволяет указать каталог, в котором будут
        размещаться каталоги турниров. Например, если указать в
        качестве значения данной опции путь /home/judges,
        тестовый турнир номер 1, устанавливаемый при настройке
        системы ejudge, будет разполагаться в каталоге
        /home/judges/000001.

        Если Вы не уверены, какой каталог рабочих файлов
        выбрать, укажите значение /home/judges.

    --with-httpd-cgi-bin-dir=DIR
        Данная опция позволяет указать каталог CGI-программ
        веб-сервера. В этот каталог будут инсталлироваться
        символические ссылки на CGI-программы системы ejudge.
        Многие дистрибутивы Linux поставляются с настроенным
        веб-сервером apache, у которого каталог CGI-программ
        расположен в /home/httpd/cgi-bin. Если в Вашей системе
        веб сервер уже установлен, но имеет другое расположение
        CGI-программ, обратитесь к документации по системе.

        Если Вы не желаете устанавливать CGI-программы в
        системный каталог CGI-файлов, можно указать любой другой
        каталог. При этом убедитесь, что файлы в этом каталоге
        будут распознаваться веб-сервером как CGI-программы. Для
        этого, возможно, потребуется к имени CGI-программ
        добавить специальный суффикс (обычно .cgi), в этом
        случае следует использовать опцию --enable-cgi-suffix.

        Учтите, что при инсталляции в каталог CGI-файлов
        устанавливаются не сами программы, а символические
        ссылки на них. Поэтому в конфигурационном файле
        веб-сервера должна быть включена поддержка символических
        ссылок в каталоге CGI-программ. В веб-сервере apache для
        этого используется директива "Options FollowSymLinks".

    --with-httpd-htdocs-dir=DIR
        Данная опция позволяет указать корневой каталог
        документов веб-сервера. Этот каталог является корнем
        иерархии файлов, обслуживаемой веб-сервером. Корневой
        каталог используется программой-сервером турнира serve
        для размещения символических ссылок на файлы текущего
        положения участников турнира.

        Многие дистрибутивы Linux поставляются с настроенным
        веб-сервером apache, у которого каталог документов
        расположен в /home/httpd/html. Если в Вашей системе
        веб сервер уже установлен, но имеет другое расположение
        каталога документов, обратитесь к документации по
        системе.

1.3. Опции настройки языков программирования
--------------------------------------------
При конфигурировании системы ejudge скрипт configure пытается
определить, какие компиляторы или интерпретаторы языков
программирования установлены в системе, и для всех найденных
компиляторов или интерпретаторов включает их поддержку в сервере
компиляции compile и в тестовом турнире 1. В настоящее время
автоматически определяются следующие компиляторы и
интерпретаторы:
  o GNU C                               http://gcc.gnu.org
  o GNU C++                             http://gcc.gnu.org
  o GNU Java (CGJ)                      http://gcc.gnu.org
  o GNU Fortran 77 (g77)                http://gcc.gnu.org
  o GNU Prolog                          http://pauillac.inria.fr/~diaz/gnu-prolog
  o GNU Pascal                          http://www.gnu-pascal.de
  o Free Pascal                         http://www.freepascal.org
  o Borland Delphi (Kylix)              http://www.borland.com
  o YaBasic (Basic Interpreter)         http://www.yabasic.de
  o Dr. Scheme (Scheme Interpreter)     http://www.drscheme.org
  o Python                              http://www.python.org
  o Perl                                http://www.cpan.org
  o SUN Java SDK 2                      http://java.sun.com
  o Mono C# (mcs)                       http://www.mono-project.com
  o Mono Visual Basic (mbas)            http://www.mono-project.com

Если какой-либо из указанных выше компиляторов или
интерпретаторов находится в нестандартном месте, точнее, если
путь к соответствующей программе отсутствует в переменной
окружения PATH, вы можете указать этот путь явно с помощью
соответствующей опции настройки языка. И наоборот, если Вы
хотите отключить поддержку некоторого языка, нужно в аргументах
командной строки configure указать опцию --without-LANG, где
LANG --- требуемый язык.

    --with-gcc
        Указать путь к компилятору GNU C (gcc) для использования
        в турнирах. 
    --with-gpp
        Указать путь к компилятору GNU C++ (g++).
    --with-fpc
        Указать путь к компилятору Free Pascal (fpc).
    --with-gpc
        Указать путь к компилятору GNU Pascal (gpc).
    --with-gcj
        Указать путь к компилятору GNU Java (gcj).
    --with-g77
        Указать путь к компилятору GNU Fortran 77 (g77).
    --with-dcc
        Указать путь к компилятору Borland Delphi (dcc).
    --with-prolog
        Указать путь к компилятору GNU Prolog (gplc).
    --with-yabasic
        Указать путь к интерпретатору Basic (yabasic).
    --with-scheme
        Указать путь к интепретатору Scheme (mzscheme).
    --with-python
        Указать путь к интерпретатору языка Python (python).
    --with-perl
        Указать путь к интерпретатору языка Perl (perl).
    --with-javac
        Указать путь к компилятору языка Java (javac) из Java
        SDK.
    --with-mcs
        Указать путь к компилятору языка C# пакета Mono.
    --with-mbas
        Указать путь к компилятору языка Visual Basic пакета
        Mono.

Обратите внимание, что поддержка языков C# и Visual Basic
находится в экспериментальной стадии. Текущая версия пакета mono
не поддерживает ограничение размера данных и стека для
работающей программы и не поддерживает политики безопастности,
поэтому использование этих компиляторов для открытых турниров не
рекомендуется. Даже если компиляторы mcs и mbas обнаружены в
системе, в конфигурационном файле serve.cfg тестового турнира 1
они помечаются как закрытые для использования (disabled). Чтобы
разрешить их использование необходимо отредактировать файл
serve.cfg вручную и удалить строку `disabled = 1' из раздела
конфигурации этих языков.

1.4. Опции тонкой настройки путей к файлам/каталогам
----------------------------------------------------
Опции данной группы позволяют модифицировать настройки по
умолчанию для различных путей к компонентам системы ejudge.
Значения по умолчанию у всех опций настроены, чтобы отражать
типичное использование системы. Поэтому, не используйте эти
опции без особой необходимости.

    --exec-prefix=EPREFIX
        Данная опция позволяет указать каталог, в который будут
        проинсталлированы платформо-зависимые файлы и библиотеки
        системы ejudge. Если опция --exec-prefix не задана, её
        значение по умолчанию равно значению опции --prefix.

    --bindir=DIR
        Данная опция позволяет указать каталог, в который будут
        проинсталлированы исполняемые файлы системы. В этот
        каталог инсталлируются все скомпилированные программы,
        кроме CGI-программ master, judge, team, register, users,
        а также скрипт ejudge-config. Если данная опция не
        указана, используется значение по умолчанию, равное
        EPREFIX/bin.

    --enable-cgi-bin-dir=DIR
        Данная опция позволяет указать каталог, в который будут
        проинсталлированы CGI-программы системы ejudge. В этот
        каталог инсталлируются программы master, judge, team,
        register, users. Если данная опция не указана,
        используется значение по умолчанию, равное
        EPREFIX/cgi-bin.

    --libexecdir=DIR
        Данная опция позволяет указать каталог, в который будут
        проинсталлированы вспомогательные программы и скрипты. В
        частности, в этот каталог инсталлируются скрипты
        компиляции для всех поддерживаемых языков
        программирования, а также стандартные проверяющие
        программы.  Если данная опция не указана, используется
        значение по умолчанию, равное EPREFIX/libexec/ejudge.

    --datadir=DIR
        Данная опция позволяет указать каталог, в который будут
        проинсталлированы архитектурно-независимые компоненты
        системы. Если данная опция не указана, используется
        значение по умолчанию, равное PREFIX/share. В каталог
        PREFIX/share/locale инсталлируется каталог сообщений для
        локализации, а в каталог PREFIX/share/ejudge
        инсталлируется библиотека для написания проверяющих
        программ на языке Паскаль testlib.

    --libdir=DIR
        Данная опция позволяет указать каталог, в который будут
        происталлированы библиотечные файлы библиотеки для
        написания проверяющих программ на Си и Си++ libchecker.
        Если данная опция не указана, используется значение по
        умолчанию, равное EPREFIX/lib.

    --includedir=DIR
        Данная опция позволяет указать каталог, в который будут
        проинсталлированы заголовочные файлы библиотеки для
        написания проверяющих программ на Си и Си++ libchecker.
        Если данная опция не указана, используется значение по
        умолчанию, равное PREFIX/include.

    --enable-cgi-conf-dir=DIR
        Данная опция позволяет указать каталог, в котором будут
        располагаться конфигурационные файлы для CGI-программ.
        Если указан относительный путь (например, ../cgi-data),
        то полный путь к каталогу вычисляется относительно
        каталога, из которого запущена CGI-программа, при этом
        символические ссылки не прослеживаются. То есть, если,
        например, в каталоге /home/httpd/cgi-bin находится
        символическая ссылка на программу с полным путём
        /home/you/inst-ejudge/cgi-bin/master, CGI-программа
        запущена из каталога /home/httpd/cgi-bin, и в качестве
        значения данной опции указано ../cgi-data, то каталог
        конфигурационных файлов должен размещаться в
        /home/httpd/cgi-data. Другими словами, символические
        ссылки специальным образом не обрабатываются.

        Значение, указанное в данной опции, в последствии нельзя
        будет изменить в конфигурационных файлах, так как
        значение данной опции и определяет путь к ним. По
        умолчанию значение данной опции равно ../cgi-data.

    --enable-ejudge-xml
        Данная опция позволяет указать имя файла по умолчанию
        для конфигурационного файла ejudge.xml. Этот файл
        используется программами userlist-server, super-serve,
        edit-userlist. Если значение данной опции не указано, но
        указано значение опции --enable-conf-dir=CONF-DIR, то
        для данной опции будет установлено значение
        CONF-DIR/ejudge.xml. Если ни первая, ни вторая опция не
        заданы, путь по умолчанию к файлу ejudge.xml окажется не
        установлен, и при старте соответствующих программ путь к
        конфигурационному файлу ejudge.xml должен быть указан
        явно. В любом случае, явное указание пути к файлу
        ejudge.xml имеет приоритет над значением по умолчанию.

    --enable-contests-dir=DIR
        Данная опция позволяет указать путь к каталогу
        конфигурационных файлов турнира contest.xml. В этом
        каталоге хранятся конфигурационные файлы для всех
        турниров, определённых в системе. Если значение данной
        опции не указано, но указано значение опции
        --enable-conf-dir=CONF-DIR, то для данной опции будет
        установлено значение CONF-DIR/contests. Если ни первая,
        ни вторая опция не заданы, путь по умолчанию к каталогу
        конфигурационных файлов турниров будет не определён.

        Каталог конфигурационных файлов турнира используется
        всеми программами системы ejudge. Если значение по
        умолчанию не определено, каталог конфигурационных файлов
        должен быть явно указан в конфигурационных файлах всех
        программ системы (ejudge.xml, serve.cfg, master.cfg,
        judge.cfg, team.cfg, register.xml, users.xml). В любом
        случае, явное указание конфигурационного каталога имеет
        приоритет над значением по умолчанию.

1.5. Опции тонкой настройки путей периода компиляции
----------------------------------------------------
Опции данной группы позволяют уточнить пути к каталогам
подключаемых файлов и/или каталогам библиотечных файлов для
необходимых библиотек. Значения по умолчанию данных опций
соответствуют наиболее распространённому методу инсталляции.
В подавляющем большинстве случаев явного указания этих опций не
требуется.

    --with-libcap=LIBCAP-DIR
        Данная опция позволяет указать корневой каталог
        инсталляции библиотеки libcap. Если библиотека libcap
        скомпилирована с поддержкой специальных битов полномочий
        (CAP_SYS_OPERATIONS, CAP_SYS_ONE_EXEC), предоставляемых
        специальным патчем к ядру Linux
        (http://acm.msu.ru/ejudge/kernel.shtml), скрипт
        configure включит компиляцию программы capexec и
        разделяемой библиотеки libdropcaps.so для безопасного
        выполнения тестируемых программ. Если библиотека libcap
        установлена в одном из стандартных корневых каталогов
        (/usr, /usr/local), опцию --with-libcap указывать не
        нужно.

        Если библиотека libcap не найдена в системе, не
        поддерживает указанных выше битов полномочий, или эти
        биты полномочий не поддерживаются ядром Linux в момент
        выполнения скрипта configure, компиляция программы
        capexec и библиотеки libdropcaps.so отключается. Кроме
        того, их компиляцию можно отключить явно, задав в
        командной строке configure опцию --without-libcap.

    --with-libcap-include-dir=DIR
        Данная опция позволяет явно указать путь к каталогу
        загловочных файлов на Си, в котором находится файл
        <sys/capability.h>. По умолчанию значение данной опции
        равно LIBCAP-DIR/include, если указано значение опции
        --with-libcap, а в противном случае используются
        стандартные пути к каталогам заголовочных файлов.

    --with-libcap-lib-dir=DIR
        Данная опция позволяет явно указать путь к каталогу
        библиотечных файлов, в котором находится библиотека
        -lcap. По умолчанию значение данной опции равно
        LIBCAP-DIR/lib, если указано значение опции
        --with-libcap, а в противном случае используются
        стандартные пути к каталогам библиотечных файлов.

    --with-expat=EXPAT-DIR
        Данная опция позволяет задать корневой каталог
        инсталляции библиотеки для разбора XML-файлов expat.
        Большинство современных дистрибутивов Linux уже
        поставляются с установленной библиотекой expat. Опцию
        --with-expat указывать не нужно, если библиотека
        находится в стандартных каталогах системы (/usr,
        /usr/local).

        Если скрипт configure не нашёл библиотеку expat, или она
        оказалась непригодной, компиляция системы невозможна, и
        configure завершается с ошибкой.

    --with-expat-include-dir=DIR
        Данная опция позволяет явно указать путь к каталогу
        загловочных файлов на Си, в котором находится файл
        <expat.h>. По умолчанию значение данной опции равно
        EXPAT-DIR/include, если указано значение опции 
        --with-expat, а в противном случае используются
        стандартные пути к каталогам заголовочных файлов.

    --with-expat-lib-dir=DIR
        Данная опция позволяет явно указать путь к каталогу
        библиотечных файлов, в котором находится библиотека
        -lexpat. По умолчанию значение данной опции равно
        EXPAT-DIR/lib, если указано значение опции
        --with-expat, а в противном случае используются
        стандартные пути к каталогам библиотечных файлов.

    --with-reuse-include-dir=DIR
        Данная опция позволяет явно указать путь к каталогу
        заголовочных файлов библиотеки reuse. По умолчанию
        данный путь равен REUSE-DIR/include, что соответствует
        стандартной структуре каталогов при инсталляции
        библиотеки reuse.

    --with-reuse-lib-dir=DIR
        Данная опция позволяет указать путь к каталогу
        библиотечных файлов библиотеки reuse. По умолчанию
        данный путь равен REUSE-LIB/lib, что соответствует
        стандартной структуре каталогов при инсталляции
        библиотеки reuse.

1.6. Прочие опции
-----------------
    --with-reuse-config=CONFIG-NAME
        Данная опция позволяет явно задать имя конфигурации
        библиотеки reuse, если по каким-либо причинам оно не
        может быть определено автоматически (например,
        отсутствует файл REUSE-DIR/etc/config.guess). Для систем
        Linux имя конфигурации reuse равно ix86-linux.

    --enable-cgi-suffix=SUFFIX
        Данная опция позволяет задать суффикс для исполняемых
        файлов CGI-программ. Например, иногда веб-сервер
        настроен таким образом, чтобы все файлы с суффиксом .cgi
        выполнять как CGI-скрипт. В этом случае при
        конфигурировании системы ejudge необходимо задать опцию
        "--enable-cgi-suffix=.cgi".

    --enable-static
        Скомпоновать все исполняемые файлы статически.
        Исполняемые программы в этом случае не будут зависеть ни
        от каких динамических библиотек, однако за счёт
        существенного увеличения размера исполняемых файлов.
        Дополнительно данная опция отключает компиляцию
        динамической версии библиотеки libchecker (libchecker.so).

    --disable-rpath
        В режиме нестатической компоновки данная опция отключает
        использование опции -rpath компоновщика, которая
        позволяет указывать пути к динамическим библиотекам
        непосредственно в исполняемом файле программы. В этом
        случае путь к требуемым динамическим библиотекам должен
        быть указан либо в системных конфигурационных файлах
        (/etc/ld.so.conf), либо в переменной окружения
        LD_LIBRARY_PATH. В текущей версии это влияет только на
        компоновку проверяющих программ с динамической версией
        библиотеки libchecker. В будущих версия эта опция может
        влиять и на компиляцию программ системы ejudge с другими
        библиотеками (reuse, expat, cap).

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

    --with-festival=PATH
        Данная опция позволяет указать путь, по которому
        размещается генератор речи festival.PATH должен быть
        указан таким образом, чтобы программа festival
        находилась в каталоге ${PATH}/bin. В настоящий момент
        правильность задания PATH не контролируется.

2. Компиляция системы
---------------------
Для компиляции выполните команду "make". В командной строке make
Вы можете указать переменные, которые повлияют на процесс
компиляции системы ejudge. Эти переменные описаны далее.

    STATIC=1
        Скомпилировать систему ejudge статически. Аналогично
        указанию опции --enable-static скрипту configure.

    NO_KERNEL=1
        Отменить компиляцию программы capexec и библиотеки
        libdropcaps.so. Аналогично указанию опции
        --without-libcap в командной строке скрипта configure.
        Если библиотека libcap в системе не обнаружена или не
        может быть использована, эта переменная устанавливается
        в 1 автоматически скриптом configure.

    RELEASE=1
        Компилирует систему ejudge в режиме окончательной
        сборки. В этом режиме включается оптимизация
        компилятора (-O2), отключается генерация отладочной
        информации, и отключается генерация кода для
        диагностических макросов типа assert. В обычном режиме
        компиляции наоборот, уровень оптимизации не
        устанавливается, отладочная и диагностическая информация
        генерируется.

    CDEBUGFLAGS=FLAGS
        Позволяет задать опции, которые будут переданы
        компилятору языка Си, например CDEBUGFLAGS="-O3 -Wall".
        Если указана данная переменная, указание переменной
        RELEASE не будет иметь эффекта, так как, по сути,
        указание RELEASE означает выбор альтернативного
        предопределённого набора ключей компиляции для
        CDEBUGFLAGS.

3. Инсталляция скомпилированных файлов
--------------------------------------
Для инсталляции скомпилированных файлов используется команда
"make install". При этом в командной строке make можно указать
переменные, которые повлияют на процесс инсталляции.

Если в качестве пути инсталляции был указан какой-либо системный
путь, может потребоваться выполнить команду "make install"
из-под суперпользователя.

    DESTDIR=DIR
        Позволяет указать префикс, который будет добавлен ко
        всем путям инсталляции файлов системы. Например, если
        опция --prefix равна /usr/local/pkg/ejudge-2.1.30, а
        переменная DESTDIR задана как DESTDIR=/tmp/build, то все
        файлы системы будут проинсталлированы в каталоге
        /tmp/build/usr/local/pkg/ejudge-2.1.30. Данная опция
        предназначена для использования сборщиками пакетов в
        дистрибутивах и поддерживается большинством программ,
        компилируемых в стиле GNU.

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

Начальная настройка выполняется в два этапа. На первом этапе
генерируется настроечный скрипт. Для этого используется
программа ejudge-setup, которая запускается из-под обычного
пользователя. На втором этапе настроечный скрипт выполняется,
для чего могут потребоваться права суперпользователя.

Далее описывается генерация настроечного скрипта с помощью
программы ejudge-setup. Эта программа позволяет задать начальные
значения многих конфигурационных переменных системы ejudge с
помощью меню-ориентированного пользовательского интерфейса.
Если при конфигурировании системы все рекомендуемые опции были
указаны, то почти все конфигурационные переменные будут
установлены в пригодные для работы системы ejudge значения.
Единственное, что пользователь должен будет указать в этом
случае --- параметры администратора системы ejudge с помощью
меню "Edit administrator identity". Тем не менее, рекомендуется
просмотреть остальные пункты меню, чтобы убедиться, что все
переменные установлены в требуемые значения и исправить их при
необходимости.

Главный экран программы ejudge-setup представляет собой меню из
7 пунктов.
        Edit paths
        Edit global settings
        Edit administrator identity
        Preview files
        Preview install script
        Save install script
        Quit

4.1. Пункт меню "Quit
--------------------
Выбор данного пункта меню завершает работу с программой
ejudge-setup. При этом все изменения, сделанные в
конфигурационных переменных будут потеряны.

4.2. Пункт меню "Save setup script"
-----------------------------------
Данный пункт меню позволяет сохранить сгенерированный
настроечный скрипт. После выбора данного пункта потребуется
указать имя файла, в который будет сохранён скрипт. Если в
качестве имени файла будет указан относительный путь, он будет
вычисляться от текущего каталога в момент запуска программы
ejudge-setup. Сохранение настроечного скрипта возможно, только
если все конфигурационные переменные установлены в корректные
значения. Некорректные значения конфигурационных переменных
отмечаются знаком `!' рядом с названием переменной.

По умолчанию настроечный скрипт называется "ejudge-install.sh".

4.3. Пункт меню "Preview setup script"
--------------------------------------
Данный пункт меню позволяет просмотреть настроечный скрипт перед
его сохранением в файл. Просмотр содержимого настроечного
скрипта возможен, только если все конфигурационные переменные
установлены в корректные значения.

4.4. Пункт меню "Preview files"
-------------------------------
Данный пункт меню позволяет просмотреть содержимое всех
конфигурационных файлов, генерируемых программой ejudge-setup.
При выборе данного пункта меню появляется меню второго уровня,
предлагающее выбор конфигурационного файла для просмотра. Меню
содержит следующие пункты.
        To upper level menu
        ejudge.xml
        userlist.xml
        000001.xml
        compile.cfg
        serve.cfg
        master.cfg
        judge.cfg
        team.cfg
        register.xml
        users.xml

4.4.1. Пункт меню "Preview files->To upper level menu"
Позволяет вернуться к главному меню программы ejudge-setup.

4.4.2. Пункт меню "Preview files->ejudge.xml"
Позволяет просмотреть содержимое основного конфигурационного
файла ejudge.xml. При просмотре в первой строке экрана
указывается путь, по которому будет проинсталлирован этот файл.

4.4.3. Пункт меню "Preview files->userlist.xml"
Позволяет просмотреть начальное содержимое базы данных
пользователей системы ejudge. В начальный момент база данных
содержит только запись об администраторе системы, параметры
которой задаются с помощью меню "Edit administrator identity".

4.4.4. Пункт меню "Preview files->000001.xml"
Позволяет просмотреть содержимое конфигурационного файла
пробного турнира.

4.4.5. Пункт меню "Preview files->compile.cfg"
Позволяет просмотреть содержимое конфигурационного файла сервера
компиляции.

4.4.5. Пункт меню "Preview files->serve.cfg"
Позволяет просмотреть содержимое конфигурационного файла сервера
пробного турнира.

4.4.5. Пункт меню "Preview files->master.cfg"
Позволяет просмотреть содержимое конфигурационного файла
CGI-программы master. Если при конфигурировании системы ejudge
все рекомендуемые опции были указаны, и их значение не было
изменено при редактировании конфигурационных переменных в
программе ejudge-setup, конфигурационные файлы для CGI-программ
не требуются, так как все необходимые значение уже содержаться в
коде программ. В этом случае при попытке просмотра
конфигурационных файлов CGI-программ будет выдано сообщение
"This configuration file is not needed!".

4.4.6. Пункт меню "Preview files->judge.cfg"
Позволяет просмотреть содержимое конфигурационного файла
CGI-программы judge. См. далее описание пункта 4.4.5.

4.4.7. Пункт меню "Preview files->team.cfg"
Позволяет просмотреть содержимое конфигурационного файла
CGI-программы team. См. далее описание пункта 4.4.5.

4.4.8. Пункт меню "Preview files->register.xml"
Позволяет просмотреть содержимое конфигурационного файла
CGI-программы register. См. далее описание пункта 4.4.5.

4.4.9. Пункт меню "Preview files->users.cfg"
Позволяет просмотреть содержимое конфигурационного файла
CGI-программы users. См. далее описание пункта 4.4.5.

4.5. Пункт меню "Edit administrator identity"
---------------------------------------------
Данный пункт меню позволяет определить параметры
пользователя-администратора системы ejudge. Эти параметры будут
сохранены в файле базы данных пользователей userlist.xml.
При выборе данного пункта меню появляется экран редактирования
параметров администратора, содержащий следующие элементы
управления. Если какое-либо поле содержит недопустимое значение,
оно помечается знаком `!'.

    Return to upper-level menu
        Возврат к главному меню программы ejudge-setup.

    Admin ID
        Идентификатор пользователя для администратора системы.
        Идентификатор пользователя представляет собой целое
        число в интервале от 1 до 999999. Никаких "магических"
        чисел (наподобие идентификатора пользователя 0 в Unix)
        не предусмотрено.

    Admin login
        Регистрационное имя пользователя. Регистрационное имя
        пользователя вводится при авторизации в системе ejudge.
        Регистрационное имя пользователя должно состоять из
        заглавных и строчных латинских букв, цифр и знаков `_' и
        `-'. Максимальная длина регистрационного имени не
        ограничена, однако программа ejudge-setup не позволяет
        определять регистрационные имена длиннее 63 символов.

    Admin e-mail
        Адрес электронной почты пользователя. В текущей версии
        системы ejudge он далее никак не используется и введён
        для полноты информации. Максимальная длина адреса не
        ограничена, однако программа ejudge-setup позволяет
        редактировать адреса длиной не более чем 255 символов.

    Admin name
        Имя администратора. Имя администратора --- это
        произвольная строка. Программа ejudge-setup не
        поддерживает имена длинной более чем 255 символов. Имя
        администратора отображается на всех страницах,
        генерируемых системой ejudge, например, на странице
        зарегистрированных пользователей, странице текущих
        результатов турнира и т. д. Наоборот, регистрационное
        имя в этих случаях никогда не отображается.

    Admin password
        Данный пункт меню позволяет задать пароль
        администратора. Пароль запрашивается два раза и
        отображается символом `*'. Если введённые оба раза
        пароли совпадают, отображается сообщение 
        The password sha1 hash is XXX!
        Где XXX --- хэш-код пароля.

4.6. Пункт меню "Edit global settings"
--------------------------------------
Данный пункт меню позволяет определить настройки системы
ejudge. Эти параметры будут сохранены в файлах ejudge.xml,
serve.cfg, compile.cfg. При выборе данного пункта меню
появляется экран редактирования параметров системы,
содержащий следующие элементы управления. Если какое-либо поле
содержит недопустимое значение, оно помечается знаком `!'.

    Default charset
        Кодировка HTML-документов по умолчанию. Как было
        замечено в описании опции --enable-charset, в текущей
        версии системы ejudge кодировка HTML-документов должна
        совпадать с внутренней кодировкой, задаваемой с помощью
        опции --enable-charset скрипта configure. Поэтому
        оставьте в данной конфигурационной переменной значение
        по умолчанию.

    Sendmail program
        Полный путь к программе отсылки почты. По умолчанию этот
        путь равен /usr/sbin/sendmail. Вы можете изменить его на
        путь к другой почтовой программе, которая занимается
        пересылкой почты (MTA). В качестве параметра нельзя
        указывать путь к программе, предоставляющей интерфейс
        пользователя для работы с почтой (mutt, pine). Путь
        указанный в данном параметре обязательно должен быть
        путём к существующему файлу, который может быть исполнен
        текущим пользователем. Значение данной конфигурационной
        переменной, будет записано в элемент <email_program>
        конфигурационного файла ejudge.xml и может быть изменено
        в дальнейшем.

    `register' email
        Адрес электронной почты, который будет указан как
        обратный адрес при отсылке письма-подтверждения о
        регистрации. Посылаемое письмо содержит автоматически
        сгенерированный пароль для входа в систему. При запуске
        программы ejudge-setup это поле инициализируется
        значением USER@HOST, где USER --- регистрационное имя
        пользователя, запустившего программу ejudge-setup, а
        HOST --- имя компьютера. Значение, указанное в данной
        конфигурационной переменной, будет записано в элемент
        <register_email> конфигурационного файла ejudge.xml и
        может быть изменено в дальнейшем. Кроме того, адрес
        электронной почты может быть указан для каждого турнира
        индивидуально.

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

    `register' URL
        URL для входа в систему после первоначальной регистрации
        в системе. При первоначальной регистрации, когда
        пользователь задаёт своё регистрационное имя (login) и
        указывает адрес электронной почты, генерируется
        случайный пароль и высылается по указанному адресу. В
        письме содержится регистрационное имя, сгенерированный
        пароль и URL для дальнейшего входа в систему. Этот URL
        задаётся в данной конфигурационной переменной. URL
        должен ссылаться на CGI-программу register и не должен
        содержать никаких параметров для программы register, так
        как они будут добавлены автоматически. По умолчанию
        значение данной переменной устанавливается в
        http://HOST/cgi-bin/register, где HOST --- имя данного
        компьютера. Значение, указанное в данной
        конфигурационной переменной будет записано в элемент
        <register_url> конфигурационного файла ejudge.xml и
        может быть впоследствии изменено. Кроме того, URL может
        быть указан для каждого турнира индивидуально.

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

    Serialization key
        Данная конфигурационная переменная задаёт ключ
        сериализационного семафора. Ключ представляет собой
        целое число в диапазоне от 1 до 29999 и не должен
        совпадать с ключами семафоров SysV, используемых другими
        программами, установленными на данном компьютере.
        Сериализационный семафор используется для того, чтобы не
        допустить одновременной работы нескольких программ
        compile и run, обслуживающих разные турниры, на одном
        компьютере. Значение по умолчанию для этого параметра
        равно 22723. Ключ сериализационного семафора сохраняется
        в элементе <serialization_key> файла ejudge.xml для
        последующего использования в (пока не написанной)
        утилите настройки турниров системы ejudge. Кроме того,
        ключ семафора хранится в глобальной конфигурационной
        переменной serialization_key файла compile.cfg сервера
        компиляции и файлов serve.cfg конфигурации турниров.
        Поэтому, если в дальнейшем потребуется изменить ключ
        семафора, это изменение затрагивает конфигурационные
        файлы всех турниров в системе и конфигурационный файл
        сервера компиляции.

        Лучше всего сохранить значение, предлагаемое по
        умолчанию.

    System uid
        Данная конфигурационная переменная позволяет задать
        регистрационное имя пользователя в системе Linux,
        который будет владельцем всех файлов, создаваемых при
        инсталляции конфигурационных файлов. По умолчанию
        значение данной переменной совпадает с регистрационным
        именем пользователя, запустившего программу
        ejudge-setup. 

        Регистрационное имя пользователя, указываемое в данной
        конфигурационной переменной, должно быть допустимым для
        данного компьютера, то есть запись о соответствующем
        пользователе должна содержаться в файле /etc/passwd.

    System gid
        Данная конфигурационная переменная позволяет задать имя
        группы пользователей в системе Linux, которая будет
        владельцем всех файлов, создаваемых при выполнении
        скрипта настройки системы ejudge, генерируемого
        программой ejudge-setup. По умолчанию значение данной
        переменной совпадает с именем основной группы
        пользователей, к которой принадлежит пользователь,
        запустивший программу ejudge-setup.

        Имя группы пользователей, указываемое в данной
        конфигурационной переменной, должно быть допустимым для
        данного компьютера, то есть информация о группе
        пользователей должна содержаться в файле /etc/group.

    Create workdisk?
        Данная конфигурационная переменная может принимать
        значения либо "yes", либо "no". Если значение равно
        "yes", при выполнении настроечного скрипта будет создан
        файл, который будет использован как виртуальная файловая
        система. Скрипт настройки создаст на нём пустую файловую
        систему ext2 и примонтирует эту файловую систему по
        пути, указанному пользователем (см. далее раздел
        конфигурации путей).

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

    Workdisk size (MB)
        Данная конфигурационная переменная позволяет задать
        размер рабочего диска. Размер указывается в мегабайтах.
        Переменная доступна, если переменная "Create workdisk?"
        установлена в "yes". Учтите, что размер свободного
        пространства немного меньше, чем размер диска, из-за
        накладных расходов файловой системы.

    Install to cgi-bin?
        Данная конфигурационная переменная может принимать
        значения либо "yes", либо "no". Если переменная
        установлена в значение "yes", в каталоге CGI программ
        веб-сервера будут созданы символические ссылки на CGI
        программы, проинсталлированные в корневом каталоге
        ejudge.

4.7. Пункт меню "Edit paths"
----------------------------
    Socket path
        Данная опция позволяет задать или изменить путь к
        UNIX-сокету, который используется для обмена данными
        между сервером базы пользователей userlist-server и
        всеми остальными программами системы ejudge. Данная
        переменная соответствует опции --enable-socket-path
        скрипта configure, и если значение этой опции было
        задано при вызове configure, оно будет отображено
        здесь. В таком случае изменять его не рекомендуется, так
        как тогда потребуется явное указание пути к UNIX-сокету
        во всех конфигурационных файлах. Если же при запуске
        configure опция --enable-socket-path указана не была,
        путь к сокету обязательно должен быть указан в данной
        переменной. 

    Super-serve socket path
        Данная опция позволяет задать или изменить путь к
        UNIX-сокету, который используется для управления
        программой super-serve из CGI-программы serve-control.
        Данная переменная соответствует опции
        --enable-super-serve-socket скрипта configure, и если
        значение этой опции было задано при вызове configure,
        оно будет отображено здесь. В таком случае изменять его
        не рекомендуется, так как тогда потребуется явное
        указание пути к UNIX-сокету во всех конфигурационных
        файлах. Если же при запуске configure опция
        --enable-super-serve-socket указана не была, путь к
        сокету обязательно должен быть указан в данной
        переменной.

    Config directory
        Данная конфигурационная переменная позволяет указать
        путь к каталогу, в котором будут размещаться
        конфигурационные файлы системы ejudge. Данная переменная
        соответствует опции --enable-conf-dir скрипта configure,
        и если значение этой опции было задано при вызове
        configure, оно будет отображено здесь. В таком случае
        изменять его не рекомендуется. Если же при запуске
        configure опция --enable-socket-path указана не была,
        путь к конфигурационному каталогу обязательно должен
        быть указан в данной переменной.

    Path to ejudge.xml
        Данная конфигурационная переменная позволяет задать или
        изменить путь к основному конфигурационному файлу
        системы ejudge --- ejudge.xml. Данная переменная
        соответствует опции --enable-ejudge-xml скрипта configure,
        и если значение этой опции было задано при вызове
        configure, оно будет отображено здесь. В таком случае
        изменять его не рекомендуется, так как тогда потребуется
        явное указание пути к этому файлу в командной строке
        программ системы ejudge. Если же при запуске configure
        опция --enable-ejudge-xml указана не была, путь к файлу
        ejudge.xml обязательно должен быть указан здесь.

    Contest XML dir
        Данная конфигурационная переменная позволяет задать или
        изменить путь к каталогу конфигурационных файлов турнира
        contest.xml. Переменная соответствует опции
        --enable-contests-dir скрипта configure. Если значение
        этой опции было задано (явно или неявно) при вызове
        configure, оно будет отображено здесь. В таком случае
        изменять значение не рекомендуется, так как тогда
        потребуется явное указание пути к каталогу
        конфигурационных файлов турнира во всех конфигурационных
        файлах программ системы ejudge. Если же при запуске
        configure опция --enable-socket-path указана не была,
        путь к каталогу конфигурационных файлов турниров
        обязательно должен быть указан в данной переменной. 

    Contests home dir
        Данная конфигурационная переменная позволяет задать или
        изменить путь к каталогу домашних каталогов турниров.
        Эта переменная соответствует опции
        --enable-contests-home-dir скрипта configure. Если
        значение этой опции было задано (явно или неявно) при
        вызове configure, оно будет отображено здесь. Значение
        этой переменной можно свободно изменять, поскольку оно
        влияет на путь инсталляции пробного турнира 000001 и
        сохраняется только в файле ejudge.xml. Если при запуске
        скрипта configure данная опция указана не была,
        необходимо его указать здесь.

    httpd cgi-bin dir
        Данная конфигурационная переменная позволяет установить
        или изменить каталог CGI-программ веб-сервера. Она
        соответствует опции --with-httpd-cgi-bin-dir скрипта
        configure.  Если значение этой опции было задано при
        конфигурировании системы с помощью скрипта configure,
        оно будет отображено здесь. Значение этой переменной
        можно свободно изменять, поскольку оно влияет только на
        путь, по которому будут проинсталлированы CGI
        программы. Если конфигурационная переменная 'Install to
        cgi-bin?' установлена в "yes", но значение опции
        --with-httpd-cgi-bin-dir не установлено, её необходимо
        установить здесь. Если конфигурационная переменная
        `Install to cgi-bin?' установлена в "no", то данная
        конфигурационная переменная не отображается.

    httpd html dir
        Данная конфигурационная переменная позволяет установить
        или изменить каталог HTML документов веб-сервера. Она
        соответствует опции --with-httpd-htdocs-dir скрипта
        configure. Если значение этой опции было задано при
        конфигурировании системы с помощью скрипта configure,
        оно будет отображено здесь. В этом случае изменять его
        не рекомендуется, так как это значение является
        значением по умолчанию для программы serve. Если опция
        --with-httpd-htdocs-dir скрипта configure не была
        задана, можно установить значение здесь. Если значение
        данной конфигурационной переменной не установлено ни в
        скрипте configure, ни в данной программе, её значение по
        умолчанию остаётся неопределённой. Значение данной
        конфигурационной переменной может быть уточнено для
        каждого турнира индивидуально с помощью конфигурационной
        переменной `htdocs_dir' файла конфигурации турнира
        serve.cfg.

    CGI config dir
        Данная конфигурационная переменная отображает путь к
        каталогу конфигурационных файлов для CGI-программ. Этот
        путь не может быть изменён, так как вкомпилирован
        непосредственно в CGI-программы. Если путь
        относительный, то полный путь вычисляется относительно
        пути к каталогу CGI-программ веб-сервера. Если к тому же
        конфигурационные переменные установлены в значения не по
        умолчанию, что требует создания и инсталляции
        конфигурационных файлов CGI-программ, тогда для успешной
        инсталляции путь к каталогу CGI-программ веб-сервера
        обязательно должен быть установлен.

    Full CGI config dir
        В данном поле отображается полный путь к каталогу
        конфигурационных файлов CGI-программ. Он вычисляется
        автоматически по встроенному пути к каталогу
        конфигурационных файлов (CGI config dir) и по пути к
        каталогу CGI-программ веб-сервера (при необходимости).
        Поле обновляется автоматически при обновлении указанных
        выше конфигурационных переменных.

    User XML database
        Данная конфигурационная переменная позволяет установить
        или изменить путь к файлу базы данных пользователей.
        Если конфигурационная переменная пути к конфигурационным
        файлам установлена, путь к файлу базы пользователей
        устанавливается по умолчанию в
        CONF-DIR/db/userlist.xml. В противном случае требуется
        явное задание пути к файлу базы пользователей. Путь к
        файлу базы пользователей записывается только в элемент
        <db_path> конфигурационного файла ejudge.xml.

    Compile server dir
        Данная конфигурационная переменная позволяет установить
        или изменить домашний каталог сервера компиляции.
        Тестовый турнир по умолчанию настраивается таким
        образом, что для компиляции программ, поступающих на
        проверку, используется сервер компиляции (программа
        compile), "домашний" каталог которой располагается
        отдельно от домашнего каталога самого турнира. Это
        позволяет в дальнейшем добавлять новые турниры, которые
        будут использовать один и тот же сервер компиляции.
        Если при конфигурировании системы скриптом configure ему
        была задана опция --enable-contests-home-dir, то
        путь домашнему каталогу сервера компиляции генерируется
        автоматически и равен CONTESTS-HOME-DIR/compile. В
        противном случае необходимо указать путь к домашнему
        каталогу вручную.

        Домашний каталог сервера компиляции сохраняется в
        нескольких конфигурационных файлах: основном файле
        конфигурации системы ejudge.xml, файле конфигурации
        сервера компиляции, файле конфигурации пробного турнира,
        поэтому изменение пути к серверу компиляции в дальнейшем
        может потребовать модификации нескольких
        конфигурационных файлов.

    Sample contest dir
        Данная конфигурационная переменная позволяет установить
        домашний каталог для тестового турнира. При инсталляции
        системы ejudge инсталлируется простой тестовый турнир,
        предназначенный для проверки функционирования системы.
        Этот турнир имеет номер 1. Если при конфигурировании
        системы скриптом configure ему была задана опция
        --enable-contests-home-dir, то путь к домашнему каталогу
        тестового турнира генерируется автоматически и равен
        CONTESTS-HOME-DIR/000001. В противном случае необходимо
        указать путь к домашнему каталогу вручную.

        В дальнейшем домашние каталоги новых турниров будут по
        умолчанию размещаться в каталоге CONTESTS-HOME-DIR и
        иметь имена, строящиеся из их номеров дополнением до 6
        знаков нулями.

    standings.html path
        Данная конфигурационная переменная позволяет установить
        относительный путь к таблице текущих результатов
        турнира. При работе сервера турнира serve таблица
        текущих результатов турнира генерируется и периодически
        обновляется в рабочих каталогах сервера турнира, которые
        не должны быть доступны через веб. Для того, чтобы
        сделать таблицу текущих результатов общедоступной при
        старте сервер турнира serve создаёт в указанном в данной
        конфигурационной переменной каталоге символическую
        ссылку на файл текущих результатов в рабочих каталогах
        сервера турнира. Если каталог HTML документов
        веб-сервера (см. конфигурационную переменную "httpd html
        dir") или данная конфигурационная переменная не
        устоновлены, при старте программы serve никаких
        символических связей создаваться не будет. В этом случае
        пользователь должен сам обеспечить доступ из сети
        Интернет к текущим результатам турнира, если такой
        доступ требуется.

    Full standings path
        В данном поле отображается полный путь к файлу текущего
        положения участников тестового турнира (турнира 1).
        Полный путь строится автоматически по значениям
        конфигурационных переменных `httpd html dir' и
        `standings.html path' (см. выше). Данное поле не может
        быть отредактировано непосредственно, но обновляется
        автоматически при изменении любой из конфигурационных
        переменных, от которых оно зависит.

    Testing working dir
        Данная конфигурационная переменная отображается, только
        если конфигурационная переменная `Create workdisk?'
        (см. выше) установлена в значение `No', то есть при
        выполнении настроечного скрипта не будет создаваться
        специальный диск для тестирования программ. В этом
        случае данная конфигурационная переменная позволяет
        задать произвольный каталог, который будет
        использоваться в качестве рабочего каталога при
        тестировании программ. Этот каталог должен уже
        существовать в файловой системе.

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

    Workdisk image path
        Данная конфигурационная переменная отображается, только
        если конфигурационная переменная `Create workdisk?'
        установлена в значение `Yes', то есть когда настроечный
        скрипт будет создавать рабочий диск для тестирования
        программ. В этом случае данная конфигурационная
        переменная содержит путь, по которому будет создан образ
        рабочего диска. Далее образ рабочего диска будет
        подмонтирован к файловой системе (как loop-устройство).

        По умолчанию путь к образу рабочего диска
        устанавливается в CONTESTS-HOME-DIR/work-img. Если
        значение по умолчанию по каким-либо причинам
        неприемлимо, его можно изменить. Образ рабочего диска не
        должен находиться на сетевой файловой системе.

    Workdisk mount dir
        Данная конфигурационная переменная отображается, только
        если конфигурационная переменная `Create workdisk?'
        установлена в значение `Yes'. Конфигурационная
        переменная определяет точку монтирования создаваемого
        рабочего диска для тестирования программ. Настроечный
        скрипт создаст образ рабочего диска и подмонтирует его в
        указанное место автоматически, однако настроечный скрипт
        не модифицирует системные скрипты загрузки, то есть
        после перезагрузки системы рабочий диск не будет
        примонтирован автоматически, и, как следствие, система
        ejudge может не запуститься. См. далее инструкции по
        автоматическому примонтированию рабочего каталога.

    Ejudge cgi-bin dir
        Данная конфигурационная переменная содержит путь к
        каталогу, в который по команде `make install' были
        проинсталлированы CGI-программы системы ejudge.
        Изменять значение данной конфигурационной переменной не
        рекомендуется.

    Localization dir
        Данная конфигурационная переменная содержит путь к
        каталогу сообщений системы. Каталог сообщений
        используется для вывода сообщений на языке пользователя.
        Изменять значение данной конфигурационной переменной не
        рекомендуется. 

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

    Path to `serve'
        Данная конфигурационная переменная содержит путь к
        программе `serve' (сервер турнира) системы ejudge.

    Path to `run'
        Данная конфигурационная переменная содержит путь к
        программе `run' (сервер проверки решений турнира)
        системы ejudge.

5. Выполнение настроечного скрипта
----------------------------------
Работа программы начального конфигурирования ejudge-setup
заключается в подготовке настроечного скрипта, который
сохраняется в файл с помощью команды `Save setup script'.
Генерируемый файл по умолчанию имеет имя ejudge-install.sh,
которое может изменяться пользователем, но для простоты далее мы
будем предполагать, что настроечный скрипт имеет это имя.
Рекомендуется просмотреть этот скрипт, чтобы убедиться, что все
конфигурационные переменные установлены в корректные значения, а
также чтобы убедиться, что скрипт не выполняет никаких
нежелательных действий.

Для создания необходимых каталогов, создания рабочего диска и
его подмонтирования требуются полномочия администратора системы
(root), поэтому скрипт ejudge-install.sh должен запускаься
из-под пользователя root. Для этого либо зайдите в систему с
другой консоли или виртуального терминала как root, либо
выполните команду "su -".

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

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

Настроечный скрипт использует для своей работы программу
uudecode. Если она не проинсталлирована в системе, установите
пакет sharutils, в состав которого она входит. За более
подробной информацией об этом пакете и об его установке
обратитесь к документации по вашей системе.

Настроечный скрипт также использует программы install, dd,
mke2fs, mount, ln, chown, tar. Эти программы должны
присутствовать в любом дистрибутиве Linux по умолчанию.

6. Проверка работоспособности системы
-------------------------------------
Если выполнение настроечного скрипта завершилось успешно,
система ejudge готова к работе.

Обратите внимание, что никакая программа системы ejudge не
должна запускаться из-под пользователя root. Можно либо
использовать какое-либо существующее регистрационное имя, либо
создать новое.

Чтобы проверить её работу необходимо запустить:
  1) сервер базы пользователей userlist-server
        Для этого перейдите в каталог EJUDGE-CONF-DIR и
        запустите сервер базы пользователей:
                EJUDGE-BIN-DIR/userlist-server ejudge.xml
        Если при конфигурировании системы была указана опция
        --enable-ejudge-xml или --enable-conf-dir, и путь к
        конфигурационному файлу не был изменён при генерации
        настроечного скрипта, то корректное значение пути к
        конфигурационному файлу будет встроено в программу
        userlist-server, и его можно не указывать. Тогда строка
        запуска сервера турнира будет выглядеть просто как
                EJUDGE-BIN-DIR/userlist-server

        Учтите, что все программы системы ejudge не
        переключаются в фоновый режим автоматически и занимают
        текущий терминал в основном режиме. С одной стороны
        можно запускать программы в фоновом режиме явно с
        помощью команды
                EJUDGE-BIN-DIR/userlist-server &
        Однако такой способ имеет недостатки, что, во-первых,
        запущенную программу становится труднее завершить (для
        этого нужно послать ей сигнал), а, во-вторых,
        диагностический вывод программы, посылаемый на
        стандартный поток ошибок, будет перемешиваться с выводом
        других программ на текущем терминале. Поэтому
        рекомендуется запускать каждую программу системы ejudge
        в отдельном терминале, а для поддержки терминальной
        сессии в отсутствии пользователя использовать программу
        screen.
  2) сервер компиляции программ compile. Для этого перейдите в
        каталог COMPILE-HOME-DIR и запустите программу compile с
        помощью команды
                EJUDGE-BIN-DIR/compile conf/compile.cfg
  3) сервер управления турнирами. Для этого перейдите в каталог
        EJUDGE-CONTESTS-HOME-DIR и запустите программу super-serve
	       EJUDGE-BIN-DIR/super-serve

После запуска всех программ можно заходить на личную страницу
участника турнира, которая по умолчанию размещается по адресу
http://localhost/cgi-bin/team?contest_id=1, личную страницу
администратора турнира, которая размещаяется по адресу
http://localhost/cgi-bin/master, и выполнять все действия по
отправке решений на проверку и т. д. По адресу
http://localhost/cgi-bin/serve-control доступен менеджен
турниров, который включает в себя и интерактивный редактор
конфигурационных файлов.

Чтобы обращаться к серверу турнира с других компьютеров, а не
только с того компьютера, на котором установлена система ejudge,
необходимо отредактировать конфигурационный файл турнира
000001.xml, который по умолчанию располагается в каталоге
/home/judges/data/contests. Каждой CGI-программе соответствует
свой XML-элемент, определяющий, с каких IP-адресов можно
отбращаться к соответствующей CGI-программе.

7. Настройка системы на постоянную работу
-----------------------------------------
Как было сказано выше, настроечный скрипт создаёт рабочий диск и
монтирует его в указанную точку файловой системы. Однако, после
перезагрузки монтирование будет сброшено. Чтобы рабочий диск
автоматически монтировался при каждой загрузке системы,
необходимо выполнить (с правами суперпользователя root)
следующие действия:
  1) добавить запись в файл /etc/fstab
                WORKDISK-IMAGE WORKDISK-MOUNT-POINT ext2 loop,noauto 0 0
        Здесь WORKDISK-IMAGE --- это путь к файлу образа
        рабочего диска (см. конфигурационную переменную
        `Workdisk Image Path'), а WORKDISK-MOUNT-POINT --- путь
        к точке монтирования (см. конфигурационную переменную
        `Workdisk Mount Point').
        Флаг noauto устанавливается для предотвращения
        автоматического монтирования при загрузке системы, так
        как оно выполняется некорректно.
  2) в конец файла /etc/rc.d/rc.local добавить команду
        монтирования рабочего диска
                mount WORKDISK-MOUNT-POINT

Система ejudge поддерживает турниры, которые не ограничены по
времени и, как следствие, работают на сервере продолжительный
период времени. Одновременно могут проводиться несколько
турниров, как ограниченных, так и не ограниченных по времени.
Для одновременной поддержки нескольких турниров необходим один
процесс сервера базы пользователей userlist-server и один
процесс сервера компиляции программ, однако для каждого турнира
необходим отдельный процесс сервера турнира serve и сервера
тестирования run. Когда одновременно активны несколько турниров,
необходимость поддержания двух процессов на каждый турнир
становится значительным накладным расходом.

Для преодоления этого недостатка предназначена программа
super-serve. Программа отслеживает обращения к активным турнирам
и запускает при необходимости программы serve или run для
требуемого турнира. Активные турниры помечаются атрибутами
managed="yes" и run_managed="yes" элемента <contest>
конфигурационного файла contest.xml соответствующего турнира.
Атрибут managed="yes" указывает, что программа super-serve
должна отслеживать обращения к серверу турнира и запускать при
необходимости программу serve, а атрибут run_managed="yes"
указывает, что программа super-serve должна отслеживать
обращения к серверу тестирования и запускать при необходимости
программу run.
