GCCで必要な言語のコンパイラだけインストールする
pkgsrcからGCCをインストールする場合、mk.confに
# disable Java
BUILD_JAVA=no
# disable Objective-C
BUILD_OBJC=no
のように書いておくと、必要ない言語のコンパイラをインストールしないように指定できる。
備忘録とチラシの裏を兼ねる
pkgsrcからGCCをインストールする場合、mk.confに
# disable Java
BUILD_JAVA=no
# disable Objective-C
BUILD_OBJC=no
のように書いておくと、必要ない言語のコンパイラをインストールしないように指定できる。
正確に言うとAutoconf 2.61の問題なんだけど、GCCを使っていても、CCの値が(/opt/pkgsrc/bin/gccのように)パスを含む場合、configureスクリプトが使っているコンパイラを誤判定する。これにより、リンカに間違ったオプションが渡され、libgauche.soのリンクに失敗してしまう。
このくらい良きに計らってくれよ、と目眩がする思いだが、現時点の最新版のAutoconf 2.62では直っているのだろうか。
もう一度詳しく調べたところ、Gauche 0.8.13のconfigure.acに問題があった。Autoconf関係者の方々、ごめんなさい。
SXCEにはb90の現時点で、Solaris Secure Shellが含まれている。これは、SunがOpenSSHをベースに開発したSSHの実装のひとつ。SSHサーバのsshdがインストール直後から起動しているため、きちんと設定をすれば、すぐにSSHプロトコルで通信できるようになる。
今回設定するサーバにはLANの中の特定のPCからしか接続しないので、ホストに基づく認証を使って接続する。作業手順は以下の通り。
Solaris Secure Shellの設定ファイルは、/etc/sshディレクトリにまとまって入っている。まずは、その中の/etc/ssh/sshd_configを編集。最初に、
HostbasedAuthentication yes
という行を追加。ホストに基づく認証を行うという意味。標準ではホストに基づく認証は使えないようになっている。次に、
IgnoreRhosts yes
という部分を、
IgnoreRhosts no
と変更。ホストに基づく認証で~/.shostsを使うようになる。ホストに基づく認証をするだけなら不要だが、ユーザの名前が接続元と接続先で違う場合には必要。今回はまさにそのケース。
/etc/ssh/shosts.equivの設定。rshが使う/etc/hosts.equivと書式は同じ。一行ごとに、接続を許すホスト名を書く。
client-host
/etc/ssh/shosts.equivに接続を許すホストを列挙したら、今度は/etc/ssh/ssh_known_hostsに、接続を許すそれぞれのホストの公開鍵を追加する。ssh_host_dsa_key.pubが公開鍵だとすると、
# (echo -n "client-host "; cat ssh_host_dsa_key.pub) >> /etc/ssh/ssh_known_hosts
のように、ファイルの終わりに公開鍵を書き込む。
~/.shostsの設定。接続を許すユーザのホームディレクトリに.shostsというファイルを作り、
client-host client-user
のように、ホスト名に続けてユーザ名を書く。
設定がすべて終わったので、最後にsshdの再起動。
# svcadm restart ssh
Solaris Secure ShellもSMFで管理されているサービスなので、こういう操作は簡単。
例として、EmacsのnXML modeのスキーマにAtom Syndication Formatを追加する。
nXML modeでは、要素の補完や検証にRELAX NGのスキーマを使うため、まず、RELAX NGで書かれたAtom Syndication Formatのスキーマを手に入れる必要がある。幸い、Atom Syndication Formatを定義しているRFC 4287のAppendix Bに、RELAX NG Compact Syntaxで書かれたスキーマがあるので、これを使う。
次に、どういった場合に、どのスキーマを使うかを定義している、schemas.xmlを編集する。これは、nXML modeがインストールされているディレクトリの中の、schemaというディレクトリにある。locatingRules要素の下に、
<namespace ns="http://www.w3.org/2005/Atom" typeId="Atom"/>
<documentElement localName="feed" typeId="Atom"/>
<documentElement localName="entry" typeId="Atom"/>
<typeId id="Atom" uri="atom.rnc"/>
を追加する。こうすると、名前空間とルート要素に基づいて、自動的にスキーマが決定されるようになる。
以上。詳しくはnXML modeのinfoを参照すること。
SRFI-26で定義されているcutを使うと、記述量を減らせて楽。簡単な例を挙げると、
(cond ((#/post-(.+)$/ "tag:blogger.com,1999:blog-blogID.post-postID") =>
(lambda (m) (m 1))))
というのが、
(cond ((#/post-(.+)$/ "tag:blogger.com,1999:blog-blogID.post-postID") =>
(cut <> 1)))
と書けたりする。些細な違いかもしれないけど、lambdaなんていくらでも使うものだし、塵が積もって山になる……かもしれない。