Kamuycikap - SentenceDataBase

日々の勉強の記録を気分で書き綴るブログ

WindowsにClozure CLを導入済みQuickLisp付きでインストールしてみた

WindowsにClozure CLをインストールする先人たちの知恵は、所かしこに存在するのですが、すでに導入しているQuickLispのライブラリも持ち歩きたいと考えた場合はなかなかみつからない。
そこで試行錯誤してみました。
結論、試行錯誤と言うレベルではなく、結構簡単に実現。
この結果が正しいかどうかは分かりませんが、作業結果としてブログに残します。

仕様概要

  1. 簡単に持ち歩きたい(環境まるごと)
  2. ネットワークに接続されている状態でならQuickLispによるライブラリの導入ができる
  3. ネットオフラインになっても導入したQuickLispライブラリを使いたい
  4. Clozure CLを採用したい
  5. SLIMEな環境で開発したい
  6. 可能な限りWindowsのバージョンに左右されないようにしたい

環境構築

Clozure CLのダウンロード

Clozure CLのダウンロードと導入については、他のサイトに任せます。
単純に本家のサイトに行き、Clozure CLのWindows用ZIPファイルをダウンロードし、それを任意のフォルダに展開するだけ。
便宜上、C:\work\cclとする

Clozure CLはインストーラなどは必要ない。
https://ccl.clozure.com/download.html

Clozure CLの展開フォルダをホームディレクトリに

ここの部分がキモになる。
Linuxな環境ならば、homeディレクトリという考え方があり、各ユーザーの設定を個別に管理できるが、Windowsの場合はバージョンによって様々。
Windowsでも好きに触れるならオレオレにすれば良いじゃないかと思ったのですが、利用しているアプリケーションによっては、勝手にホームディレクトリを変更すると動作がおかしくなる。
それは嫌だ。

なので、BATファイルを作り、限定的に環境変数を操作する事で回避する。
コマンドプロンプトを開き、そのコマンドプロンプト内だけホームディレクトリを、Clozure CLを展開したC:\work\cclにする。
そうすれば、他には影響が無いはず。

絶対に必要な設定はこちら

SET CCL_DEFAULT_DIRECTORY=%~dp0
SET PATH=%PATH%;%~dp0
SET USERPROFILE=%~dp0
SET HOME=%~dp0

環境変数のUSERPROFILEを再設定する事で、Linuxでいう所のhomeディレクトリを決めている。
SETXではなくSETを使っているのは、バッチを実行したプロンプトだけに設定を反映したかったから。
つまり、バッチを実行したプロンプト内は、全く別の環境として機能する。
以降の作業は、全てこのバッチを走らせたプロンプト内で実施しなければならない!

以下、バッチファイル全文。(意味を理解しなきゃ、コピペするだけじゃ動かないよ!)
Emacsxyzzyを使いたいし、graphvizも呼び出したいので、フォルダ作ってそこに配置し、PATHを通した。

@echo off
REM ClozureCL Start for Windows

echo =================================================
echo Common Lisp Environment Setup by Project Kinpira.
echo =================================================
echo .

echo EnvironmentValue Setup! -^> Start
REM カレントディレクトリをClozureCLのデフォルトディレクトリとして設定
REM ClozureCLの実行ファイルパスもPATHに追加する
REM 表示するプロンプトだけ有効にするため、SETXではなくSETで設定している
SET CCL_DEFAULT_DIRECTORY=%~dp0
SET PATH=%PATH%;%~dp0
echo CCL_DEFAULT_DIRECTORY -^> %CCL_DEFAULT_DIRECTORY%

REM このBATを実行した時だけ、userprofileをカレントディレクトリにする(他には何も影響しない)
SET userprofile=%~dp0
SET HOME=%~dp0
echo USERPROFILE -^> %USERPROFILE%
echo HOME        -^> %HOME%
echo EnvironmentValue Setup! -^> End
echo .

echo ApplicationPath Setup! -^> Start
REM サードパーティアプリの実行パスもPATHに含める(共通部)
SET PATH=%PATH%;%~dp0\third_party_tools\graphviz-2.38\release\bin
SET PATH=%PATH%;%~dp0\third_party_tools\xyzzy
SET PATH=%PATH%;%~dp0\third_party_tools\emacs\bin
echo Graphviz2.38 -^> OK
echo XYZZY        -^> OK
echo Emacs24      -^> OK


REM サードパーティアプリの実行パスもPATHに含める(Windowsバージョン別)
ver | find /i "Version 5.1." > nul
if %ERRORLEVEL% equ 0 GOTO :WINXP
ver | find /i "Version 6.1." > nul
if %ERRORLEVEL% equ 0 GOTO :WIN7
ver | find /i "Version 6.3." > nul
if %ERRORLEVEL% equ 0 GOTO :WIN8.1
ver | find /i "Version 10.0." > nul
if %ERRORLEVEL% equ 0 GOTO :WIN10
goto :END

:WINXP
SET PATH=%PATH%;%~dp0\third_party_tools\Tcl_WinXP\bin
goto END

:WIN7
SET PATH=%PATH%;%~dp0\third_party_tools\Tcl_Win7\bin
goto END
 
:WIN8.1
SET PATH=%PATH%;%~dp0\third_party_tools\Tcl_Win7\bin
goto END
 
:WIN10
SET PATH=%PATH%;%~dp0\third_party_tools\Tcl_Win7\bin
goto END

