installation - 如何使用 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:
- 将目录更改为您的 Lisp 安装目录。
$ cd /usr/local/lisp
- 将 shell 变量 CVSROOT 设置为指向 CVS 存储库:
$ export CVSROOT=":pserver:anonymous@commonmusic.cvs.sourceforge.net:/cvsroot/commonmusic"
- 使用 cvs login 连接到 Sourceforge CVS 服务器,在提示输入密码时按 Enter:
$ cvs 登录 CVS 密码:
- 使用 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,任何帮助将不胜感激。
谢谢。
解决方案
问题是这个系统是为另一个世界而写的。 Unix-file-kind
已从sb-unix
10 多年前删除。
在这里,它用于确定路径名是否命名现有目录。我不确定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)))
。
……但我希望这只是冰山一角。祝你好运!
推荐阅读
- dart - Flutter 在真机上运行时报错
- ios - 升级到 Xcode 10 + Mac OS Mojave 后无法调试选定的视图
- label - 如何在标签中添加图标?
- angular - 选择器“app-confirm-auto-focus”不匹配任何元素
- python - 在给定的两个元素之间打乱所有元素
- algorithm - 如何仅遍历图中的一个循环?
- string - 从批处理文件中执行 VBScript 时出现字符串问题
- android - Android 应用程序中捕获的图像未保存在手机中
- php - 我想在 php 中调用 ajax 时在表中显示数据
- c - 尝试使用 for 循环查找调和平均值、地理平均值、总和、产品、平均值时出现错误退出