Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ODBC] Nie można otworzyć biblioteki, Can't open lib '/usr/lib/libmodbc.so' : file not found
Tomplus
post 8.09.2021, 20:26:05
Post #1





Grupa: Zarejestrowani
Postów: 1 740
Pomógł: 217
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Dzisiaj mam problem z połączeniem się z bazą ODBC dla sterownika MacroBase (zna ktoś?)

Samo odbc na systemie przebiegło poprawnie, bo widać do po ustawieniach w plikach odbc.ini i odbcinst.ini jednakże gdy wykonuje testowe polecenie:

isql -v -k "DRIVER={Macrobase};SERVER=localhost;UID=adm;PWD=xyz"

otrzymuję komunikat:

Kod
[unixODBC][Driver Manager] Can't open lib '/usr/lib/libmodbc.so' : file not found
[ISQL] ERROR: Could not SQLConnect

sprawdzając pliki np. poleceniem: file /usr/libmodbc.so to mam informację np. że jest to plik 32 bitowy.

prawa dostępu do pliku: root 444 (wcześniej 777)
Go to the top of the page
+Quote Post
Pyton_000
post 9.09.2021, 07:36:02
Post #2





Grupa: Zarejestrowani
Postów: 8 037
Pomógł: 1409
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Sprawdzałeś to: ? https://stackoverflow.com/questions/3462411...o-file-not-foun
Go to the top of the page
+Quote Post
Tomplus
post 9.09.2021, 08:19:41
Post #3





Grupa: Zarejestrowani
Postów: 1 740
Pomógł: 217
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Niestety ale to nie było moje rozwiązanie,
zgłosił problem gdzie plik biblioteki miał w innej lokacji niż ścieżka w ustawieniach, ja mam dokładnie to samo co w ustawieniach.

Skorzystałem za to z rady drugiej:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib


niestety bez efektu.

Swoją drogą, na Stackoeverflow szukałem rozwiązania dużo wcześniej, zanim rozpocząłem wątek tutaj na forum.

Ten post edytował Tomplus 9.09.2021, 08:20:51
Go to the top of the page
+Quote Post
Pyton_000
post 9.09.2021, 08:44:05
Post #4





Grupa: Zarejestrowani
Postów: 8 037
Pomógł: 1409
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


A pokaż co zwraca `/usr/lib/libmodbc.so`
Go to the top of the page
+Quote Post
Tomplus
post 9.09.2021, 09:10:17
Post #5





Grupa: Zarejestrowani
Postów: 1 740
Pomógł: 217
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Wrzucę bardziej kompleksowe informacje, pracuję na Debian/WSL2.



Kod
root@admin:/# ls -lah /etc/odbc
total 3.7M
drwxr-xr-x  2 root       root       4.0K Sep  8 15:04 .
drwxr-xr-x 68 root       root       4.0K Sep  8 15:02 ..
-rwxrwxrwx  1 tom tom 1.3K Sep  8 13:54 as_dsn.ini
-rwxrwxrwx  1 tom tom  896 Sep  3 10:53 dsn.ini
-rwxrwxrwx  1 tom tom 4.7K Sep  3 10:18 install_driver.sh
-rwxrwxrwx  1 tom tom 4.7K Sep  3 10:18 install_driver64.sh
-rwxrwxrwx  1 tom tom 4.8K Sep  3 10:18 install_driver64_legacy.sh
-rwxrwxrwx  1 tom tom 4.8K Sep  3 10:18 install_dsn.sh
-rwxrwxrwx  1 tom tom 568K Sep  8 15:03 libmodbc.so
-rwxrwxrwx  1 tom tom 639K Sep  8 15:04 libmodbc64.so
-rwxrwxrwx  1 tom tom 640K Sep  8 15:04 libmodbc64_legacy.so
-r--r--r--  1 root       root       568K Sep  8 13:16 libodbc.so
-r--r--r--  1 root       root       639K Sep  8 13:17 libodbc64.so
-r--r--r--  1 root       root       640K Sep  8 13:17 libodbc_legacy.so
lrwxrwxrwx  1 root       root         13 Sep  8 14:05 odbc.ini -> /etc/odbc.ini
lrwxrwxrwx  1 root       root         17 Sep  8 14:05 odbcinst.ini -> /etc/odbcinst.ini
-rwxrwxrwx  1 tom tom 2.1K Sep  3 10:18 switch_drivers64.sh
-rwxrwxrwx  1 tom tom 2.1K Sep  3 10:18 switch_drivers64_legacy.sh
root@admin:/# cat /etc/odbc/odbcinst.ini
[MacroBASE]
Driver=/usr/lib/libmodbc.so
Description=libmodbc.so
UsageCount=1

root@admin:/# cat /etc/odbc/odbc.ini
[Macrobase]
DRIVER=MacroBASE
UID=
PWD=
AS=1
ASNAME=xpertis
ASGROUP=default
ASADDRESS=10.0.0.102
ASPORT=5580
ASCERTUSE=0
ASCERTPTH=

