博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在LispBox环境上安装 portableaserve 的详细过程
阅读量:7058 次
发布时间:2019-06-28

本文共 2908 字,大约阅读时间需要 9 分钟。

hot3.png

在LispBox环境上安装 portableaserve 的详细过程

打算边读边实践地学习 《实用 Common Lisp 编程》中 web 编程那部分内容,于是按照书上所讲的准备先搭建一个 web 开发环境,书中的例子推荐使用 portableaserve ,开源软件很不错。

到这里 http://portableaserve.sourceforge.net 下载了软件包回来,解压到 LispBox 目录下,浏览一下readme 文档,按照文档说明进行安装,在 REPL 界面上直接用 load 调用,结果返回错误:“There is no package named "FUNDAMENTAL-BINARY-INPUT-STREAM" .” ,看来还需要先安装一个这个包,现在就需要用到 LispBox 自带的 quicklisp 来进行安装这个包 “FUNDAMENTAL-BINARY-INPUT-STREAM” 了。

参见这篇文档()

具体就两条命令,看截图更清楚:

然后再执行这个命令试试: (ql:quickload "FUNDAMENTAL-BINARY-INPUT-STREAM"),结果失败,显示如下:

既然这样,让我们再想想办法,先去查查这个包是个什么东东,一查发现这应该是 gray streams ,而不是单独这个名字,ok,那就安装gray streams ,见下图:

装了个 trivial-gray-streams ,然后继续装 portableaserve 的 INSTALL.lisp ,结果又出现问题了,显示如下:

没办法导入?看来还需要多搜集一些周边的知识,否则就这么试一步,错一步的,再继续下去就没耐心了,暂停安装,先充电去也===========||||||||||||

还是不死心,切换到我的PC上,把 CCL 切换到 SBCL ,结果发现可以安装 portableaserve 了,不过安装都磕磕碰碰、跌跌撞撞的,这里是截图:

最后按照书中的说明执行下面这个语句也没成功:

(defpackage :com.gigamonkeys.web            (:use :cl :net.aserve :com.gigamonkeys.html))

直接去作者网站查查,看看有什么勘误,发现作者已经把英文版全部公布到网上了(第26章的链接如下:),

这里是关于web开发的内容:

But before I get to that, you need to know how to start AllegroServe and set it up to serve a few files. The first step is to load the AllegroServe code into your Lisp image. In Allegro, you can simply type (require :aserve). In other Lisps (or in Allegro), you can load PortableAllegroServe by loading the file INSTALL.lisp at the top of the portableaserve directory tree. Loading AllegroServe will create three new packages, NET.ASERVE, NET.HTML.GENERATOR, and NET.ASERVE.CLIENT.8After loading the server, you start it with the function start in the NET.ASERVE package. To have easy access to the symbols exported from NET.ASERVE, from COM.GIGAMONKEYS.HTML (a package I'll discuss in a moment), and from the rest of Common Lisp, you should create a new package to play in like this:CL-USER> (defpackage :com.gigamonkeys.web            (:use :cl :net.aserve :com.gigamonkeys.html))#
Now switch to that package with this IN-PACKAGE expression:CL-USER> (in-package :com.gigamonkeys.web)#
WEB> Now you can use the exported names from NET.ASERVE without qualification. The function start starts the server. It takes quite a number of keyword parameters, but the only one you need to pass is :port, which specifies the port to listen on. You should probably use a high port such as 2001 instead of the default port for HTTP servers, 80, because on Unix-derived operating systems only the root user can listen on ports below 1024. To run AllegroServe listening on port 80 on Unix, you'd need to start Lisp as root and then use the :setuid and :setgid parameters to tell start to switch its identity after opening the port. You can start a server listening on port 2001 like this:WEB> (start :port 2001)#

根据尝试的经过和结果,似乎可以得出一个结论:关于Web 开发的具体代码,作者只在 AllegroServe 环境下使用、验证过,没有在其他CommonLisp环境下(包括作者在前面章节使用的LispBox)验证过。

 

转载于:https://my.oschina.net/freeblues/blog/102803

你可能感兴趣的文章
11月份OS调查:Windows 10市场份额增长速度加快
查看>>
美国网速将提升至300M中 小企业将受益
查看>>
TensorFlow教程之API DOC 6.3.14. TRAIN
查看>>
《深入理解C++11:C++ 11新特性解析与应用》——2.6 noexcept修饰符与noexcept操作符...
查看>>
PCIe 4.0迈向代工阶段,5.0则仍身处实验室环境
查看>>
《数据库基础及实践技术——SQL Server 2008》一1.2 数据库系统与数据库管理系统...
查看>>
云时代,ERP选型莫走入低价、免费误区
查看>>
让城市更智能 让管理更高效
查看>>
阿里社交突围,根源在互联网向大脑结构进化产生压力
查看>>
专家提醒:填报高考志愿不能过分依赖“大数据”
查看>>
河北汽车客运站异地联网售票!那些你不知道的事
查看>>
我们需要什么样的威胁情报分析师?
查看>>
超过24%!天合光能IBC电池效率再创新高
查看>>
MySQL两千万数据优化&迁移
查看>>
《UNIXLinux程序设计教程》一2.3 打开和关闭流
查看>>
《Android的设计与实现:卷I》——第2章 2.5 JNI操作Java对象
查看>>
FBI和DHS在响应网络攻击时为何存在分歧
查看>>
《系统分析与设计方法及实践》一3.1 案例研究中涵盖的内容
查看>>
湖北省开启能源供给侧改革 将重点发展光伏发电
查看>>
美国伊利诺伊州响应区块链技术倡议活动 将举办黑客马拉松
查看>>