2008-08-16

GNU Binutils 2.18のインストール

SXCE b95へGNU Binutils 2.18をインストールした。特に躓くこともなく、configureスクリプトを実行してから、makeをすることで、素直にビルドできた。以下は操作手順。

% ./configure --prefix=/opt/binutils-2.18 --program-prefix=g
% gmake
# gmake install
# cd /opt/bin
# for i in ../binutils-2.18/bin/*
>do
>ln -s $i
>done

configureに--program-prefix=gを渡しているのは、Sunのasやldなどと区別するため。SXCEに付属のGNU Binutilsもそういう設定になっているので、合わせたというのもある。それと、makeにはGNU makeを使った。Sunのmakeでは、configureが作ったMakefileを上手く処理できないようだ。

2008-06-20

2008-06-15

SolarisでのGaucheのコンパイルで注意すべきこと

正確に言うとAutoconf 2.61の問題なんだけど、GCCを使っていても、CCの値が(/opt/pkgsrc/bin/gccのように)パスを含む場合、configureスクリプトが使っているコンパイラを誤判定する。これにより、リンカに間違ったオプションが渡され、libgauche.soのリンクに失敗してしまう。

このくらい良きに計らってくれよ、と目眩がする思いだが、現時点の最新版のAutoconf 2.62では直っているのだろうか。

もう一度詳しく調べたところ、Gauche 0.8.13のconfigure.acに問題があった。Autoconf関係者の方々、ごめんなさい。

2008-06-08

Solaris Secure Shellの設定

SXCEにはb90の現時点で、Solaris Secure Shellが含まれている。これは、SunOpenSSHをベースに開発したSSHの実装のひとつ。SSHサーバのsshdがインストール直後から起動しているため、きちんと設定をすれば、すぐにSSHプロトコルで通信できるようになる。

今回設定するサーバにはLANの中の特定のPCからしか接続しないので、ホストに基づく認証を使って接続する。作業手順は以下の通り。

  • /etc/ssh/sshd_configの編集
  • /etc/ssh/shosts.equivの編集
  • /etc/ssh/ssh_known_hostsへ接続を許すホストの公開鍵を追加
  • ~/.shostsの編集
  • sshdの再起動

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で管理されているサービスなので、こういう操作は簡単。

2008-04-18

nXML modeで使うスキーマを追加する

例として、EmacsnXML 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を参照すること。