Ubuntuでいつもやるパッケージの更新をしようとしたらエラーがでて更新できなくなった。症状は以下のリンクのとおり
- package libapt-pkg4.12 0.8.16~exp12ubuntu10.14 failed to install/upgrade: './usr/share/locale/ne/LC_MESSAGES/libapt-pkg4.12.mo' is different from the same file on the system
- apt-get broken, cannot fix or remove libapt-pkg4.12
環境は、Ubuntu 12.04 LTS (precise) 64bit版
状況確認
ダウンロードされているパッケージの確認
% cd /var/cache/apt/archives/ % ls libapt-pkg4.12_0.* libapt-pkg4.12_0.8.16~exp12ubuntu10.12_amd64.deb libapt-pkg4.12_0.8.16~exp12ubuntu10.12_i386.deb libapt-pkg4.12_0.8.16~exp12ubuntu10.14_amd64.deb libapt-pkg4.12_0.8.16~exp12ubuntu10.14_i386.deb
インストール状況
% dpkg -l | grep libapt-pkg4.12
私の場合は、libapt-pkg4.12 と libapt-pkg4.12:i386 がインストールされており、libapt-pkg4.12としてlibapt-pkg4.12_0.8.16~exp12ubuntu10.14_amd64.deb、libapt-pkg4.12:i386としてlibapt-pkg4.12_0.8.16~exp12ubuntu10.12_i386.debがインストールされていた。そして、libapt-pkg4.12_0.8.16~exp12ubuntu10.12_i386.deb を libapt-pkg4.12_0.8.16~exp12ubuntu10.14_i386.deb にアップグレードしようとするとエラーがでしまう状態だった。
解決法
最新の libapt-pkg4.12 パッケージをダウンロードしてきて、手動でインストールする。
http://security.ubuntu.com/ubuntu/pool/main/a/apt/から、apt_XXXXXX~ubuntu3_amd64.deb と libapt-pkg4.12_XXXXX~ubuntu3_amd64.deb をダウンロード。二つのパッケージの「XXXXX」のバージョンを揃えること。今回は 0.9.9.1 を使用した。
% cd /tmp % wget http://security.ubuntu.com/ubuntu/pool/main/a/apt/apt_0.9.9.1~ubuntu3_amd64.deb % wget http://security.ubuntu.com/ubuntu/pool/main/a/apt/libapt-pkg4.12_0.9.9.1~ubuntu3_amd64.deb
既存のものを強制削除
% sudo dpkg --force-depends -r libapt-pkg4.12 % sudo dpkg --force-depends -r libapt-pkg4.12:i386
ダウンロードしたものをインストール。二つのパッケージを同時に指定しないとエラーがでて怒られる。
% sudo dpkg -i libapt-pkg4.12_0.9.9.1~ubuntu3_amd64.deb apt_0.9.9.1~ubuntu3_amd64.deb
他のアップグレード。私の場合は、依存関係の解消法としてlibapt-pkg4.12:i386の削除が求められた。
% sudo aptitude upgrade % sudo aptitude upgrade --full-resolver (aptitude upgradeでうまくいかない場合)
以上の方法でうまくアップグレードできた。