понедельник, 24 мая 2010 г.

Запуск OpenGrok в Solaris 10

OpenGrok – это удобный инструмент для навигации в исходном коде. Я давно знал о его существовании по проектам OpenSolaris и OpenOffice, где он активно применяется. Теперь, когда мне потребовалось хорошо разобраться в коде проекта OpenBabel, я вспомнил про OpenGrok и решил испытать на своей рабочей станции.

Запуск Glassfish в Solaris 10

OpenGrok работает с двумя серверами: Tomcat и Glassfish. Я выбрал Glassfish v3, так как он официально поддерживается Oracle. Для этого я скачал сервер
https://glassfish.dev.java.net/downloads/v3-final.html

и установил в /opt/glassfish. Для запуска домена по умолчанию (domain1) выполнил
# /opt/glassfish/bin/asadmin start-domain
Waiting for DAS to start ………………
Started domain: domain1
Domain location: /opt/glassfish/glassfish/domains/domain1
Log file: /opt/glassfish/glassfish/domains/domain1/logs/server.log
Admin port for the domain: 4848
Command start-domain executed successfully.

Установка OpenGrok

Сначала я скачал пакет OSOLopengrok-0.9.pkg с сайта http://hub.opensolaris.org/bin/view/Project+opengrok/files и установил:
# pkgadd -d OSOLopengrok-0.9.pkg

Пакет установился в /usr/opengrok/. Сразу же попробовал запустить /usr/opengrok/bin/OpenGrok index . Оказалось, что требуется установить CTags, которые пришлось скачать из репозитория Blastwave.org:
# export PATH=$PATH:/opt/csw/bin
# pkgutil install ectags

Так как скрипт /usr/opengrok/bin/OpenGrok ищет файл exctags в пути, указанном переменной PATH, а /opt/csw/bin у меня по умолчанию нет в PATH, то я сделал символическую ссылку:
# ln -s /opt/csw/bin/ectags /usr/bin/exctags

Но и после этого скрипт не мог найти exctags. Залез в исходный код и обнаружил:
FindExuberantCTags()
{
case “${OS_NAME}:${OS_VERSION}” in
SunOS:5.10) commandName=”" ;;
SunOS:5.11) commandName=”exctags” ;;
Linux:*) commandName=”ctags-exuberant” ;;
*) commandName=”" ;;
esac

if [ -z "${commandName}" ]
then
Error “Unable to determine Exuberant CTags command name” \
“for ${OS_NAME} ${OS_VERSION}”
return
fi

Which “${commandName}”
}

Почему для версии системы SunOS:5.10 (это означает Solaris 10) указано пустое место? Не понял юмора разработчиков и исправил
SunOS:5.10) commandName=”" ;;
на
SunOS:5.10) commandName=”exctags” ;;

Как я выяснил позднее, можно было использовать переменную среды EXUBERANT_CTAGS.

Далее требуется связать OpenGrok с сервером Glassfish, но для начала надо указать переменные среды. Если не указать OPENGROK_APP_SERVER, то будет использоваться Tomcat.

# export OPENGROK_APP_SERVER=Glassfish
# export OPENGROK_GLASSFISH_BASE=/opt/glassfish/glassfish
# ./OpenGrok deploy
Loading the default instance configuration …
Installing /usr/opengrok/bin/../lib/source.war to /opt/glassfish/glassfish/domains/domain1/autodeploy …

Start your application server (Glassfish), if it is not already
running, or wait until it loads the just installed web application.

OpenGrok should be available on :/source
where HOST and PORT are configured in Glassfish.

После этого успешно запустил
# /usr/opengrok/bin/OpenGrok index
и начал ждать, когда закончится индексирование. Ждать пришлось долго.

Информация для людей, которые не на Solaris/OpenSolaris. Для всех прочих систем предлагается скачать архив opengrok-0.9.tar.gz. Запуск в этом случае надо осуществлять не через скрипт /usr/opengrok/bin/OpenGrok, а с помощью
java -jar /$OPENGROK/lib/opengrok.jar. Это может быть полезно и разработчикам OpenSolaris, которые хотят использовать специфическую конфигурацию.

Запуск в веб-браузере

http://127.0.0.1:8080/source/

Ссылки
http://hub.opensolaris.org/bin/view/Project+opengrok/files
http://hub.opensolaris.org/bin/view/Project+opengrok/installdescription
http://openbabel.org

Комментариев нет:

Отправить комментарий