2015-04-29 3 views
0

Прежде всего, позвольте мне поблагодарить вас за ваше время и обмена знаниями, я отчасти невежественный в Trems из PERL модулейDBD :: Sybase ошибка

У меня есть 64-битной Ubuntu Server 12.04, с версией Perl 14, subversion 2 (v5.14.2), построенный для установки x86_64-linux-gnu-thread-multi и CPAN и установки модулей (v2.10).

Я пытаюсь использовать Perl-скрипт, доступ к Microsoft SQL Server, и я действительно трудное время на модуль DBD :: Sybase

Когда я пытаюсь установить DBD :: Sybase CPAN говорит мне она уже установлена:

cpan[1]> install DBD::Sybase 
Reading '/root/.cpan/Metadata' 
    Database was generated on Wed, 29 Apr 2015 14:53:21 GMT 
DBD::Sybase is up to date (1.15). 

Я также найти несколько файлов Sybase.pm на моей файловой системе, некоторые из них находятся под путем Perl

[email protected]:# find /* -name Sybase.pm 
/home/usriten/download/DBD-Sybase-1.15/Sybase.pm 
/root/.cpan/build/DBD-Sybase-1.15-TtUI0T/Sybase.pm 
/root/.cpan/build/DBD-Sybase-1.15-kNqdf7/Sybase.pm 
/root/.cpan/build/DBD-Sybase-1.15-rZgcTa/Sybase.pm 
/usr/local/lib/perl/5.14.2/Sybase.pm 
/usr/local/lib/perl/5.14.2/DBD/Sybase.pm 
/usr/local/lib/perl/5.14.2/DBI/Sybase.pm 

Но когда я пытаюсь запустить мой скрипт, RET урны ошибки на линии, которая называет «если ($ самостоятельно -> {ручка} = DBI-> подключения (»

# ./check_mssql_health --hostname <MSSQL_Server_IP> --username <SQL_User> --password <Pass> --mode connection-time 
mode connection-time 
CRITICAL - cannot connect to <MSSQL_Server_IP>. install_driver(Sybase) failed: Can't locate loadable object for module DBD::Sybase in @INC (@INC contains: . /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl) at (eval 10) line 3 
Compilation failed in require at (eval 10) line 3. 
Perhaps a module that DBD::Sybase requires hasn't been fully installed 
at ./check_mssql_health line 3192 

Я уже потратил много времени продувочного сообщения, но я не нашел решение или хотя бы один, который я мог бы понять и реализовать.

С наилучшими пожеланиями, Себастьо

+1

«Невозможно найти загружаемый объект для модуля DBD :: Sybase» - это не то же самое, что не удается найти DBD :: Sybase. Он ищет загружаемую библиотеку, которая, возможно, не была установлена ​​на вашем компьютере. Файл .pm сообщает вам, что существует код «обертка», но он не говорит вам, что загружается собственный код для выполнения операций на уровне c. – Axeman

+1

У вас действительно есть путь '.../DBI/Sybase.pm' [sic]? Я не знаю Sybase как таковой, но это необычно для драйверов для установки под «DBI /», а не под «DBD /». Возможно, кто-то вручную испортил установку DBD-Sybase. – pilcrow

+0

В отчаянии я скопировал Sybase.pm в DBD /, я могу удалить этот .pm, но это не имеет значения (я пробовал) –

ответ

4

Когда я пытаюсь установить DBD :: Sybase CPAN говорит мне, что уже установлено:

Это просто означает, что он нашел DBD/Sybase.pm. Никакие испытания не проводятся; модуль даже не загружен.

В акте отчаяния я скопировал Sybase.pm в DBD/

Это причина ошибки вы спрашиваете. Perl находит .pm, который вы скопировали, но не другие файлы, созданные как часть процесса установки.

Удалить файлы, созданные [1], а затем установите модуль надлежащим образом (например, с помощью менеджера пакетов вашей системы, если он есть, или cpan DBD::Sybase, если он не делает).


  1. Вы кажетесь создали по крайней мере, следующие файлы:

    • /usr/local/lib/perl/5.14.2/Sybase.pm
    • /usr/local/lib/perl/5.14.2/DBD/Sybase.pm
    • /usr/local/lib/perl/5.14.2/DBI/Sybase.pm
+0

Вы были правы, я удалил скопированный файлы и переустановил Sybase с помощью sudo apt-get install --reinstall libdbd-sybase-perl -force-yes -y –

0

Я хотел бы попробовать и установить его с помощью метких

sudo apt-get install libdbd-sybase-perl -y 

Я нашел CPAN иногда пропустить зависимости.

2

У меня есть работа с другой установкой.

Не используйте DBD :: Sybase, но устанавливайте freetds, unixodbc, а затем DBD :: ODBC. В файле freetds.conf задайте соответствующие параметры. Шахта выглядит как этот

[myMSSL] 
     host = 111.22.33.44 
     port = 1433 
     tds version = 7.2 
     client charset = UTF-8 

и /etc/odbc.ini

[mySQSL_mydb] 
APP = unixodbc 
Description  = Database mydb on myMSSQL 
Driver   = TDSdriver 
Server   = myhost 
Database  = mydb 
Port   = 1433 
#Trace   = No 

Я думаю, что эти пакеты, которые вам нужны.

  • libdbd-FreeTDS - драйвер сервера базы данных FreeTDS для libdbi
  • tdsodbc -ODBC драйвер для подключения к серверам MS SQL и Sybase SQL
  • FreeTDS-бен - FreeTDS командной строки Утилити

С другой стороны, смотри также этот пост: Using Ubuntu, how do I install DBD::Sybase from CPAN?

(и некоторые другие, например, этот: Access SQL Server from Solaris)

 Смежные вопросы

  • Нет связанных вопросов^_^