2016-01-03-01-Linux+Emacs+SLIME+ASDFでハマった話 - project-enigma

2016-01-03-01-Linux+Emacs+SLIME+ASDFでハマった話

>> Site top >> weblog >> 月別アーカイブ >> 2016年01月のlog >> 2016-01-03-01-Linux+Emacs+SLIME+ASDFでハマった話

最終更新日付:2016/01/03 15:33:04


Linux+Emacs+SLIME+ASDFでハマった話

2016 年 01 月 03 日

まぁ毎年 Linux ディストリビューションをアレコレと試すんだ新春は。恒例行事だな。でも、大体途中でやめてしまう。それは、Windows + Emacs + Cygwin でコト足りてしまうからで、昼間のお仕事の関係上 Windows を手を切れない自分としてはそれが丁度いい立ち位置だったりもする。

ところが今回、gNewSense 3.1というのを試してみて、なんだかとてもいい感じなのだ。適度に枯れた感じのデスクトップといい、必要なモノがほぼ全部リポジトリにあるところといい、気に入った。調子に乗って Emacs + sbcl + SLIME + ASDF までインストールし、自前の CL ライブラリを使おうとした時点でハマった。今回はそんな話。

もともと、自分は Windows 環境の ASDF では asdf:*central-registry* を使用していた。が、これは obsolete だとのことで、今回はまぁなんというか、そうでないやり方をやりましょうと。そんなワケで、こちらを参考にさせて頂いた。

これにならい、~/.config/common-lisp 配下に以下のファイルを置いた。

/home/smatz/.config/common-lisp:
合計 12
drwxr-xr-x 2 smatz smatz 4096 2016-01-03 12:18 .
drwxr-xr-x 5 smatz smatz 4096 2016-01-03 12:17 ..
-rw-r--r-- 1 smatz smatz   93 2016-01-03 12:18 source-registry.conf

中身はこう。

(:source-registry
 (:directory ("/home/smatz/common-lisp/systems/"))
 :inherit-configuration)

 

で、以下の場所に github から clone してきたライブラリがあり、

/home/smatz/common-lisp/source:
合計 20
drwxr-xr-x 5 smatz smatz 4096 2016-01-02 18:48 .
drwxr-xr-x 4 smatz smatz 4096 2016-01-02 18:49 ..
drwxr-xr-x 4 smatz smatz 4096 2016-01-02 18:07 CL-OPERATOR
drwxr-xr-x 4 smatz smatz 4096 2016-01-02 18:06 CL-OVERLOAD
drwxr-xr-x 4 smatz smatz 4096 2016-01-02 18:07 CL-STL

source-registry.conf で登録したディレクトリには以下のようにシンボリックリンクがある。

/home/smatz/common-lisp/systems:
合計 8
drwxr-xr-x 2 smatz smatz 4096 2016-01-02 19:28 .
drwxr-xr-x 4 smatz smatz 4096 2016-01-02 18:49 ..
lrwxrwxrwx 1 smatz smatz   41 2016-01-02 19:28 CL-OPERATOR.asd -> ../source/CL-OPERATOR/src/CL-OPERATOR.asd
lrwxrwxrwx 1 smatz smatz   41 2016-01-02 19:25 CL-OVERLOAD.asd -> ../source/CL-OVERLOAD/src/CL-OVERLOAD.asd
lrwxrwxrwx 1 smatz smatz   31 2016-01-02 19:28 CL-STL.asd -> ../source/CL-STL/src/CL-STL.asd

これで設定は完了している‥‥‥はずだったのだけれど、何故か require しても「そんなもんはねぇ!」と叱られてしまう。これには困った。正直何がダメなのかさっぱりわからなかったのだ。source-registry.conf に記載したパスはちゃんと ASDF のレジストリには登録されているし、パスこそ違えどほぼ同じ構成で /usr/share/common-lisp/source/ に配備されている cl-ppcre なんかはちゃんと require できる‥‥‥

途方に暮れつつしばらくディレクトリ間を彷徨った末、結局シンボリックリンクを小文字にすれば良いコトがわかった。どういうきっかけで気付いたのかはもうわからないのだが、結局これが解決になった。以下のように、*.asd ファイルの名前自体はそのままで、シンボリックリンクだけを小文字にしている。

/home/smatz/common-lisp/systems:
合計 8
drwxr-xr-x 2 smatz smatz 4096 2016-01-02 19:28 .
drwxr-xr-x 4 smatz smatz 4096 2016-01-02 18:49 ..
lrwxrwxrwx 1 smatz smatz   41 2016-01-02 19:28 cl-operator.asd -> ../source/CL-OPERATOR/src/CL-OPERATOR.asd
lrwxrwxrwx 1 smatz smatz   41 2016-01-02 19:25 cl-overload.asd -> ../source/CL-OVERLOAD/src/CL-OVERLOAD.asd
lrwxrwxrwx 1 smatz smatz   31 2016-01-02 19:28 cl-stl.asd -> ../source/CL-STL/src/CL-STL.asd

ひょっとしたら、使い慣れている方には当たり前の話なのかもしれない。自分がこれまで気付かなかったのは、まずファイル名の大文字小文字を区別しない Windows 環境が問題を隠してしまっていたことがあるだろう。あと、require にはキーワードシンボルを普段与えているので、「シンボル → 内部で大文字 → ファイル名も大文字で?」という勝手な類推をしていたというのもあるだろう。これを機に、github に上げているライブラリの asd ファイルも小文字にしようかな。

 

コメント

このページにコメントする

 

このページのタグ

Page tag : PC

Page tag : Common Lisp

 

 


Copyright(C) 2005-2017 project-enigma.
Generated by CL-PREFAB.