Scientific LinuxにMySQL5.5をインストール

今までは普通にCentOSを使ってたんだけど、
RHEL6のクローンはScientific Linuxが良いらしいので
試しに環境を作ってみる。

MySQLyum でインストールしようとすると、

# yum info mysql
Version : 5.1.52

なんだけど5.5で行きたいので
http://www-jp.mysql.com/downloads/mysql/
からrpmを持ってきてインストール。

ところが

# rpm -ivh --test MySQL-server-5.5.19-1.linux2.6.x86_64.rpm

としようとするとずらずら〜っと

準備中... ########################################### [100%]
ファイル /usr/share/mysql/charsets/README (パッケージ MySQL-server-5.5.19-1.linux2.6.x86_64 から) は、パッケージ mysql-libs-5.1.52-1.el6_0.1.x86_64 からのファイルと競合しています。
ファイル /usr/share/mysql/charsets/Index.xml (パッケージ MySQL-server-5.5.19-1.linux2.6.x86_64 から) は、パッケージ mysql-libs-5.1.52-1.el6_0.1.x86_64 からのファイルと競合しています。

と怒られる。

素の状態のOSにはmysqlはいれていない筈なんだけど・・・と思いきや、

# rpm -qa | grep mysql
mysql-libs-5.1.52-1.el6_0.1.x86_64

がいるので削除しようと・・・

# yum remove mysql-libs

========================================================================================================================
Package Arch Version Repository Size
========================================================================================================================
Removing:
mysql-libs x86_64 5.1.52-1.el6_0.1 @anaconda-ScientificLinux-201107271550.x86_64 4.0 M
Removing for dependencies:
cronie x86_64 1.4.4-7.el6 @anaconda-ScientificLinux-201107271550.x86_64 166 k
cronie-anacron x86_64 1.4.4-7.el6 @anaconda-ScientificLinux-201107271550.x86_64 43 k
crontabs noarch 1.10-32.1.el6 @anaconda-ScientificLinux-201107271550.x86_64 2.4 k
postfix x86_64 2:2.6.6-2.1.el6_0 @anaconda-ScientificLinux-201107271550.x86_64 9.7 M
postfix x86_64 2:2.6.6-2.2.el6_1 installed 9.7 M
sysstat x86_64 9.0.4-18.el6 @anaconda-ScientificLinux-201107271550.x86_64 805 k

Transaction Summary
========================================================================================================================
Remove 7 Package(s)

Installed size: 24 M
Is this ok [y/N]:

いやいや、そりゃないでしょ
cronとかMTAとか消しちゃうなんて・・・
sysstatが無いのも困る。

で、いろいろ調べてみるんだけどあまりグッとくる解決策がない。

  • mysqlは5.1であきらめる
  • remi ェ・・・

(なんとなくremi使うのって負けな気がする)

id:sh2 さんの
http://d.hatena.ne.jp/sh2/20110720
はとても参考になったけど、今回は外部リポジトリに頼らず、
CentOSにもubuntuにも行かずにMySQL5.5にこだわって頑張る。
CentOSではこんな苦労せずに、すんなり入りますよね?)

で、もうちょっと掘ってみる。

# yum deplist postfix | grep mysql
dependency: libmysqlclient.so.16()(64bit)
provider: mysql-libs.x86_64 5.1.52-1.el6_0.1
dependency: libmysqlclient.so.16(libmysqlclient_16)(64bit)
provider: mysql-libs.x86_64 5.1.52-1.el6_0.1
dependency: mysql-libs
provider: mysql-libs.i686 5.1.52-1.el6_0.1
provider: mysql-libs.x86_64 5.1.52-1.el6_0.1
dependency: libmysqlclient.so.16()(64bit)
provider: mysql-libs.x86_64 5.1.52-1.el6_0.1
dependency: libmysqlclient.so.16(libmysqlclient_16)(64bit)
provider: mysql-libs.x86_64 5.1.52-1.el6_0.1
dependency: mysql-libs
provider: mysql-libs.i686 5.1.52-1.el6_0.1

