problem s ldconfig a MariaDB 5.5

Miroslav Lachman 000.fbsd at quip.cz
Mon May 12 23:59:54 CEST 2014


Na nekolika serverech jsem pred casem provadel upgrade z MySQL 5.1 na 
MariaDB 5.5. MariaDB je v podstate plne kompatibilni nahrada za MySQL 5.5.

Uz pri instalaci jsem mel problem s tim, ze aplikace, ktere pouzivaji 
libmysqlclient.so s novou verzi nenabehly, nektere porty pri reinstalaci 
zkousely znovu instalovat MariaDB client. Jak jsem zjistil, duvodem je 
to, ze nevidely existujici knihovny 
/usr/local/lib/mysql/libmysqlclient.so.18 atd.
Jelikoz se to stalo na nekolika ruznych systemech, tak dost pochybuju, 
ze by to byla jen nejaka moje ojedinela chyba. Na druhou stranu jsem 
nikde nezaznamenal, ze by si na podobny problem stezoval nekdo jiny.

Ja tehdy problem vyresil spustenim

ldconfig -R /usr/local/lib/mysql

Jenze to se mi ted vratilo, protoze po rebootu serveru se problem vratil.

Takze muj dotaz zni - co se v systemu pri instalaci nejakeho portu a 
nasledne i pri rebootu ma postarat o nalezeni vsech potrebnych knihoven?
A co muze byt pricinou toho, ze je u me nenajde ani na amd64, ani na 
i386, ani v jailu. Zkratka ruzne konfigurace, ale stejne (spatne) chovani.

Po uplnost uvadim, jak to vypada po instalaci, nebo po rebootu serveru:

System vidi pouze stare knihovny v compat

# ldconfig -r | grep mysql
     199:-lmysqlclient_r.16 => 
/usr/local/lib/compat/pkg/libmysqlclient_r.so.16
     202:-lmysqlclient.16 => /usr/local/lib/compat/pkg/libmysqlclient.so.16


# ldconfig -R /usr/local/lib/mysql

# ldconfig -r | grep mysql
     search directories: /usr/local/lib:/usr/local/lib/mysql
     79:-lmysqld.18 => /usr/local/lib/mysql/libmysqld.so.18
     80:-lmysqlclient.18 => /usr/local/lib/mysql/libmysqlclient.so.18
     81:-lmysqlclient_r.18 => /usr/local/lib/mysql/libmysqlclient_r.so.18

Nez jsem to dopsal, tak jsem si jeste porovnal dva servery, jeden s 
MariaDB 5.5 a druhy s MySQL 5.1. Takze ted uz mam i odpoved na cast otazky.
Pri instalaci portu by se mel spoustet ldconfig tak, jak ma port 
definovano v +CONTENTS

To je ale v obou pripadech definovano v podstate stejne:

MariaDB

@exec /sbin/ldconfig -m /usr/local/lib/mysql
@unexec /sbin/ldconfig -R
@cwd /usr/local
libdata/ldconfig/mariadb

MySQL

@exec /sbin/ldconfig -m /usr/local/lib/mysql
@unexec /sbin/ldconfig -R
@cwd /usr/local
libdata/ldconfig/mysql

Presto to v pripade MariaDB nezafunguje.

Navic v pripade MariaDB chybi /usr/local/libdata/ldconfig/mariadb
Zatim co pro MySQL existuje /usr/local/libdata/ldconfig/mysql

Takze proto to nefunguje po rebootu.

Vsechny porty pouzivaji stejne USE_LDCONFIG (akorat u mysql51-client je 
to definovane v Makefile mysql51-server, ktery se vola s CLIENT_ONLY)

databases/mariadb55-client/Makefile:19:USE_LDCONFIG= ${PREFIX}/lib/mysql

databases/mysql55-client/Makefile:19:USE_LDCONFIG=   ${PREFIX}/lib/mysql

databases/mysql51-server/Makefile:164:USE_LDCONFIG=  ${PREFIX}/lib/mysql


Posledni otazka tedy zustava - co je pricinou toho, ze u me na zadnem 
serveru nezafunguje ldconfig spravne?
(pouzivate nekdo uspesne MariaDB?)

Mirek


More information about the Users-l mailing list