Quicklisp


Tags: ライブラリ, Quicklisp

Quicklispは、ASDFをベースにした、Common Lispのライブラリを管理するシステムです。

に対応しています。

利用することで、ライブラリの

を自動化できるため、Quicklispに対応しているライブラリは、インストールやアップデートが非常に簡単にできます。

また、環境に依存しにくい作りで、Windowsでも正常に動作します。



関連ページ


インストール

非常に簡単です。quicklisp.lispをダウンロードして読み込み、後はメッセージの指示に従うだけです。

例えば、CLISPでは次のようにインストールします。ダウンロードしたquicklisp.lispがあるディレクトリでCLISPを起動します。

$ clisp
  i i i i i i i       ooooo    o        ooooooo   ooooo   ooooo
  I I I I I I I      8     8   8           8     8     o  8    8
  I  \ `+' /  I      8         8           8     8        8    8
   \  `-+-'  /       8         8           8      ooooo   8oooo
    `-__|__-'        8         8           8           8  8
        |            8     o   8           8     o     8  8
  ------+------       ooooo    8oooooo  ooo8ooo   ooooo   8

Welcome to GNU CLISP 2.48 (2009-07-28) <http://clisp.cons.org/>

Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2009

Type :h and hit Enter for context help.

[1]> (load "quicklisp.lisp")

;; Loading file quicklisp.lisp ...

  ==== quicklisp quickstart loaded ====

    To continue, evaluate: (quicklisp-quickstart:install)

;; Loaded file quicklisp.lisp
T
[2]> (quicklisp-quickstart:install)

; Fetching #<URL "http://beta.quicklisp.org/quickstart/asdf.lisp">
; 159.59KB
==================================================
163,424 bytes in 0.59 seconds (268.79KB/sec)
; Fetching #<URL "http://beta.quicklisp.org/quickstart/quicklisp.tar">
; 180.00KB
==================================================
184,320 bytes in 0.42 seconds (426.67KB/sec)
; Fetching #<URL "http://beta.quicklisp.org/quickstart/setup.lisp">
; 2.66KB
==================================================
2,719 bytes in 0.00 seconds (0.00KB/sec)
; Fetching #<URL "http://beta.quicklisp.org/dist/quicklisp.txt">
; 0.40KB
==================================================
408 bytes in 0.05 seconds (8.50KB/sec)

  ==== quicklisp installed ====

    To load a system, use: (ql:quickload "system-name")

    To find systems, use: (ql:system-apropos "term")

    To load Quicklisp every time you start Lisp, use: (ql:add-to-init-file)

    For more information, see http://www.quicklisp.org/beta/

NIL
[3]> (ql:add-to-init-file)

I will append the following lines to #P"C:\\Documents and Settings\\manabu\\My Documents\\.clisprc.lisp":

  ;;; The following lines added by ql:add-to-init-file:
  #-quicklisp
  (let ((quicklisp-init (merge-pathnames "quicklisp\\setup.lisp" (user-homedir-pathname))))
    (when (probe-file quicklisp-init)
      (load quicklisp-init)))

Press Enter to continue.

#P"C:\\Documents and Settings\\manabu\\My Documents\\.clisprc.lisp"
[4]>

(load "quicklisp.lisp")でquicklisp.lispを読み込んでから、表示されるメッセージに従って、(quicklisp-quickstart:install)と(ql:add-to-init-file)を順に評価すれば終わりです。


アップデート

Quicklispの新しいバージョンがリリースされている場合、(ql:update-client)でアップデートできます。

> (ql:update-client)
Updating from version 2010121400 to version 2011040600.
Press Enter to continue.

; Fetching #<URL "http://beta.quicklisp.org/quickstart/quicklisp-2011040600.tgz">
; 34.86KB
==================================================
35,694 bytes in 0.23 seconds (148.96KB/sec)
; Fetching #<URL "http://beta.quicklisp.org/quickstart/setup.lisp">
; 2.66KB
==================================================
2,719 bytes in 0.00 seconds (0.00KB/sec)
; Fetching #<URL "http://beta.quicklisp.org/quickstart/asdf.lisp">
; 159.59KB
==================================================
163,424 bytes in 0.17 seconds (927.87KB/sec)
New quicklisp client installed. It will take effect on restart.
T

メッセージに従って、処理系を再起動すれば終了です。


ライブラリのインストールと読み込み

Quicklispでは、ライブラリのインストールと読み込みが同じ操作でできます。ql:quickloadを呼ぶことで、ライブラリがインストールされていない場合、自動的にインストールし、インストールされている場合、ライブラリを読み込みます。

例えば、既にインストールされているAlexandriaを読み込む場合、このような感じです。

> (ql:quickload "alexandria")
To load "alexandria":
  Load 1 ASDF system:
    alexandria
; Loading "alexandria"

("alexandria")

なお、ql:quickloadに渡すライブラリの名前はdesignatorなので、文字列以外に、キーワードなどのシンボル(:alexandriaや'#:alexandriaなど)でも大丈夫です。


ライブラリの検索

ライブラリをインストールするときなど、ライブラリの正しい名前が分からなくて困るときがあります。あるいは、ライブラリの中から特定のキーワードを含むライブラリを探したいときもあります。こういったときに、ql:system-aproposでライブラリの検索ができます。

名前にiterateを含むライブラリを検索する場合は、次のように検索します。

> (ql:system-apropos "iterate")
#<SYSTEM hu.dwim.reiterate / hu.dwim.reiterate-20110219-darcs / quicklisp 2011-03-20>
#<SYSTEM hu.dwim.reiterate.test / hu.dwim.reiterate-20110219-darcs / quicklisp 2011-03-20>
#<SYSTEM iterate / iterate-20110219-darcs / quicklisp 2011-03-20>
#<SYSTEM iterate-pg / iterate-20110219-darcs / quicklisp 2011-03-20>
#<SYSTEM iterate-tests / iterate-20110219-darcs / quicklisp 2011-03-20>
#<SYSTEM x.fdatatypes-iterate / x.fdatatypes-20110320-git / quicklisp 2011-03-20>
NIL

それぞれの行ごとにライブラリの情報が表示されます。一行目を例にしてみると、hu.dwim.reiterateがライブラリの正式な名前で、hu.dwim.reiterate-20110219-darcsがライブラリのバージョンです。

また、(ql:system-list)を評価することで、ライブラリの一覧を表示できます。


ライブラリのアップデート

(ql:update-all-dists)でアップデートできます。

> (ql:update-all-dists)
Changes from quicklisp 2011-01-10 to quicklisp 2011-03-20:
  New projects:
    cl-fftw3-20101006-git
    graphic-forms-20101006-svn
    clon-20101107-git

  Updated projects:
    cl-glfw-20110110-git -> cl-glfw-20101107-git
    moptilities-20110110-http -> moptilities-20101006-http
    cl-skip-list-20101207-git -> cl-skip-list-20101107-git
    glop-20110110-git -> glop-20101107-git
    mel-base-20110110-git -> mel-base-20101006-darcs
    hu.dwim.syntax-sugar-20101207-darcs -> hu.dwim.syntax-sugar-20101107-darcs
    postmodern-20110110-git -> postmodern-20101107-git
    3b-swf-20110110-git -> 3b-swf-20101107-git
    restas-20110110-git -> restas-20101107-git
    simple-date-time-20110110-git -> simple-date-time-20101006-git
    gsll-20101207-git -> gsll-20101107-git
    cl-mongo-20101207-git -> cl-mongo-20101107-git
    usocket-20110110-svn -> usocket-20101006-svn
    restas-directory-publisher-20110110-git -> restas-directory-publisher-20101107-git
    fare-utils-20101207-git -> fare-utils-20101107-git
    chillax-20101207-git -> chillax-20101107-git
    st-json-20101207-git -> st-json-20101107-git
    js-v0.10.12-git -> js-20101107-git
    gsd-20101207-git -> gsd-20101006-git
    nst-3.0.1 -> nst-2.1.0
    prepl-20101207-git -> prepl-20101006-git
    hemlock-20110110-git -> hemlock-20101107-git
    hu.dwim.serializer-20101207-darcs -> hu.dwim.serializer-20101107-darcs
    log5-20110110-git -> log5-20101006-git
    pileup-20101207-git -> pileup-20101107-git
    cl-twitter-20110110-git -> cl-twitter-20101107-git
    hu.dwim.def-20110110-darcs -> hu.dwim.def-20101107-darcs
    protobuf-20110110-git -> protobuf-20101006-git
    gbbopen-20110110-svn -> gbbopen-20101107-svn
    cl-fad-0.6.4 -> cl-fad-0.6.3
    weblocks-20110110-hg -> weblocks-20101107-hg
    unix-options-20110110-git -> unix-options-20101006-git
    cl-redis-20110110-git -> cl-redis-20101006-git
    ucw-20110110-darcs -> ucw-20101107-darcs
    cleric-20101207-git -> cleric-20101006-git
    cl-gtk2-20101207-git -> cl-gtk2-20101107-git
    glaw-20110110-git -> glaw-20101107-git
    cl-test-more-20110110-git -> cl-test-more-20101107-git
    xmls-1.4 -> xmls-1.3
    parse-js-20110110-git -> parse-js-20101107-git
    sw-mvc-20101207-git -> sw-mvc-20101107-git
    screamer-20101207-git -> screamer-20101107-git
    cl-m4-20110110-git -> cl-m4-20101006-git
    clfswm-20110110-svn -> clfswm-20101107-svn
    blackthorn-engine-20110110-hg -> blackthorn-engine-20101107-hg
    cl-closure-template-20110110-git -> cl-closure-template-20101107-git
    hu.dwim.util-20101207-darcs -> hu.dwim.util-20101107-darcs
    adw-charting-20110110-http -> adw-charting-20101006-http
    closer-mop-20110110-darcs -> closer-mop-20101107-darcs
    verrazano-20110110-darcs -> verrazano-20101006-darcs
    bknr-datastore-20110110-git -> bknr-datastore-20101006-git
    clpython-20110110-git -> clpython-20101107-git
    slime-20110110-cvs -> slime-20101107-cvs
    cl-opengl-20110110-git -> cl-opengl-20101107-git
    symbolicweb-20101207-git -> symbolicweb-20101107-git
    cl-sqlite-20110110-git -> cl-sqlite-20101107-git
    lispbuilder-20110110-svn -> lispbuilder-20101107-svn
    cl-store-20101207-darcs -> cl-store-20101006-http
    micmac-0.0.2 -> micmac-0.0.1
    montezuma-20110110-svn -> montezuma-20101107-svn
    relational-objects-for-lisp-20110110-darcs -> relational-objects-for-lisp-20101107-darcs
    plokami-20110110-git -> plokami-20101107-git
    cl-prevalence-20101207-hg -> cl-prevalence-20101006-http
    f2cl-20110110-cvs -> f2cl-20101107-cvs
    folio-20101207-git -> folio-20101107-git
    clsql-20101207-git -> clsql-20101107-git
    hu.dwim.asdf-20110110-darcs -> hu.dwim.asdf-20101107-darcs
    fsbv-20101207-git -> fsbv-20101006-git
    rpc4cl-0.3.1 -> rpc4cl-0.3.0
    hu.dwim.stefil-20101207-darcs -> hu.dwim.stefil-20101107-darcs

  Removed projects:
    asdf-install-20101207-git
    atdoc-20110110-git
    bourbaki-20110110-http
    cells-20101207-git
    cells-gtk3-20110110-git
    cl-azure-20110110-git
    cl-beanstalk-20110110-git
    cl-bibtex-20110110-cvs
    cl-binary-file-0.3
    cl-btree-0.4
    cl-charms-20110110-git
    cl-couch-20101207-darcs
    cl-enumeration-20110110-cvs
    cl-geo-0.1
    cl-geocode-20101207-git
    cl-gpu-20101207-git
    cl-iconv-20101207-git
    cl-lexer-20110110-git
    cl-memcached-0.4.1
    cl-migrations-20110110-http
    cl-mssql-0.0.2
    cl-mw-20101207-git
    cl-org-mode-20101207-git
    cl-plplot-0.6.0
    cl-popen-20110110-git
    cl-proc-20101207-darcs
    cl-quakeinfo-20110110-git
    cl-quickcheck-20110110-git
    cl-stm-20101207-http
    cl-swap-file-0.4
    cl-uglify-js-20110110-git
    cl-wal-0.3
    cl-wkb-0.1
    clazy-20110110-cvs
    clg-20110110-cvs
    clon-1.0b16
    clos-diff-20110110-git
    commonqt-20110110-git
    csv-parser-20101207-http
    curly-20101207-darcs
    deflate-20101207-git
    dso-lex-0.3.2
    dso-util-0.1.2
    elephant-20110110-darcs
    fucc_0.2.1
    inotify-20101207-git
    latex-table-20101207-git
    loopless-20101207-git
    lredis-20110110-git
    mgl-20110110-git
    monkeylib-binary-data-20110110-git
    monkeylib-foo-20101207-git
    monkeylib-macro-utilities-20101207-git
    monkeylib-markup-20101207-git
    monkeylib-markup-html-20101207-git
    monkeylib-pathnames-20101207-git
    monkeylib-prose-diff-20101207-git
    monkeylib-test-framework-20101207-git
    monkeylib-utilities-20101207-git
    mtlisp-20110110-git
    phemlock-20110110-cvs
    plain-odbc-20110110-svn
    proton-20101207-git
    sb-vector-io-20101207-git
    sequence-iterators-20101207-darcs
    spartns-1.4.3
    sqnc-20110110-git
    testbild-20101207-git
    wuwei-20110110-git
    xhtmlgen-20110110-git
Press Enter to continue.

; Fetching #<URL "http://beta.quicklisp.org/dist/quicklisp/2011-03-20/releases.txt">
; 118.55KB
==================================================
121,392 bytes in 0.89 seconds (133.05KB/sec)
; Fetching #<URL "http://beta.quicklisp.org/dist/quicklisp/2011-03-20/systems.txt">
; 78.72KB
==================================================
80,609 bytes in 0.28 seconds (279.15KB/sec)
; Fetching #<URL "http://beta.quicklisp.org/archive/usocket/2011-03-20/usocket-0.5.0.tgz">
; 56.67KB
==================================================
58,035 bytes in 0.49 seconds (116.86KB/sec)
; Fetching #<URL "http://beta.quicklisp.org/archive/iterate/2011-02-19/iterate-20110219-darcs.tgz">
; 327.64KB
==================================================
335,503 bytes in 0.77 seconds (427.73KB/sec)
; Fetching #<URL "http://beta.quicklisp.org/archive/slime/2011-03-20/slime-20110320-cvs.tgz">
; 879.40KB
==================================================
900,501 bytes in 0.84 seconds (1043.17KB/sec)
; Fetching #<URL "http://beta.quicklisp.org/archive/parenscript/2011-03-20/parenscript-2.3.tgz">
; 123.23KB
==================================================
126,191 bytes in 0.87 seconds (140.84KB/sec)
; Fetching #<URL "http://beta.quicklisp.org/archive/fare-utils/2011-03-20/fare-utils-20110320-git.tgz">
; 52.56KB
==================================================
53,819 bytes in 0.25 seconds (210.23KB/sec)
; Fetching #<URL "http://beta.quicklisp.org/archive/alexandria/2011-03-20/alexandria-20110320-git.tgz">
; 45.14KB
==================================================
46,222 bytes in 0.25 seconds (180.55KB/sec)
; Fetching #<URL "http://beta.quicklisp.org/archive/metabang-bind/2011-02-19/metabang-bind-20110219-git.tgz">
; 19.74KB
==================================================
20,215 bytes in 0.22 seconds (90.56KB/sec)
; Fetching #<URL "http://beta.quicklisp.org/archive/closer-mop/2011-03-20/closer-mop-20110320-darcs.tgz">
; 25.90KB
==================================================
26,520 bytes in 0.39 seconds (66.24KB/sec)
NIL

仕組み

(書きかけ)

Quicklispの構造
┏━━━━━━━━━━━━━━━┓
┃          Quicklisp           ┃
┣━━━━━━━━━━━━━━━┫
┃             ASDF             ┃
┣━━━━━━━━━━━━━━━┫
┃  Common Lispの基本的な機能   ┃
┃ (コンパイラやパッケージなど) ┃
┗━━━━━━━━━━━━━━━┛

参考文献


Last modified : 2011/07/21 04:11:01 JST
CC0 1.0
Powerd by WiLiKi 0.6.1 on Gauche 0.9