0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker で Lisp のインタープリターを呼ぶ

Posted at

はじめに

急に Lisp がやってみたくなったので、 Docker の練習がてら環境構築してみた。

今回は Steel Bank Common Lisp(SBCL) をインストールします。

この記事では下の記事のインストール部分を参考に、最新版の SBCL をインストールする Dockerfile を作成します。

環境

$ docker --version 
Docker version 20.10.18, build b40c2f6

Dockerfile

# Use the official Ubuntu 22.04 base image
FROM ubuntu:22.04

# Set the working directory
WORKDIR /usr/src/app

# Update package list and install necessary dependencies
RUN apt-get update && \
    apt-get install -y wget bzip2 make rlwrap && \
    wget http://prdownloads.sourceforge.net/sbcl/sbcl-2.4.1-x86-64-linux-binary.tar.bz2 && \
    bzip2 -cd sbcl-2.4.1-x86-64-linux-binary.tar.bz2 | tar xvf - && \
    cd sbcl-2.4.1-x86-64-linux/ && \
    sh install.sh

# Cleanup unnecessary files
RUN rm -rf /usr/src/app/sbcl-2.4.1-x86-64-linux* && \
    apt-get autoremove -y && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# Set the default command to run sbcl
# sleep が無いとエラーを出る
CMD ["bash", "-c", "sleep 0.05; rlwrap sbcl"]

CMD の sleeprlwrap sbcl ではエラーを出るために追記した。

rlwrap はコマンドラインを読み取り履歴機能などを追加してくれるソフト。これがないと誤字を消すために左矢印を入力すると ^[[D が表示されたりする。

docker を使いたくない人へ

普通に apt install sbcl で古いバージョンがインストールできます。

$ apt show sbcl
# Package: sbcl
# Version: 2:2.1.11-1
# Priority: optional
# Section: universe/devel
# Origin: Ubuntu
# Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
# Original-Maintainer: Debian Common Lisp Team <debian-common-lisp@lists.debian.org>
# Bugs: https://bugs.launchpad.net/ubuntu/+filebug
# Installed-Size: 46.3 MB
# Provides: lisp-compiler, sbcl-fasl-loader-78
# Depends: libc6 (>= 2.34), zlib1g (>= 1:1.1.4)
# Recommends: binfmt-support
# Suggests: sbcl-doc, sbcl-source, slime
# Breaks: cl-asdf (<< 2:3.3.3-4~), cl-cffi (<< 1:0.22.1-1~), cl-nibbles (<< 20210520.gitdad2524-1~)
# Homepage: http://www.sbcl.org
# Download-Size: 10.6 MB
# APT-Sources: http://jp.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
# Description: Common Lisp コンパイラおよび開発システム
#  SBCL は ANSI Common Lisp 言語向けの開発環境です。 ネイティブコードコンパイラと統合デバッガを提供し、さらに ANSI
#  仕様の全機能 も提供しています。
#  .
#  SBCL には、外部関数インターフェース (FFI)、疑似サーバ API、ユーザ拡張可能な
#  ストリーム機能、メタオブジェクトプロトコル、外部プロセスを実行する機能を含 む、ANSI 仕様への他の拡張も含まれています。
#  .
#  SBCL のソース定義を開発環境と共に閲覧するには、sbcl-source パッケージをイン ストールしてください。SBCL
#  の使い方や内部についての文書は、パッケージ sbcl-doc で提供されています。

Hello World

log.txt
$ sbcl 
This is SBCL 2.1.1.debian, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
* (write-line "HelloWorld!")   
HelloWorld!
"HelloWorld!"
* 
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?