echo Tcl/TK       -^> OK
echo ApplicationPath Setup! -^> End
echo .
:END

echo QuickLisp Library List -^> Start!
dir %~dp0\quicklisp\dists\quicklisp\software
echo QuickLisp Library List -^> End
echo .

echo ===== Usage =====
echo Emacs起動 -^> runemacs
echo XYZZY起動 -^> xyzzy
echo 

REM ClozureCL起動
REM wx86cl.exe

QuickLispの導入

基本はこちらのサイトに掲載されている方法で導入。
http://modern-cl.blogspot.jp/2011/03/

QuickLispのダウンロードと設置

QuickLispの本家から「Quicklisp.lisp」をダウンロードし、Clozure CLを解凍したフォルダに配置。
C:\work\CCL
へ保存。

https://beta.quicklisp.org/quicklisp.lisp

Clozure CLの起動

先に作ったバッチを実行し、実行した後のプロンプトでClozure CLを起動。
なぜなら、次に行うQuickLispの導入とライブラリの導入先を、Clozure CLを展開したフォルダにしたいから。

QucikLispでライブラリ導入

こちらのサイトに紹介されている方法でQuickLispを導入。
http://modern-cl.blogspot.jp/2011/03/quicklisp.html

(load "quicklisp.lisp")
(quicklisp-quickstart:install)
(ql:add-to-init-file)

ここまでで、うまく行っていれば、Clozure CLの解凍フォルダにQuicklispの設定ファイルが出来ているはず。
これ → ccl-init.lisp


http://modern-cl.blogspot.jp/2011/04/4-common-lisp.html
こちらのサイトに掲載されている方法で、ライブラリを導入

Clozure CLの解凍フォルダに「quicklisp」フォルダが作成され、その中にどんどんとライブラリが蓄積されていくはず。

(ql:quickload :cl-ppcre)          ; 正規表現
(ql:quickload :local-time)        ; 時間計算
(ql:quickload :trivial-shell)     ; シェルコマンド実行
(ql:quickload :cl-fad)            ; ディレクトリ・ファイル操作
(ql:quickload :Drakma)            ; HTTPリクエスト
(ql:quickload :ltk)                     ; Tkライブラリ(GUI作成用)

こんだけあったら、現状の日常業務はなんとかなりそう。

ソースコードの実行

これもバッチファイルで実行。
ファイル名は、ccl.batとでもしておく

@echo off

wx86cl.exe --load %1 --eval (quit)

これで、

> ccl hoge.lisp

としてプログラムを実行できる。

開発環境の構築

ホームディレクトリが設定されているので、自分の.emacs.dをClozure CLの展開フォルダに配置するだけ。
NTEmacsを導入していたので、cドライブ直下にあるemacsディレクトリを、.emacs.dと同様にClozure CLの展開フォルダに配置する。

最終的に、フォルダ構成はこうなっている。
履歴として晒してみる。。。

 C:\work\ccl のディレクトリ

2017/11/25  19:17    <DIR>          .
2017/11/25  19:17    <DIR>          ..
2017/11/25  14:33    <DIR>          .emacs.d     <- Emacs用の設定
2015/11/06  20:10    <DIR>          .svn
2017/11/25  16:19                44 .xyzzy         <- xyzzy用の設定
2017/11/25  12:28               221 ccl-init.lisp
2017/11/25  15:45                51 ccl.bat     <- コンパイル用バッチ
2017/11/25  18:18             2,170 cl-setup.bat     <- 環境変数変更用バッチ
2015/11/06  20:09    <DIR>          compiler
2015/11/06  20:09    <DIR>          contrib
2015/11/06  20:09    <DIR>          doc
2015/11/06  20:09    <DIR>          examples
2015/11/06  20:09    <DIR>          level-0
2015/11/06  20:09    <DIR>          level-1
2015/11/06  20:09    <DIR>          lib
2015/11/06  20:09    <DIR>          library
2015/11/06  20:09    <DIR>          lisp-kernel
2015/11/06  20:09    <DIR>          objc-bridge
2017/11/25  12:18    <DIR>          quicklisp
2017/11/25  11:16            57,144 quicklisp.lisp     <- quicklisp.lispはココに置いた
2015/11/06  20:09    <DIR>          scripts
2015/11/06  20:09    <DIR>          src           <- ソースコード置くとこ作ってみた
2017/11/25  14:33    <DIR>          third_party_tools    <- この中に使いたいアプリを放り込む。(Emacsとxyzzy、TclとGraphvizが入っている)
2015/11/06  20:09    <DIR>          tools
2015/11/06  20:09    <DIR>          win32-headers
2015/11/06  20:09    <DIR>          win64-headers
2015/11/06  19:32           868,278 wx86cl.exe     <- 32bit用のClozure CL本体
2015/11/06  19:36        18,182,160 wx86cl.image
2015/11/06  19:36         1,078,774 wx86cl64.exe     <- 64bit用のClozure CL本体
2015/11/06  19:41        24,334,576 wx86cl64.image
2015/11/06  20:09    <DIR>          xdump
              10 個のファイル          44,524,635 バイト
              21 個のディレクトリ  267,617,517,568 バイトの空き領域

開発!!

  1. コマンドプロンプト起動(Win + R)
  2. cdコマンドでカレントディレクトリをC:\work\cclに移動
  3. cl-setup.batを実行
  4. Emacsやらxyzzyやらでソースコード作成!
  5. ccl.batでソースコード実行


優良アダルトサイト紹介の最終形態!!MaxInfo