2012-04-25 10 views
8

Używam ArchLinux i próbuję zainstalować sterowniki postępu OpenEdge, dzięki czemu mogę uzyskać do niego dostęp przez PHP. Mam zainstalowany pakiet unixodbc i sterowników, ale kiedy testować połączenie przez isql lub PHP, mam ten sam błąd ...Menedżer sterownika unixodbc nie może otworzyć określonej biblioteki podczas instalacji

# isql -3 SUBS2A 
[01000][unixODBC][Driver Manager]Can't open lib '/usr/dlc/odbc/lib/pgoe1023.so' : file not found 
[ISQL]ERROR: Could not SQLConnect 

pomieszane rzeczą jest to, że „/ usr/DLC/ODBC /lib/pgoe1023.so "obecnie istnieje, nawet dowiązałem symbolicznie z"/usr/dlc ".

Poniżej są moje pliki ini ...

ODBC.INI

[SUBS2A] 
Description = ODBC Driver for Progress 
Driver = /usr/dlc/odbc/lib/pgoe1023.so 
FileUsage = 1 

ODBCINST.INI (usunąłem kilka mandatów, gdyż nie ma znaczenia)

[ODBC-test] 
Description = SUBS2A 
Driver = SUBS2A 
Server = 192.168.1.2 
Port = 4000 
APILevel=1 
ConnectFunctions=YYN 
CPTimeout=60 
DriverODBCVer=03.60 
FileUsage=0 
SQLLevel=0 
UsageCount=1 
ArraySize=50 
DefaultLongDataBuffLen=2048 
DefaultIsolationLevel= READ COMMITTED 
StaticCursorLongColBuffLen=4096 

EDYCJA Dodawanie dodatkowych informacji ...

Th Wygląda na to, że oba są 32-bitowe, ale nie mam pojęcia, co robię w związku z tym.

[[email protected] etc]# file /usr/bin/isql 
/usr/bin/isql: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.27, BuildID[sha1]=0xd1bc16c119       bb5cad6fea9e2a9abc1d06794a2775, stripped 
[[email protected] etc]# file /usr/dlc/odbc/lib/pgoe1023.so 
/usr/dlc/odbc/lib/pgoe1023.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped 

wydaje się, że brakuje pewnych zależności ...

[[email protected] lib]# ldd pgoe1023.so 
     linux-gate.so.1 => (0xb77c2000) 
     libpthread.so.0 => /lib/libpthread.so.0 (0xb7499000) 
     librt.so.1 => /lib/librt.so.1 (0xb7490000) 
     libpgicu23.so => not found 
     libdl.so.2 => /lib/libdl.so.2 (0xb748b000) 
     libstdc++-libc6.2-2.so.3 => not found 
     libm.so.6 => /lib/libm.so.6 (0xb745e000) 
     libc.so.6 => /lib/libc.so.6 (0xb72bc000) 
     /lib/ld-linux.so.2 (0xb77c3000) 

UPDATE

skopiowane "libpgicu23.so"/usr/lib i go rozwiązać ten problem, ale nadal potrzebuję "libstdC++ - libc6.2-2.so.3", ale kiedy złapałem jeden z Internetu, powiedział "błąd podczas ładowania bibliotek współdzielonych: /usr/lib/libstdc++-libc6.2-2.so. 3: Plik ELF OS ABI niepoprawny "

W rzeczywistości utworzyłem dowiązanie symboliczne od "libstdC++ - libc6.2-2.so.3" do "libstdC++. So", ale nawet jeśli rozwiązało problem za pośrednictwem ldd, spowodowało to ten błąd, gdy zapytałem isql ..

isql: symbol lookup error: /usr/dlc/odbc/lib/pgoe1023.so: undefined symbol: __builtin_vec_new

Nigdy nie zainstalowałem odbc na pudełku * nix, ale zrobiliśmy to samo na oknie Windows i działało dobrze. Wszelkie dane wejściowe zostały docenione.

Odpowiedz

14

Sprawdź unixODBC i sterownik są takie same architektury tj uruchom:

which isql 
file xxx (whatever came back from above) 
file /usr/dlc/odbc/lib/pgoe1023.so 

Powinny one być zarówno 32 bit lub 64 bit. UnixODBC 64-bitowy nie może używać sterowników 32-bitowych i na odwrót.

Nie potrzebujesz tego dowiązania symbolicznego.

Uruchom ldd na /usr/dlc/odbc/lib/pgoe1023.so, aby upewnić się, że znaleziono wszystkie zależności.

Sprawdź /usr/dlc/odbc/lib/pgoe1023.so jest wykonywalny.

BTW, przypuszczam, że masz błędne etykiety, ponieważ zawartość pliku odbc.ini powinna być odbcinst.ini i odwrotnie.

+0

Okay Zrobiłem edycję mojego pytania z dodatkowymi informacjami. To dziwaczne, ponieważ faktycznie miałem pliki ini na odwrocie, jednak kiedy je odwracam, błąd się pogarsza (mówi, że nie może znaleźć DSN/Driver). Jednak po uruchomieniu ldd dostaję brakujące zależności, więc spróbuję to naprawić, znalazłem coś, co może mi pomóc: http://remidian.com/progress/progress-openedge-database-101b -install-on-centos-rhel.html – PolishHurricane

+0

Zazwyczaj nie ma sensu, że pliki ini były niewłaściwe, ale ponieważ unixODBC pozwala ci określić driver = XXX, gdzie XXX jest wpisem w odbcint.ini lub sterowniku = path_to_shared_object Ci się udało. Fakt, że wszystko jest w 32 bitach dobre, ale jesteś na brakującej zależności, nie możesz zrobić tego, co zrobiłeś i oczekiwać, że zadziała. Niepoprawna wartość ABI sugeruje, że zainstalowałeś niekompatybilny obiekt udostępniony. To nie jest takie proste. – bohica

2

Jedna rzecz do sprawdzenia to mniejsze numery wersji bibliotek unixODBC, z którymi sterownik jest połączony. Od czasu unixODBC 2.3.1 zmieniłem mniejszą liczbę bibliotek na 2, aby odzwierciedlić zmianę rozmiaru SQLLEN na 64-bitowych platformach.Jeśli jednak biblioteka sterowników została połączona z wcześniejszą wersją, będzie szukała libodbc.so.1, a obecne źródła zapewniają libodbc.so.2. Prostym rozwiązaniem jest dostarczenie łącza sym z pliku * .so.1 do * .so.2. To samo dotyczy libodbcinst.so, więc sprawdź to również.

Powiązane problemy