May 7th, 2013

dotdebのmysql-clientでwheezyへアップグレードでのトラブル

5月4日にリリースされたWheezyですが、アップグレード絡みでトラブルにあったのでその話を。

まず最初にこの話は dotdebのmysql-clientを入れている場合に発生するようです。他での場合に参考になるかもしれませんが、それ以外の責はご容赦ください。

ちなみに vagrant box 作成のエントリも修正したので、vagrant絡みはそちらを参照ください。

エラーの内容

source.listsqueezeからwheezyへ書き換えapt-get updateを行ったあと、apt-get upgradeを実行すると以下のログが表示されて強制終了する。

Preparing to replace mysql-client-5.5 5.5.30-1~dotdeb.0 (using .../mysql-client-5.5_5.5.30+dfsg-1.1_amd64.deb) ...
Unpacking replacement mysql-client-5.5 ...
dpkg: error processing /var/cache/apt/archives/mysql-client-5.5_5.5.30+dfsg-1.1_amd64.deb (--unpack):
 trying to overwrite '/usr/share/man/man1/mysqlcheck.1.gz', which is also in package mysql-client-core-5.5 5.5.30-1~dotdeb.0
 configured to not write apport reports
                                       dpkg-deb: subprocess paste killed by signal (Broken pipe)

~snip~

Errors were encountered while processing:
 /var/cache/apt/archives/mysql-client-5.5_5.5.30+dfsg-1.1_amd64.deb
 E: Sub-process /usr/bin/dpkg returned an error code (1)

詳細なログはここに。

解決方法

上記の状態になってしまった場合には以下のコマンドで強制上書きでインストールを終了する。 この情報はdotdebの中の人に教えてもらった

apt-get -f install -o Dpkg::Options::=”–force-overwrite”

そして競合となったパッケージ mysql-client-core-5.5 を削除する。これを削除すると何故か自動でwheezymysql-client-5.5が上書きでインストールされる。

apt-get remove mysql-client-core-5.5

その後は apt-get dist-upgrade でアップグレードを続行すればOKだが、念のために apt-get upgradeを再度実行したほうがいいかもしれない。