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
# 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
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
Комментариев нет:
Отправить комментарий