limitusus’s diary

主に技術のことを書きます

ghcまわりのパッケージが壊れたらしい

どうもaptでいろいろやってるうちにパッケージを壊してしまったらしい。

% sudo apt-get update
% sudo apt-get upgrade

などすると最後にこんなメッセージを吐いて終了してしまう

libghc6-http-dev (30010004-2) を設定しています ...
ghc-pkg: cannot find package HTTP-3001.1.3
dpkg: libghc6-http-dev の処理中にエラーが発生しました (--configure):
 サブプロセス post-installation script はエラー終了ステータス 1 を返しました
以下のパッケージの処理中にエラーが発生しました:
 libghc6-http-dev
E: Sub-process /usr/bin/dpkg returned an error code (1)
% sudo apt-get -f install

としても効果なし。ぐぐってみるとDebianのバグトラックページを見つけた(#510499 - ghc-pkg --global will still look in user config - Debian Bug report logs)

これに従い

% sudo -H apt-get -f install

としたら問題が解消した

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
1 個のパッケージが完全にインストールまたは削除されていません。
この操作後に追加で 0B のディスク容量が消費されます。
libghc6-http-dev (30010004-2) を設定しています ...
Reading package info from "/usr/lib/haskell-packages/ghc6/lib/HTTP-3001.0.4/installed-pkg-config" ... done.
building GHCi library /usr/lib/haskell-packages/ghc6/lib/HTTP-3001.0.4/ghc-6.8.2/HSHTTP-3001.0.4.o... done.
Saving old package config file... done.
Writing new package config file... done.

sudo -Hオプションはsudo中にHOME環境変数を/rootに設定してくれるものらしい。ghc-pkgがHOMEに依存してたということみたいですね。