среда, 16 января 2008 г.

Компиляция TOra в Debian

TOra - расшифровывается как "Toolkit For Oracle" и представляет из себя IDE для таких СУБД как Oracle, MySQL, PostgreSQL. На данный момент является одной из трех полноценных Oracle IDE под Linux (остальные две - это "SQL Developer" от Oracle и "Aqua Data Studio" от AquaFold). Концептуальное отличие - язык программирования исходного кода: "SQL Developer", "Aqua Data Studio" - Java, "TOra" - C++.

На днях пришлось собирать ее из исходных кодов, так как по лицензионным причинам, в стандартной сборке TOra из репозитария Debian GNU/Linux не включена поддержка Oracle.

Все работы велись в Debian Lenny:
$ uname -a
Linux Debian4Test 2.6.22-3-686 #1 SMP Mon Nov 12 08:32:57 UTC 2007 i686 GNU/Linux


Версия TOra:
$ ls -l /usr/src/tora-1.3.22/
-rw-r--r-- 1 root src 3496227 2008-01-15 18:19 tora-1.3.22.tar.gz


Итак... поехали...

  1. Получение Oracle Instant Client
  2. Скачиваем следующие пакеты:
    Или, как вариант, можно скачать соответствующие *.rpm пакеты с сайта Oracle и с помощью утилиты "alien" преобразовать их в *.deb.

  3. Установка Oracle Instant Client

  4. $ sudo dpkg -i oracle-instantclient-basic_10.2.0.3-2_i386.deb
    $ sudo dpkg -i oracle-instantclient-devel_10.2.0.3-2_i386.deb
    $ sudo dpkg -i oracle-instantclient-sqlplus_10.2.0.3-2_i386.deb


    Проверяем, куда был установлен клиент Oracle:
    $ whereis oracle
    oracle: /usr/lib/oracle /usr/include/oracle /usr/share/oracle


  5. Создание файла TNSNAMES.ORA
  6. Создаем файл /usr/lib/oracle/tnsnames.ora и заполняем его необходимыми данными для соединения с экземплярами БД Oracle.

  7. Настройка кэша динамических библиотек
  8. В файл /etc/ld.so.conf добавляем следующую строку:
    /usr/lib/oracle/10.2.0.3/client/lib

    После чего перегружаем кэш:
    $ sudo ldconfig

  9. Настройка переменных окружения
  10. Добавляем следующие строки в файл /etc/profile:
    LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.3/client/lib:$LD_LIBRARY_PATH
    TNS_ADMIN=/usr/lib/oracle
    export LD_LIBRARY_PATH TNS_ADMIN


  11. Получение и распаковка исходных кодов TOra
  12. Исходный код можно загрузить с оф. сайта:
    $ sudo mkdir /usr/src/tora
    $ cd /usr/src/tora
    $ wget http://switch.dl.sourceforge.net/sourceforge/tora/tora-1.3.22.tar.gz
    $ sudo tar zxvf tora-1.3.22.tar.gz


  13. Подготовка к пересборке TOra
  14. Устанавливаем необходимые модули:
    $ sudo aptitude install g++ gcc autoconf automake flex zlib1g-dev docbook-xsl
    $ sudo aptitude install libqt3-mt-dev libqt3-compat-headers


  15. Сборка TOra
  16. Переходим в директорию с исходным кодом и выполняем конфигурацию:
    $ cd /usr/src/tora/tora-1.3.22/
    $ ./configure --with-oracle=$ORACLE_HOME --with-oci-version=10G CC=gcc-4.2 --without-kde --with-xinerama


    В результате последней операции получаем сообщение об ошибке:
    ...
    checking whether uic supports -nounload ... yes
    checking if STL implementation is SGI like... yes
    checking for oracle... checking oci works... yes
    checking for qscintilla... configure: error: Couldn't compile a simple QScintilla application. See config.log or specify its location with --with-qscintilla-includes
    make: *** [configure-stamp] Ошибка 1


    То есть, в системе не оказалось пакета "libqscintilla-dev". Скачиваем его и повторяем попытки компиляции:
    $ wget http://ftp.pl.debian.org/debian/pool/main/q/qscintilla/libqscintilla-dev_1.7.1-2_all.deb
    $ sudo dpkg -i libqscintilla-dev_1.7.1-2_all.deb
    $ ./configure --with-oracle=$ORACLE_HOME --with-oci-version=10G CC=gcc-2.95 --without-kde --with-xinerama
    $ make
    $ sudo make install

    На этот раз ошибок не появилось.

  17. Запуск TOra
  18. Проверяем, где располагается TOra:
    $ whereis tora
    tora: /usr/bin/tora /usr/lib/tora /usr/local/tora /usr/share/tora /usr/share/man/man1/tora.1.gz


    Запускаем IDE:
    /usr/bin/tora


Подробнее...