Toon posts:

[Slackware] Perl DBI->connect segfault

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer al weken "WebGUI" (WebGUI is a content management framework, zie evt. freshmeat.net) te installeren. Het is gebaseerd op perl.

Paar weken geleden compleet frisse Debian 3.0 installatie gedaan maar daarmee kreeg ik problemen met Perl modules die ik nodig hebt. Eigenlijk wou ik toch weer terug naar Slackware dus afgelopen vrijdag heb ik Slackware 9.0 (beta) geinstalleerd. Werkt goed. Vandaag ben ik wederom begonnen om WebGui geinstalleerd te krijgen.

De benodigde Perl modules heb ik nu allemaal, de webserver (apache) draait, mysql geinstalleerd inclusief de WebGui database, dus ik ben er nu helemaal klaar voor.

Nou heb ik nog 1 probleem waar ik even niet meer uit kom. Bij WebGui zit een test perl script wat je kunt draaien om alle benodigdheden te testen. Alles werkte behalve de connectie naar de mysql database met DBI->connect(). Ik zag echter geen goede foutmelding want dit script zegt alleen dat er niet geconnect kan worden.

Vervolgens heb ik zelf een test script gemaakt (1 liner) die een connectie maakt. Toen zag ik plotseling meer. Namelijk:

Can't load '/usr/lib/perl5/site_perl/5.8.0/i386-linux/auto/DBD/mysql/mysql.so' for module
DBD::mysql: libmysqlclient.so.10: cannot open shared object file: no such file or directory..
etc.


Allereerst heb ik op Google gezocht. Daar vond ik meerdere malen de oplossing om het path naar libmysqlclient.so op te nemen in LD_LIBRARY_PATH of /etc/ld.so.conf. Dit heb ik gedaan maar gaf geen oplossing.

Vervolgens merkte ik dat libmysqlclient.so.10 nergens bestaat. Ik heb wel libmysqlclient.so en libmysqlclient.so.12 en libmysql.12.0 gevonden.

Toen heb ik heb een symlink gemaakt: ln -s /usr/lib/mysql/libmysqlclient.so.12.0 /usr/lib/libmysqlclient.so.10 waarbij libmysqlclient.so12.0 de binary is en /usr/lib/mysqlclient.so.10 de zachte link.

Nu krijg ik geen foutmeldingen meer maar onmiddelijk een 'segmentation fault'.

Wat kan ik nu nog doen ?

Verwijderd

Waarom heb je niet gewoon de client-libs van Mysql gecompileerd en geinstalleerd? mysqlclient zal wel een library uit een van de MySQL packages zijn.

  • BOOTZ
  • Registratie: Maart 2001
  • Laatst online: 17-03 09:38
ik heb op onze server de dbi packages van mysql.org geinstalleerd, en daarmee werkte het in een keer zonder probs.
waar heb jij je packages vandaan als ik vragen mag?

Maak je eigen poll


Verwijderd

Topicstarter
De mysql client-libs zaten in de slackware package. Ik heb mysql geinstalleerd door allereeerst de bestaande package te verwijderen met "removepkg mysql" een daarna de nieuwste slackware package die ik kon bemachtigen geinstalleerd met "installpkg mysql". Daarna "/usr/bin/mysql_install_db" db draaien om de databases te krijgen en "chown -R mysq.mysq /var/lib/mysql" om de tabellen toe te kennen aan de mysql user. Mysql draait goed voorzover ik kan beoordelen. En die client-libs heb ik helemaal niet bij stil gestaan die zijn door de package neergezet.

De DBI packages zijn geinstalleerd door "perl -MCPAN -e shell", "install DBI::mysql".

Ik heb niet het gevoel dat er ook maar iets fout is. Behalve dan dat ik een mysqlclient.so.12.0 heb en schijnbaar een mysqlclient.so.10 verwacht wordt. Op zich zou dit ook geen probleem moeten zijn lijkt mij maar ik ben geen expert.

Verwijderd

Verwijderd schreef op 19 January 2003 @ 21:06:
De mysql client-libs zaten in de slackware package. Ik heb mysql geinstalleerd door allereeerst de bestaande package te verwijderen met "removepkg mysql" een daarna de nieuwste slackware package die ik kon bemachtigen geinstalleerd met "installpkg mysql". Daarna "/usr/bin/mysql_install_db" db draaien om de databases te krijgen en "chown -R mysq.mysq /var/lib/mysql" om de tabellen toe te kennen aan de mysql user. Mysql draait goed voorzover ik kan beoordelen. En die client-libs heb ik helemaal niet bij stil gestaan die zijn door de package neergezet.

De DBI packages zijn geinstalleerd door "perl -MCPAN -e shell", "install DBI::mysql".

Ik heb niet het gevoel dat er ook maar iets fout is. Behalve dan dat ik een mysqlclient.so.12.0 heb en schijnbaar een mysqlclient.so.10 verwacht wordt. Op zich zou dit ook geen probleem moeten zijn lijkt mij maar ik ben geen expert.
Slackware met mysql packages is een ramp... Doe 't even via een binary install, dan werkt 't meteen goed :)

