Perl DBD:: Установка модуля Oracle
Может ли кто-нибудь помочь мне установить модуль Perl DBD::Oracle
?
Вот что я сделал до сих пор:
- Платформа: RHEL 5.8 64 бит
- Установленный пакет DBI Perl
- Установленный клиент Oracle Instant для Linux 64 бит (компонент basi + sdk + sqlplus для мгновенного клиента
- Установили правильные
$ORACLE_HOME
и $LD_LIBRARY_PATH
-
Затем, когда я делаю perl Makefile.pl
, он терпит неудачу со следующей ошибкой:
I'm having trouble finding your Oracle version number... trying harder
WARNING: I could not determine Oracle client version so I'll just
default to version 8.0.0.0. Some features of DBD::Oracle may not work.
Oracle version based logic in Makefile.PL may produce erroneous results.
You can use "perl Makefile.PL -V X.Y.Z" to specify a your client version.
Oracle version 8.0.0.0 (8.0)
DBD::Oracle no longer supports Oracle client versions before 9.2
Try a version before 1.25 for 9 and 1.18 for 8! at Makefile.PL line 271.
-
Мгновенная клиентская версия: 11.1.0
- Версия
DBD::Oracle
- 1.44
Если вы успешно установили соединение с мгновенным клиентом Oracle, не могли бы вы сообщить мне, что мне не хватает?
Возможно ли установить DBD::Oracle
без использования мгновенного клиента Oracle?
Ответы
Ответ 1
- Установить модуль DBI Perl (
$ yum install perl-DBI
)
-
Вручную установите ниже трех RPM для мгновенного клиента Oracle (от Загрузка мгновенных клиентов для Linux x86-64)
oracle-instantclient11.2-basic-11.2.0.3.0-1
oracle-instantclient11.2-devel-11.2.0.3.0-1
oracle-instantclient11.2-sqlplus-11.2.0.3.0-1
Я использую 64-битный Linux-блок, поэтому выберите свои имена файлов RPM соответственно.
-
установить ниже переменные:
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
ORACLE_HOME=/usr/lib/oracle/11.2/client64
Пользователям MacOS потребуется:
DYLD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/
Также добавьте ORACLE_HOME
к вашей переменной PATH
.
-
скачать DBD:: Oracle из CPAN
-
распакуйте модуль и выполните команды ниже в заданной последовательности:
perl Makefile.PL
make
make install
СОВЕРШЕНА!!!
Проблемы, с которыми я столкнулся, были связаны с неправильным LD_LIBRARY_PATH
. Я установил его в /usr/lib/oracle/11.2/client64
, тогда как правильное значение /usr/lib/oracle/11.2/client64/lib
.
Конечно, это было отличное обучение для новичка, подобного мне.
Ответ 2
вы также можете прочитать мою статью Как установить DBD:: Oracle, который содержит все шаги, необходимые для установки модуля DBD:: Oracle CPAN, которая не является простой установкой. Цель состоит в том, чтобы уменьшить головную боль и превратить ее в повторяемый процесс.
Ответ 3
Вот что я сделал в CentOS 7.2 с помощью пакетов yum и CPAN. Предполагается, что вы используете Oracle версии 12.1, но я бы предположил, что большинство версий будут работать таким образом.
Установить Oracle Instant Client
yum install oracle-instantclient12.1-basic-12.1.0.2.0-1 oracle-instantclient12.1-devel-12.1.0.2.0-1 oracle-instantclient12.1-sqlplus-12.1.0.2.0-1
Копировать демонстрационные файлы
Установка ожидает, что файл *.mk будет находиться в /usr/share/oracle/ 12.1/client64, но установка пакета yum помещает их в /usr/share/oracle/ 12.1/client64/demo.
sudo cp /usr/share/oracle/12.1/client64/demo/* /usr/share/oracle/12.1/client64
Изменить .bashrc
Добавьте следующие строки в ~/.bashrc
export ORACLE_HOME=/usr/lib/oracle/12.1/client64
export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib
export PATH=$ORACLE_HOME:$PATH
Теперь отправьте файл
source ~/.bashrc
Обновить CPAN и DBI
Обновите CPAN и DBI до последней версии
cpan> install CPAN
cpan> reload cpan
cpan> install DBI
Установить DBD:: Oracle
cpan> install DBD::Oracle
Ответ 4
Небольшое дополнение к ответу slayedbylucifer. У меня была такая же проблема, как упоминалось в вопросе. Я сделал все шаги, описанные slayedbylucifer. Но все же у меня возникла проблема, например, здесь:
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /opt/oracle/app/oracle/product/11.2.0/client_1/lib//libclntsh.so when searching for -lclntsh
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: cannot find -lclntsh
Итак, я создал следующую символическую ссылку:
ln -s /opt/oracle/app/oracle/product/<YOUR_ORACLE_VERSION>/client_1/lib/libclntsh.so $ORACLE_HOME/libclntsh.so*
После этого шага исправлена ошибка сверху (не удалось найти -lclntsh). Выполнение команды make было без ошибок.
Единственная проблема, с которой я все еще сталкиваюсь, заключается в том, что я не понимаю, зачем нужна эта символическая ссылка.