от Пейо Попов(14-02-2005)
рейтинг (30)
[ добре ]
[ зле ]
Вариант за отпечатване Едно от нещата, които ме дразнят в
подбора на пакетите включени в Fedora Core 3 е старата версия на
предпочитаната от мен база данни - MySQL. Клонът версии започващи с
3.x.x отдавна е обявен за остарял от екипа на MySQL, но поради
неизвестни за мен причини разработчиците на Fedora ползват последната
стабилна версия от него.
Досега предпочитах удобството на
автоматичните обновявания на стария клон, но тъй като все повече
продукти изискват версия 4.x, а и предимствата на новите версии стават
все повече и повече, реших да обновя до последната стабилна версия.
MySQL AB предоставят и rpm дистрибутив, който се ползва за основа на
включения в development клона на Fedora Core пакет на MySQL версия
4.1.9. Това, че е в development клона не трябва да ни притеснява,
защото MySQL са доказали многократно, че не пускат нестабилни версии, а
в момента 4.1 клона е водещата им стабилна версия.
Проблемът
при обновяването на MySQL се състои в това, че много други пакети
разчитат на него. Такива са php-mysql, perl-DBD-MySQL, MySQL-python и
други. Затова ако опитаме просто да обновим версията ще получим
конфликт на зависимостите, защото ще се опитаме да премахнем
библиотеки, от които горните пакети имат нужда. На моята работна
станция следните пакети зависят от MySQL:
Примерен код |
error: Failed dependencies:
libmysqlclient.so.10 is needed by (installed) pam_mysql-0.5-1.i386
libmysqlclient.so.10 is needed by (installed) perl-DBD-MySQL-2.9003-5.i386
libmysqlclient.so.10 is needed by (installed) php-mysql-4.3.10-3.2.i386 |
Възможен начин да се справим с тази зависимост е да прекомпилираме
всички зависими пакети да ползват новите библиотеки, но това ще направи
доста трудно последващото им обновяване, а плюс това има значително
по-лесен начин.
MySQL
предоставят rpm пакет MySQL-shared-compat, който съдържа библиотеките
от предишните версии и сред тях е и липсващата ни в горния случай
libmysqlclient.so.10:
Примерен код |
rpm -qpl MySQL-shared-compat-4.1.9-0.i386.rpm
warning: MySQL-shared-compat-4.1.9-0.i386.rpm: V3 DSA signature: NOKEY, key ID 5072e1f5
/usr/lib/libmysqlclient.so
/usr/lib/libmysqlclient.so.10
/usr/lib/libmysqlclient.so.10.0.0
/usr/lib/libmysqlclient.so.12
/usr/lib/libmysqlclient.so.12.0.0
/usr/lib/libmysqlclient.so.14
/usr/lib/libmysqlclient.so.14.0.0
/usr/lib/libmysqlclient_r.so
/usr/lib/libmysqlclient_r.so.10
/usr/lib/libmysqlclient_r.so.10.0.0
/usr/lib/libmysqlclient_r.so.12
/usr/lib/libmysqlclient_r.so.12.0.0
/usr/lib/libmysqlclient_r.so.14
/usr/lib/libmysqlclient_r.so.14.0.0 |
Използвайки
този пакет, няма да ни се налага да прекомпилираме зависимите от новата
версия пакети, като те ще могат да бъдат обновявани автоматично.
Разработчиците
на Fedora предлагат своя версия на този пакет под името
mysqlclient10-3.23.58-4.i386.rpm и този пакет съдържа само библиотеките
от версиите на MySQL, които се дистрибутират в стабилния клон на Fedora:
Примерен код |
/etc/ld.so.conf.d/mysqlclient10-i386.conf
/usr/lib/mysql/libmysqlclient.so.10
/usr/lib/mysql/libmysqlclient.so.10.0.0
/usr/lib/mysql/libmysqlclient_r.so.10
/usr/lib/mysql/libmysqlclient_r.so.10.0.0 |
Аз предпочитам да ползвам пакета на Fedora, защото нямам нужда от съвместимост с 4.0 версията.
Тъй
като опита да обновим версията чрез познатото ни rpm -Uvh ще доведе до
грешка поради конфликт на зависимостите, трябва първо да премахнем
старата версия и да инсталираме на чисто пакета със старите библиотеки,
за удовлетворяване на зависимостите, а след това и самия сървър за бази
данни. Това става със следните команди:
Примерен код |
rpm -e --nodeps mysql mysql-server mysql-devel mysql-bench
rpm -Uvh mysqlclient10-3.23.58-4.i386.rpm
rpm -Uvh mysql-4.1.9-1.i386.rpm mysql-devel-4.1.9-1.i386.rpm mysql-server-4.1.9-1.i386.rpm mysql-bench-4.1.9-1.i386.rpm |
След това трябва вече да имаме функциониращ MySQL версия 4.1.9.
Накратко, този шел скрипт трябва да свърши работата вместо вас или поне да ви даде ясна предства за последователността на нужните действия:
fedora-upgrade-mysql.sh |
VER=4.1.9-1
echo “Stop the database server”
/etc/init.d/mysqld stop
echo “Remove old MySQL version”
rpm -e –-nodeps mysql mysql-server mysql-devel mysql-bench
echo “Install the compatibility libraries”
rpm -Uvh http://fedora.lcpe.uni-sofia.bg/fedora/linux/core/development/i386/Fedora/RPMS/mysqlclient10-3.23.58-4.i386.rpm
echo “Install the new MySQL”
rpm -Uvh http://fedora.lcpe.uni-sofia.bg/fedora/linux/core/development/i386/Fedora/RPMS/mysql-$VER.i386.rpm
rpm -Uvh http://fedora.lcpe.uni-sofia.bg/fedora/linux/core/development/i386/Fedora/RPMS/mysql-devel-$VER.i386.rpm
rpm -Uvh http://fedora.lcpe.uni-sofia.bg/fedora/linux/core/development/i386/Fedora/RPMS/mysql-bench-$VER.i386.rpm
rpm -Uvh http://fedora.lcpe.uni-sofia.bg/fedora/linux/core/development/i386/Fedora/RPMS/mysql-server-$VER.i386.rpm
echo “Start the database server”
/etc/init.d/mysqld start |
<< Как да "сваляме" Debian с Jigdo от българските огледала. | LiVES и неговият създател >>
|