root@admin:/# file /usr/lib/libmodbc.so
/usr/lib/libmodbc.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, with debug_info, not stripped
root@admin:/# ls -lah /usr/lib/ |grep "libm"
-r--r--r--  1 root root 568K Sep  8 15:03 libmodbc.so
-r--r--r--  1 root root 639K Sep  8 15:04 libmodbc64.so
-r--r--r--  1 root root 640K Sep  8 15:04 libmodbc64_legacy.so
root@admin:/# isql -v Macrobase
[01000][unixODBC][Driver Manager]Can't open lib '/usr/lib/libmodbc.so' : file not found
[ISQL]ERROR: Could not SQLConnect
root@admin:/# isql -v -k "DRIVER={Macrobase};SERVER=10.0.0.102;UID=szef;PWD=szef"
[01000][unixODBC][Driver Manager]Can't open lib '/usr/lib/libmodbc.so' : file not found
[ISQL]ERROR: Could not SQLDriverConnect
root@admin:/# isql Macrobase szef szef "select * from JM"
[ISQL]ERROR: Could not SQLConnect
root@admin:/# isql -v  Macrobase szef szef "select * from JM"
[01000][unixODBC][Driver Manager]Can't open lib '/usr/lib/libmodbc.so' : file not found
[ISQL]ERROR: Could not SQLConnect
Go to the top of the page
+Quote Post
Pyton_000
post 9.09.2021, 09:12:04
Post #6





Grupa: Zarejestrowani
Postów: 8 037
Pomógł: 1409
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


poka jeszcze ldd /usr/lib/libmodbc.so
Go to the top of the page
+Quote Post
Tomplus
post 9.09.2021, 09:26:12
Post #7





Grupa: Zarejestrowani
Postów: 1 740
Pomógł: 217
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Kod
ldd /usr/lib/libmodbc.so
not dynamic executable


Go to the top of the page
+Quote Post
Pyton_000
post 9.09.2021, 09:59:17
Post #8





Grupa: Zarejestrowani
Postów: 8 037
Pomógł: 1409
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Próbowałeś uzywać wersji 64bit?
Go to the top of the page
+Quote Post
Tomplus
post 13.09.2021, 08:40:38
Post #9





Grupa: Zarejestrowani
Postów: 1 740
Pomógł: 217
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Próbowałem, także wersji 32bit dla wszystkich...
polecenie LDD w ogóle na jednym serwerze z Debian działało, na innym już nie, nawet po zainstalowaniu dodatkowych bibliotek.


Tutaj mam przykład inny, niby informuje mnie o braku biblioteki, ale po dodaniu powiązania powiązania symbolicznego do tych miejsc nadal wskazuje że nie ma biblioteki:

Kod
root@SERVER-R220:/data/server/run# ldd libmodbc.so
        linux-gate.so.1 (0xf7f99000)
        libodbcinst.so => not found
        libpthread.so.0 => /lib32/libpthread.so.0 (0xf7f12000)
        libc.so.6 => /lib32/libc.so.6 (0xf7d34000)
        /lib/ld-linux.so.2 (0xf7f9b000)
root@SERVER-R220:/data/server/run# find / -iname libodbcinst.so
/data/server/run/libodbcinst.so
/usr/lib32/libodbcinst.so
/usr/libx32/libodbcinst.so
/usr/lib/x86_64-linux-gnu/libodbcinst.so
/usr/lib/libodbcinst.so
root@SERVER-R220:/data/server/run# file /data/server/run/libodbcinst.so
/data/server/run/libodbcinst.so: symbolic link to /usr/lib/x86_64-linux-gnu/libodbcinst.so
/usr/lib/x86_64-linux-gnu/libodbcinst.so: symbolic link to libodbcinst.so.2.0.0
root@SERVER-R220:/data/server/run# file /usr/lib/x86_64-linux-gnu/libodbcinst.so.2.0.0
/usr/lib/x86_64-linux-gnu/libodbcinst.so.2.0.0: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=68020233737860bb4243431aae7a9186e9c1c6db, with debug_info, not stripped






Mam dodatkowe pytanie które może rozwiąże mój problem, a mianowicie jak mam dodać bibliotekę aby była widoczna dla innej biblioteki?
ldconfig -l {źródło_do_lib}

Nie działa. Tj. działa, ale nie tak jakbym oczekiwał.

Kod
ldconfig -lX /lib64/libodbcinst.so
root@admin:/lib/odbc# ldconfig -v |grep libodbcinst
        libodbcinst.so.2 -> libodbcinst.so.2.0.0
root@admin:/lib/odbc# ldd /data/server/run/libmodbc.so
        linux-gate.so.1 (0xf7f64000)
        libodbcinst.so => not found
        libpthread.so.0 => /lib32/libpthread.so.0 (0xf7edf000)
        libc.so.6 => /lib32/libc.so.6 (0xf7d01000)
        /lib/ld-linux.so.2 (0xf7f66000)
Go to the top of the page
+Quote Post
LowiczakPL
post 13.09.2021, 17:47:14
Post #10





Grupa: Zarejestrowani
Postów: 508
Pomógł: 53
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


czy o coś takiego Ci chodzi? https://tldp.org/HOWTO/Program-Library-HOWT...-libraries.html


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
Tomplus
post 15.09.2021, 08:57:27
Post #11





Grupa: Zarejestrowani
Postów: 1 740
Pomógł: 217
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Sprawdzę to, ale odsuwam to w czasie.

Póki co wkurzyłem się i zrobiłem to samo pod WINDOWS.
-> zainstalowałem sterownik MacroBASE
-> następnie w ODBC 32bit, utworzyłem połączenie DSN
-> pobrałem Apache 32bit
-> pobrałem PHP8 32bit
---
Teraz działa pobieranie danych z bazy.

Może faktycznie potrzebny był mi system linux w pełni 32bitowy, bo instalowanie bibliotek 32bitowych pod linuxem to katorga, mimo że segregują się bardzo klarownie drzewie katalogów, to gubię się w tym co jeszcze potrzebuję, jak tylko wywala mi jakiś błąd że czegoś nie ma, a jest.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.09.2021 - 19:31