По рабочей необходимости мне потребовалось установить на один Debian 7 клиент Oracle, чтобы в последствии использовать его при разработке сетевого приложения на php используя модуль oci8. Ранее я уже писал подобную статью, но про установку базы данных Oracle:
http://devppp.blogspot.ru/2013/02/oracle-11g-release-2-ubuntu-1204-amd64.htmlТут же описывается только клиент, который нужно установить на свежеустановленный Debian 7 без графического интерфейса и тому подобного (иными словами "чистый дистрибутив").
Для начала установим пакеты
# apt-get install make binutils gcc g++ libaio-dev libstdc++6 libc6-dev g++-multilib expat sudo mcЕсли мы выполняем установку по удалёнке через ssh то так же нам потребуется ещё один пакет:
# apt-get install x11-utils
Создадим пользователя
Это делать опционально, но желательно.
# addgroup oinventoryТак же нам потребуется чтобы у пользователя oracle были права root, через прослойку sudo:
# adduser --group oinventory --home /opt/oracle --shell /bin/bash oracle
# adduser oracle sudo
Системные переменные
Отредактируем файл /etc/profile добавим в него следующие строки:
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/instantclient_11_2
export LD_LIBRARY_PATH=/opt/oracle/instantclient_11_2/lib:$LD_LIBRARY_PATH
export PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG=RUSSIAN_CIS.CL8MSWIN1251
Авторизуемся из под пользователя Oracle
Затем авторизуемся из под него по ssh. Либо, если машина локальна для нас, так:# ssh -X oracle@localhostЛибо, если машина удалёна от нас:
# ssh -X oracle@192.168.100.500
Подготовка перед запуском
Далее работа ведётся из под пользователя Oracle. Предположу, что у Вас уже имеется p10098816_112020_Linux-x86-64_4of7.zip поэтому скопируем его в /opt/oracle, затем распакуем:
cp p10098816_112020_Linux-x86-64_4of7.zip /opt/oracle
cd /opt/oracle
unzip p10098816_112020_Linux-x86-64_4of7.zip
Запустим установку
./runInstallerЭта команда запустит графическое приложение. Последующие режимы установки зависят от того, что Вам требуется, мне например была нужна Runtime редакция, если Вы не знаете, что Вам нужно, то рекомендую выбрать редакцию Administrator. Но если Вам нужен только клиент и ничего более то нужно выбрать "Client".
На шаге "Perform Prerequisite Checks" вылезет большое количество ошибок и установку продолжить будет нельзя, поставим галку возле надписи "Ignore All" в правом верхнем углу установщика, после этого можно двигаться далее.
В случае возникновении ошибки
Exception String: Error in invoking target 'client_sharedlib' of makefile '/opt/oracle/instantclient_11_2/rdbms/lib/ins_rdbms.mk'. See '/opt/oracle/oraInventory/logs/installActions2014-01-21_05-34-28AM.log' for details.Создадим символические ссылки
sudo ln -s /usr/lib /usr/lib64И из под пользователя, из под которого происходит установка выполним команды (они добавят опции игнорирования ошибок в процессе компиляции)
sudo ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib/libpthread_nonshared.a
sudo ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib/libc_nonshared.a
sed -i 's/^\(\s*\)\(\$(OCRLIBS_DEFAULT)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/srvm/lib/ins_srvm.mk
sed -i 's/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\) \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/network/lib/env_network.mk
sed -i 's/^\(ORACLE_LINKLINE.*\$(ORACLE_LINKER)\) \(\$(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/^\(KFED_LINKLINE.*\$(S0MAIN)\) \(\$(SSKFEDED)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/^\(KFOD_LINKLINE.*\$(S0MAIN)\) \(\$(SSKFODED)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/^\(KFNDG_LINKLINE.*\$(S0MAIN)\) \(\$(SSKFNDGED)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/^\(AMDU_LINKLINE.*\$(S0MAIN)\) \(\$(SSKFMUED)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/rdbms/lib/env_rdbms.mkДалее в установщике нажмём кнопку Retry, после чего установка должна пройти без проблем.
По завершению
Если всё прошло успешно то программа выдаст сообщение о том что желательно выполнить ещё пару скриптов из под root:
/opt/oracle/oraInventory/orainstRoot.sh
/opt/oracle/instantclient_11_2/root.sh
А причина возникновения ошибок не ясна? почему вообще они выводятся? о чем они? Можете по подробнее об этом?
ОтветитьУдалить