Установка Oracle Client 11g Release 2 на Debian 7 (amd64)

По рабочей необходимости мне потребовалось установить на один 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
# adduser --group oinventory --home /opt/oracle --shell /bin/bash oracle

Так же нам потребуется чтобы у пользователя oracle были права root, через прослойку sudo:

# 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

Запустим установку 

Нам потребуется файл 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