こんな感じでmysql-libsに直接依存してるのはpostfix(え
で、依存関係は

という感じで想像。

mysql-libsの中身はというと、

# rpm -ql mysql-libs
/etc/ld.so.conf.d/mysql-x86_64.conf
/etc/my.cnf
/usr/lib64/mysql
/usr/lib64/mysql/libmysqlclient.so.16
/usr/lib64/mysql/libmysqlclient.so.16.0.0
/usr/lib64/mysql/libmysqlclient_r.so.16
/usr/lib64/mysql/libmysqlclient_r.so.16.0.0
以下、コピーライトと各種言語(i18n)関係

なので、my.cnfはともかく

libmysqlclient.so.16

があれば良し、と踏む。

なので、

  1. mysql-libsを削除
  2. 依存してるライブラリもとりあえずサヨナラ
  3. libmysqllient.soはMySQL-sharedのrpmで入るのでおk
  4. libmysqllientのバージョン違いはシンボリックリンクで試してみる
  5. その後、サヨナラしたライブラリを再インストール

という方針。

# yum remove mysql-libs
mysql-libs,cronie,cronie-anacron,crontabs,postfix,sysstatを削除)
(/etc/postfix/main.cf は退避されるのであとで復帰する)
# rpm -ivh MySQL-server-5.5.19-1.linux2.6.x86_64.rpm
# rpm -ivh MySQL-devel-5.5.19-1.linux2.6.x86_64.rpm
# rpm -ivh MySQL-client-5.5.19-1.linux2.6.x86_64.rpm
# rpm -ivh MySQL-shared-5.5.19-1.linux2.6.x86_64.rpm
# rpm -ivh MySQL-test-5.5.19-1.linux2.6.x86_64.rpm

で、

# yum install cronie
(cronie,cronie-anacron,crontabsがインストールされる)
# yum install sysstat

ここまでやって、

# yum install postfix

はやっぱりmysql-libs欲しいと言われるので、
ちょっと気持ち悪くて嫌だけど強引に

# yumdownloader postfix
# rpm -ivh --nodeps postfix-2.6.6-2.2.el6_1.x86_64.rpm

libmysqlclientは

# ls -la /usr/lib64/libmysqlclient*
lrwxrwxrwx. 1 root root 20 12月 20 19:32 2011 /usr/lib64/libmysqlclient.so -> libmysqlclient.so.18
lrwxrwxrwx. 1 root root 24 12月 20 19:32 2011 /usr/lib64/libmysqlclient.so.18 -> libmysqlclient.so.18.0.0
rwxr-xr-x. 1 root root 6856547 11月 24 00:14 2011 /usr/lib64/libmysqlclient.so.18.0.0
lrwxrwxrwx. 1 root root 17 12月 20 19:32 2011 /usr/lib64/libmysqlclient_r.so -> libmysqlclient.so
lrwxrwxrwx. 1 root root 17 12月 20 19:32 2011 /usr/lib64/libmysqlclient_r.so.18 -> libmysqlclient.so
lrwxrwxrwx. 1 root root 17 12月 20 19:32 2011 /usr/lib64/libmysqlclient_r.so.18.0.0 -> libmysqlclient.so

な感じで、

  • libmysqlclient.so.18 は入っている
  • 欲しいのはlibmysqlclient.so.16

とりあえずシンボリックリンクで。

# ln -s /usr/lib64/libmysqlclient.so /usr/lib64/libmysqlclient.so.16

とするとpostfixも動く。

MySQLダウンロードサイトにある
Connector/C 6.0.2
でもlibmysqlclientは入手できるんで展開して見てみたんだけど
libmysqlclientのバージョンが解らないんだよね・・・
(ひょっとしたらこれも16ではないかと思うんだけど)

# ls -la mysql-connector-c-6.0.2-linux-glibc2.3-x86-64bit/lib/
合計 12756
drwxr-xr-x. 2 root root 4096 12月 20 19:28 2011 .
drwxr-xr-x. 5 root root 4096 12月 20 19:28 2011 ..
lrwxrwxrwx. 1 7158 wheel 14 12月 20 19:28 2011 libmysql.so -> libmysql.so.16
lrwxrwxrwx. 1 7158 wheel 18 12月 20 19:28 2011 libmysql.so.16 -> libmysql.so.16.0.0
-rwxr-xr-x. 1 7158 wheel 4851331 8月 8 01:48 2009 libmysql.so.16.0.0
-rw-r--r--. 1 7158 wheel 8199192 8月 8 01:49 2009 libmysqlclient.a
lrwxrwxrwx. 1 7158 wheel 11 12月 20 19:28 2011 libmysqlclient.so -> libmysql.so
lrwxrwxrwx. 1 7158 wheel 11 12月 20 19:28 2011 libmysqlclient_r.so -> libmysql.so


また他にmysql-libsに依存したライブラリが出てきたらどうしようかなぁ・・・


追記。
やっぱり気持ち悪いので
http://pkgs.org/download/libmysqlclient.so.16(libmysqlclient_16)(64bit)
この辺りからmysqlclientのrpmを落として入れました。


追記その2。(2012/04/24)
MySQLrpmが更新されて、5.5.23からはこんなことしなくて良くなったようです。
@nakashii_ さんがブログに書かれています。
http://oopsops.hatenablog.com/entry/2012/04/24/214759