研究ブログ

2014年1月の記事一覧

finkからMacPortsへ

使っているMacのOSをSnow Leopard (v10.6)から、Mountain Lion (v10.7)へアップデートしたのにあわせて、パッケージ管理システムをfinkからMacPortsへ移行しました。移行の際に、いくつか試行錯誤をしたので、忘備録を兼ねてメモを残しておきます。

まず、主な要件としては
  1. メールはEmacs内からWanderlustで読み書きする
  2. 日本語入力はSKK
  3. 日本語を含めてtex関連が問題なく使える
  4. ファイル同期のUnisonが使える
というのがありました。

まずは、Emacsです。これまでCarbon Emacs (Emacs22)を使っていたのですが、この機会に、新しい24系にしました。インストール自体はMacPortsのおかげで簡単でしたが、関連のEmacs Lispのインストールに手間どりました。finkの時には、主要なEmacs Lispも含まれていたので、finkからインストールしていましたが、MacPortsには含まれないようです。調べたところEmacs24からはEmacs Lispのパッケージ管理がEmacsの中からできるようで、これを利用してだいたいのパッケージを入れてしまいました。 具体的にはpackage.elと、これに含まれなかったのはel-getを用いてインストールしました。

さて、次はWanderlustです。インストール自体は問題なかったものの、大量にメールを含むフォルダ(約5万通)のmsgdb (検索などを高速にするためのデータベースのようなもの)が正常に作成されないようでした。こんなに大量にあるのは、メールに関する自分のワークフローが、「受けとったものは必要に応じて削除するけど、送ったものは基本的に全て残す」としているからです。なので、このフォルダが検索できないと非常に困るわけです。エラーメッセージは以下のようなものです(数字は変わります)。
Buffer  *temp*-626220 modifiled; kill anyway? (yes or no)
yesでもnoでも、それ以上の処理が行われません。しょうがないので、msgdbを作りなおそうと思って、サマリバッファで"s" (wl-summary-sort) -> all-entirely をするのですが、全体を一度にはできませんでした。作りなおす数を減らしてみたところ、成功したので、どこで失敗するか、いろんな数で試していきました。すると、以下のように空の文字列が To や CC にあるといけないようです。
Cc: "" <abc@xyz.kyushu-u.ac.jp>
この空文字を削除して、無事解決です。

最後はUnisonです。これは2つのマシン間でファイルの同期を行うのですが、マシン間でのバージョンが同じでないといけません。それで、まずは従来から使っていた古いUnisonにあわせて、古いバージョンのインストールをMacPortsで行うことにしました。これは、欲しいパッケージのリビジョン番号を調べて、そのリビジョンのPortFileを手動でダウンロードすれば可能です。Unixonの場合、例えば、以下から調べます。
その後、以下のようにしてファイルを取得します。
% svn co -r 33293 http://svn.macports.org/repository/macports/trunk/dports/net/unison

これで同じバージョンが揃ったものの、実行すると以下のようなエラーがでます。
Dumping archives to ~/unison.dump on both hosts
Finished dumping archives
Fatal error: Internal error: New archives are not identical.
Retaining original archives.  Please run Unison again to bring them up to date.
これを調べていったら、OCaml (unisonはOCamlで書かれている)のメジャーバージョンも揃えておく必要があるということでした。なので、サーバ側も新しくMacPortsで環境をそろえて、無事にファイルの同期ができるようになりました。
0