Вопрос

Я только недавно начал учиться / использовать Ruby на работе. У меня есть Super-Simple Test Script, который просто подключается к нашей базе данных Oracle 10G, запускает выбор, и «ставит» результаты на экран. Это на сервере Solaris 10. Если я запускаю скрипт как пользователь «Apps» (пользователь системы, который запускает наши автоматические скрипты), скрипт запускает штрафы. Если я бегу как сам, он бросает ошибку:

oci8lib.c:98:in oci8lib.so: OCI Library Initialization Error (OCIError)
    from /usr/local/lib/ruby/site_ruby/1.8/oci8.rb:25
    from ./dbTest.rb:3:in `require'
    from ./dbTest.rb:3

My Env vars соответствует пользователю «Приложений». Я предполагаю, что это проблема разрешений на некотором файле / каталоге или другом, но я не знаю, с чего начать смотреть. Линия 25 в файле OCI8.RB является директивой «требуется» OCI8LIB_18 '«». Я прочитал и выполняет разрешения на файл OCI8LIB_18.SO и дирижера, ведущие к нему, но я не знаю, какой Это нужно получить доступ.

У кого-нибудь есть какие-либо предложения по каким файлам / порядам, я должен проверить разрешения? Или любые другие мысли о том, что может быть проблема?

ОБНОВИТЬ Я отправился по электронной почте с парнем, который поддерживает OCI8, и оказывается, что несколько каталогов Oracle имеют разрешения, которые предотвращают доступ для моего логина доступа к необходимой информации. Простой тест должен был попытаться запустить SQLPLUS, который также не удалось.

Дейв

Это было полезно?

Решение 2

Я отправился по электронной почте с парнем, который поддерживает OCI8, и оказывается, что несколько каталогов Oracle имеют разрешения, которые предотвращают доступ для моего логина доступа к необходимой информации. Простой тест должен был попытаться запустить SQLPLUS, который также не удалось.

Другие советы

Априори, я понятия не имею. Запустит другие приложения Ruby, используя OCI? Обычно библиотеки и вспомогательные библиотеки все установлены RWX-R-XR-X. Вы никогда не должны видеть ошибки разрешений на правильно установленные библиотеки. Так что я делаю дикую дикую догадаю, вы не хватаете что-то в своей среде, вероятно, как запись в LD_LIBRARY_PATH

LDD открывает общие библиотеки почти так же, как делает изображение времени выполнения.

Посмотрите, первым ли это работает:

cd /path/to/library   # where oci8lib.so lives.  
ldd oci8lib.so

Это должно отображать все внешне связанные библиотеки без ошибок. Если LDD работает, проверьте свой LD_LIBRARY_PATH, чтобы убедиться, что путь, который вы сейчас находитесь, объявлен там. Если он не работает, у вас есть какой-то проблема установки, например отсутствующие библиотеки или нестандартные пути к библиотекам.

Вернись к нам здесь с вашими результатами.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top