首页 > 解决方案 > 如何使用 Portacle IDE 在 Common Lisp 中实现 Common Music?

问题描述

我目前正在尝试弄清楚如何安装 Common Music 库:http : //commonmusic.sourceforge.net/cm2/doc/cm.html,以在 Portacle 上运行,Portacle 是一个集成 Emacs 和其他实现以运行 Common LISP 的 IDE .

按照以下步骤,我能够成功地将 Common Music 的源代码树下载到我的 Portacle 安装目录,位于http://commonmusic.sourceforge.net/cm2/doc/install.html#cvs

  1. 将目录更改为您的 Lisp 安装目录。

$ cd /usr/local/lisp

  1. 将 shell 变量 CVSROOT 设置为指向 CVS 存储库:

$ export CVSROOT=":pserver:anonymous@commonmusic.cvs.sourceforge.net:/cvsroot/commonmusic"

  1. 使用 cvs login 连接到 Sourceforge CVS 服务器,在提示输入密码时按 Enter:

$ cvs 登录 CVS 密码:

  1. 使用 cvs checkout 将 CM 的源代码树恢复到您的 Lisp 安装目录:

$ cvs结帐-P cm

.

打开我的 Common Lisp REPL,portacle,我为 cm.lisp 的特定路径名输入了 (load "/usr/local/lisp/cm/src/cm.lisp") 的等效项。

我收到以下错误。

加载期间的读取错误:

在 SB-UNIX 包中找不到符号“UNIX-FILE-KIND”。

Line: 116, Column: 47, File-Position: 4278

Stream: #<SB-INT:FORM-TRACKING-STREAM for "file /usr/local/lisp/cm/cm.asd" {1004108F23}>

[SB-C::INPUT-ERROR-IN-LOAD 类型的条件]

.

如果有人熟悉 Common Lisp 并集成 Common Music,任何帮助将不胜感激。

谢谢。

标签: installationcompiler-errorscommon-lispsbcl

解决方案


问题是这个系统是为另一个世界而写的。 Unix-file-kind已从sb-unix10 多年前删除。

在这里,它用于确定路径名是否命名现有目录。我不确定cl-fad在该系统加载上下文中使用是如何工作的(现在这可以变得更简单,但这是一些工作),所以也许你可以内联任何东西cl-fad:directory-exists-p,或者这对你有用(虽然有点hacky) :

#+sbcl (let ((truename (probe-file dir)))
         (and truename
              (string= (namestring truename)
                       (directory-namestring truename))))

你会用这个替换cm.lisp当前所说的行#+sbcl (eq :directory (sb-unix:unix-file-kind (namestring dir)))

……但我希望这只是冰山一角。祝你好运!


推荐阅读