pkgsrc/openssh

OpenSSL 0.9.7g 以前に脆弱性が見つかったということで、NetBSD 上の OpenSSL をアップデートしました。しかしこれにより、何故か OpenSSH が正しく動かなくなってしまいました。そのため OpenSSH もビルドし直したのですが、どうやっても /usr/lib 下の共有ライブラリをリンクしてしまいます。Makefile の CONFIGURE_ARGS で --with-ssl-dir を変更してもダメです。しょうがないので、

  1. make して configure が走り出したところで強制的に止める。
  2. configure 中の /usr/local というところを /usr/pkg に書き換える。
  3. トップディレクトリで make してもやっぱりダメなので、work/openssh-* の下に移って ./configure ... し直す。(config.log の中の configure 引数をチェックして、これを手動で実行する。)
  4. トップで make しても、まだダメ*1なので、これも work.openssh-* 下で make*2 して、configure の先頭に exit 0 を加えてから、トップディレクトリで make install しました。

ひー。なんで、こうハマるんだろう。

*1:configure の先頭に exit 0 を入れてもダメ。

*2:なぜか、こうすると OK。

external method について

external method では、明示的に指定した以外にもう一つ引数が渡されるようです。これは、Zope Book では self と記されていて、実行コンテキストを指しているようです。試しに、次のような external method を書いてみました*1

def foo(self, name="xxx"):
    return dir(self)

これを実行したら、実行コンテキストに含まれるメンバがたくさん表示されました。
ちなみに、このコンテキストのフォルダに foo_img という画像オブジェクトがあるとき、

def foo(self, name="xxx"):
    return self.foo_img

のようにすると、

<img ...>

という HTML タグが返ってきます。面白いです。return getattr(self, "foo_img") でも良いのかな?

ちなみに

external merhod の定義された外部ファイルを修正したら、External Method オブジェクトを更新しなくてはいけないのかなあ。これは、メモです。

*1:最初、return self でなくて print self としてしまい、ハマりました。