Verwijderd

Topicstarter
Verwijderd schreef op 19 januari 2003 @ 21:11:
[...]


Slackware met mysql packages is een ramp... Doe 't even via een binary install, dan werkt 't meteen goed :)
Dat wist ik niet, ik heb er tot nu toe nog geen problemen mee gehad. Maar goed het is ook maar net wat je ermee doet natuurlijk.

Ik denk dat ik je advies opvolg en binnenkort opnieuw begin en dan compileer ik alles zelf wel i.p.v. packages gebruiken. Eens kijken wat er dan weer fout gaat..

  • pinball
  • Registratie: Oktober 1999
  • Niet online

pinball

Electric Monk

Verwijderd schreef op 19 January 2003 @ 21:11:
[...]
Slackware met mysql packages is een ramp... Doe 't even via een binary install, dan werkt 't meteen goed :)
:?

Een slackware package is een binary install.. alleen dan 1 die speciaal voor slackware is gemaakt. Zie niet echt waarom een 'generieke' binary beter zou werken dan versie voor slackware.

Verder heb ik die ramp ook nog nooit mee mogen maken, mysql werkt leker met perl en met php.

Whenever you find that you are on the side of the majority, it is time to reform.


  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 20:30

deadinspace

The what goes where now?

Verwijderd schreef op 19 January 2003 @ 20:18:
Toen heb ik heb een symlink gemaakt: ln -s /usr/lib/mysql/libmysqlclient.so.12.0 /usr/lib/libmysqlclient.so.10 waarbij libmysqlclient.so12.0 de binary is en /usr/lib/mysqlclient.so.10 de zachte link.
Soms is het nodig (om verschillende redenen) een library zo aan te passen dat er een ABI verschil is met vorige versies. Als dat gebeurt, dan wordt ook de soname veranderd.
Het gevolg daarvan is dat libblaat.so.x en libblaat.so.y (met x != y) niet noodzakelijk binary compatible zijn. Een programma gelinkt tegen versie x werkt niet noodzakelijk met versie y en andersom. Dat is de hele reden dat die .x of .y wordt toegevoegd aan shared libraries.

Dat symlinken wil wel eens helpen (dat versies verschillen wil niet zeggen dat libs persé binary incompatible zijn, of misschien treft de verandering het programma in kwestie niet), maar het is meer een workaround dan een oplossing, en het hoeft niet te werken. Dat het niet altijd werkt ervaar jij nu in de vorm van een segv :)

Je zult dus of een versie van je programma moeten hebben dat tegen libmysqlclient.so.12 gelinkt is, of libmysqlclient.so.10 moeten bemachtigen.

Verwijderd

Topicstarter
deadinspace schreef op 20 January 2003 @ 00:36:
[...]

Soms is het nodig (om verschillende redenen) een library zo aan te passen dat er een ABI verschil is met vorige versies. Als dat gebeurt, dan wordt ook de soname veranderd.
Het gevolg daarvan is dat libblaat.so.x en libblaat.so.y (met x != y) niet noodzakelijk binary compatible zijn. Een programma gelinkt tegen versie x werkt niet noodzakelijk met versie y en andersom. Dat is de hele reden dat die .x of .y wordt toegevoegd aan shared libraries.

Dat symlinken wil wel eens helpen (dat versies verschillen wil niet zeggen dat libs persé binary incompatible zijn, of misschien treft de verandering het programma in kwestie niet), maar het is meer een workaround dan een oplossing, en het hoeft niet te werken. Dat het niet altijd werkt ervaar jij nu in de vorm van een segv :)

Je zult dus of een versie van je programma moeten hebben dat tegen libmysqlclient.so.12 gelinkt is, of libmysqlclient.so.10 moeten bemachtigen.
Ok duidelijk.

Ik ga er binnenkort mee bezig. Eerst weer moed bijeenrapen om voor de zoveelste keer te beginnen. Ik ga proberen te kijken hoe het nou precies in elkaar steekt met die libmysqlclient.10 en waarom ik die dan niet heb en anders doe ik wel een herinstallatie vanuit mysql source of een static binary van mysql.org ofzo.

Bedankt voor jullie reakties en meedenken.

Verwijderd

Er is onlangs weer een major update geweest van Slackware-current, waaronder mysql en apache. Wellicht dat die packages wel werken op je systeem. Je kunt in principe geen Slackware-8.1 packages op Slackware-current gebruiken.

Heb je nog een speciale reden om Slackware-current te draaien ? Je noemt het beta, mijn ervaring van een maand terug is dat het nauwelijks fatsoenlijk werkt en zeker geen beta kwaliteit heeft. Vooral omdat er tussentijds een wijziging van gcc versie is geweest en niet alles al met de nieuwe compiler is gecompileerd.
Pagina: 1