Ubuntu12.04.1をアップグレードしたらmroongaが動かなくなった件
環境
Ubuntu12.04.1 => 12.04.2
Unbuntu12.04を何も考えずにアップグレードしたら、mroongaが動かなくなったので、その時の対応メモです。
mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 9 rows in set (0.00 sec)
今までは↓でinstall pluginしてあげたら復活したのですが、今回はダメでした。。 UbuntuのアップグレードでMySQLのバージョンも5.5.31に上がりましたが、 どうやらmroongaはMySQLのバージョンへの依存が厳しいようです。
mysql> install plugin mroonga soname 'ha_mroonga.so'; ERROR 1126 (HY000): Can't open shared library '/usr/lib/mysql/plugin/ha_mroonga.so' (errno: 2 /usr/lib/mysql/plugin/ha_mroonga.so: cannot open shared object file: No such file or directory)
pluginの情報を確認したら残っていたので、削除。
mysql> select * from mysql.plugin; +---------+---------------+ | name | dl | +---------+---------------+ | mroonga | ha_mroonga.so | +---------+---------------+ 1 row in set (0.00 sec) mysql> delete from mysql.plugin where name = 'mroonga'; Query OK, 1 row affected (0.02 sec) mysql> select * from mysql.plugin; Empty set (0.00 sec)
再びinstall pluginするもダメでした。。
mysql> install plugin mroonga soname 'ha_mroonga.so'; ERROR 1126 (HY000): Can't open shared library '/usr/lib/mysql/plugin/ha_mroonga.so' (errno: 2 /usr/lib/mysql/plugin/ha_mroonga.so: cannot open shared object file: No such file or directory)
もう一度mroonga自体をインストールから始めようとしましたが、次のようなエラーで失敗。
$ sudo apt-get -y install mysql-server-mroonga パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 インストールすることができないパッケージがありました。おそらく、あり得 ない状況を要求したか、(不安定版ディストリビューションを使用しているの であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移 動されていないことが考えられます。 以下の情報がこの問題を解決するために役立つかもしれません: 以下のパッケージには満たせない依存関係があります: mysql-server-mroonga : 依存: mysql-server (= 5.5.31-0ubuntu0.12.04.1) しかし、5.5.31-0ubuntu0.12.04.2 はインストールされようとしています E: 問題を解決することができません。壊れた変更禁止パッケージがあります。
そこでこちらのサイトを参考に、mroongaのソースを取得して修正し、パッケージを作ることに。
解決編
前提
etc/apt/sources.list.d/groonga.list は次が追記されていること。
deb http://packages.groonga.org/ubuntu/ precise universe deb-src http://packages.groonga.org/ubuntu/ precise universe
コンパイルに必要なパッケージのインストール
$ sudo apt-get build-dep mroonga [sudo] password for xxxxx: パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが新たにインストールされます: libgroonga-dev アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。 30.7 kB のアーカイブを取得する必要があります。 この操作後に追加で 185 kB のディスク容量が消費されます。 続行しますか [Y/n]? y 取得:1 http://packages.groonga.org/ubuntu/ precise/universe libgroonga-dev i386 3.0.4-1 [30.7 kB] 30.7 kB を 0秒 で取得しました (90.0 kB/s) 以前に未選択のパッケージ libgroonga-dev を選択しています。 (データベースを読み込んでいます ... 現在 380606 個のファイルとディレクトリがインストールされています。) (.../libgroonga-dev_3.0.4-1_i386.deb から) libgroonga-dev を展開しています... libgroonga-dev (3.0.4-1) を設定しています ...
mroongaのソース取得
$ mkdir ~/mroonga $ cd mroonga/ $ sudo apt-get source mroonga パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 1,929 kB のソースアーカイブを取得する必要があります。 取得:1 http://packages.groonga.org/ubuntu/ precise/universe mroonga 3.04-1 (dsc) [1,192 B] 取得:2 http://packages.groonga.org/ubuntu/ precise/universe mroonga 3.04-1 (tar) [1,925 kB] 取得:3 http://packages.groonga.org/ubuntu/ precise/universe mroonga 3.04-1 (diff) [3,513 B] 1,929 kB を 0秒 で取得しました (3,838 kB/s) gpgv: Tue 28 May 2013 06:06:46 PM JSTにDSA鍵ID 45499429で施された署名 gpgv: 署名を検査できません: 公開鍵が見つかりません dpkg-source: warning: failed to verify signature on ./mroonga_3.04-1.dsc dpkg-source: info: extracting mroonga in mroonga-3.04 dpkg-source: info: unpacking mroonga_3.04.orig.tar.gz dpkg-source: info: applying mroonga_3.04-1.diff.gz
cotrolファイルの場所へ移動。
$ cd mroonga-3.04/debian
controlファイルを開き、以下の箇所を
mysql-server (= 5.5.31-0ubuntu0.12.04.1),
↓のようにします。
$ sudo vim control ======================================================= Depends: ${misc:Depends}, ${shlibs:Depends}, libgroonga0 (>= 3.0.4), mysql-server (= 5.5.31-0ubuntu0.12.04.2), groonga-normalizer-mysql =======================================================
MySQLのソース取得
$ cd ~/mroonga $ sudo apt-get source mysql-server パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 'mysql-server' の代わりに 'mysql-5.5' をソースパッケージとして選出しています 注意: 'mysql-5.5' パッケージは以下の場所の 'Svn' バージョン制御システムで保守されています: svn://svn.debian.org/svn/pkg-mysql/mysql-5.5/ 21.9 MB のソースアーカイブを取得する必要があります。 取得:1 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main mysql-5.5 5.5.31-0ubuntu0.12.04.2 (dsc) [3,171 B] 取得:2 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main mysql-5.5 5.5.31-0ubuntu0.12.04.2 (tar) [21.6 MB] 取得:3 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main mysql-5.5 5.5.31-0ubuntu0.12.04.2 (diff) [301 kB] 21.9 MB を 1分 16秒 で取得しました (288 kB/s) gpgv: Wed 22 May 2013 06:54:35 PM JSTにRSA鍵ID A0E7D8C3で施された署名 gpgv: 署名を検査できません: 公開鍵が見つかりません dpkg-source: warning: failed to verify signature on ./mysql-5.5_5.5.31-0ubuntu0.12.04.2.dsc dpkg-source: info: extracting mysql-5.5 in mysql-5.5-5.5.31 dpkg-source: info: unpacking mysql-5.5_5.5.31.orig.tar.gz dpkg-source: info: unpacking mysql-5.5_5.5.31-0ubuntu0.12.04.2.debian.tar.gz dpkg-source: info: applying 38_scripts__mysqld_safe.sh__signals.patch dpkg-source: info: applying 62_disable_tests.patch dpkg-source: info: applying 70_mysql_va_list.patch dpkg-source: info: applying 71_disable_rpl_tests.patch dpkg-source: info: applying 72_fix_standalone_tests.patch
「公開鍵が見つかりません」と出ましたが、とりあえずそのまま進みます。
コンパイル。
$ debuild -us -uc プログラム 'debuild' はまだインストールされていません。 次のように入力することでインストールできます: sudo apt-get install devscripts
失敗。。debuildをインストール。
$ sudo apt-get install devscripts
完了したら、再度コンパイル。
$ sudo debuild -us -uc
groonga-normalizer-mysqlのインストール
コンパイルに成功すると、1つ上の階層に deb ができているのでインストールします。 しかし、groonga-normalizer-mysqlをインストールしていない状態でコンパイルしたら、次のようなエラーが起きました。
$ cd .. $ sudo dpkg -i mysql-server-mroonga_3.04-1_i386.deb 以前に未選択のパッケージ mysql-server-mroonga を選択しています。 (データベースを読み込んでいます ... 現在 382202 個のファイルとディレクトリがインストールされています。) (mysql-server-mroonga_3.04-1_i386.deb から) mysql-server-mroonga を展開しています... dpkg: 依存関係の問題により mysql-server-mroonga の設定ができません: mysql-server-mroonga は以下に依存 (depends) します: groonga-normalizer-mysql ...しかし: パッケージ groonga-normalizer-mysql はまだインストールされていません。 dpkg: mysql-server-mroonga の処理中にエラーが発生しました (--install): 依存関係の問題 - 設定を見送ります 以下のパッケージの処理中にエラーが発生しました: mysql-server-mroonga
そこでこちらのサイトを参考に、 groonga-normalizer-mysqlをインストール。
$ sudo apt-get -y install groonga-normalizer-mysql パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが新たにインストールされます: groonga-normalizer-mysql アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 1 個。 1 個のパッケージが完全にインストールまたは削除されていません。 97.8 kB のアーカイブを取得する必要があります。 この操作後に追加で 321 kB のディスク容量が消費されます。 取得:1 http://packages.groonga.org/ubuntu/ precise/universe groonga-normalizer-mysql i386 1.0.4-1 [97.8 kB] 97.8 kB を 0秒 で取得しました (409 kB/s) 以前に未選択のパッケージ groonga-normalizer-mysql を選択しています。 (データベースを読み込んでいます ... 現在 382208 個のファイルとディレクトリがインストールされています。) (.../groonga-normalizer-mysql_1.0.4-1_i386.deb から) groonga-normalizer-mysql を展開しています... groonga-normalizer-mysql (1.0.4-1) を設定しています ... mysql-server-mroonga (3.04-1) を設定しています ... libc-bin のトリガを処理しています ... ldconfig deferred processing now taking place
deb をインストール。
$ sudo dpkg -i mysql-server-mroonga_3.04-1_i386.deb
確認
$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 56 Server version: 5.5.31-0ubuntu0.12.04.2-log (Ubuntu) Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show plugins; +--------------------------+----------+--------------------+---------------+---------+ | Name | Status | Type | Library | License | +--------------------------+----------+--------------------+---------------+---------+ | binlog | ACTIVE | STORAGE ENGINE | NULL | GPL | | mysql_native_password | ACTIVE | AUTHENTICATION | NULL | GPL | | mysql_old_password | ACTIVE | AUTHENTICATION | NULL | GPL | | MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL | | MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | CSV | ACTIVE | STORAGE ENGINE | NULL | GPL | | FEDERATED | DISABLED | STORAGE ENGINE | NULL | GPL | | PERFORMANCE_SCHEMA | ACTIVE | STORAGE ENGINE | NULL | GPL | | BLACKHOLE | ACTIVE | STORAGE ENGINE | NULL | GPL | | ARCHIVE | ACTIVE | STORAGE ENGINE | NULL | GPL | | InnoDB | ACTIVE | STORAGE ENGINE | NULL | GPL | | INNODB_TRX | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_LOCKS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_LOCK_WAITS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMP | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMP_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMPMEM | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMPMEM_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_BUFFER_PAGE | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_BUFFER_PAGE_LRU | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_BUFFER_POOL_STATS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | partition | ACTIVE | STORAGE ENGINE | NULL | GPL | | mroonga | ACTIVE | STORAGE ENGINE | ha_mroonga.so | GPL | <= ★いました! +--------------------------+----------+--------------------+---------------+---------+ 24 rows in set (0.01 sec)
以上です。 Ubuntuはすぐに最新の更新を取得してくるからって、むやみにアップグレードしてはいけませんね。。