Ubuntu に Maxima-Jupyter をインストールする

以下を参考に,Ubuntu (20.04 LTS) に Maxima-Jupyter (Maxima kernel for Jupyter) をインストールします。

sudo apt install maxima でインストールされたものでは Maxima-Jupyter がうまく動きません。--enable-sbcl-exec オプション付きで make されているからでは?と思いますが,以下の Maxima で綴る数学の旅の記事に従って,ソースから make install してみます。

Python

(brew install python3 は済)

sudo apt install python3-pip python-is-python3
cd /usr/bin
sudo ln -s pip3 pip
$ python -V; pip -V
Python 3.8.2
pip 20.2.2 from /usr/local/lib/python3.8/dist-packages/pip (python 3.8)

sudo pip install jupyter jupyterlab 
sudo pip install matplotlib numpy sympy # これは任意で

Gnuplot

sudo apt install gnuplot でインストールされるものはコマンドラインから日本語入力しようとすると字化けします。以下を参考に。

sbcl

curl -OL http://prdownloads.sourceforge.net/sbcl/sbcl-2.0.8-x86-64-linux-binary.tar.bz2
tar xf sbcl-2.0.8-x86-64-linux-binary.tar.bz2 
cd sbcl-2.0.8-x86-64-linux/
sudo sh ./install.sh

Quicklisp

Quicklisp beta の Installation を参照。

cd ~/Downloads

curl -O https://beta.quicklisp.org/quicklisp.lisp
curl -O https://beta.quicklisp.org/quicklisp.lisp.asc
gpg --verify quicklisp.lisp.asc quicklisp.lisp

sbcl --load quicklisp.lisp
...
To continue, evaluate: (quicklisp-quickstart:install)
...
* (quicklisp-quickstart:install)
...
NIL
* (ql:system-apropos "vecto")
...
NIL
* (ql:quickload "vecto")
...
("vecto")
* (ql:add-to-init-file)
...
#P"/Users/quicklisp/.sbclrc"
* (quit)

Maxima

sudo apt install texinfo
curl -OL https://sourceforge.net/projects/maxima/files/Maxima-source/5.44.0-source/maxima-5.44.0.tar.gz
tar xvfz maxima-5.44.0.tar.gz 
cd maxima-5.44.0/
./configure --enable-sbcl
make
sudo make install
sudo apt install rlwrap libczmq-dev
rmaxima # 動作チェック。rmaxima だと上下矢印キーも使える。

Maxima-Jupyter

cd ~/Downloads
git clone https://github.com/robert-dodier/maxima-jupyter.git
cd maxima-jupyter/
maxima
(%i1) load("load-maxima-jupyter.lisp");
(%i2) jupyter_install();
(%i3) quit();

(%i2) のバリエーションについては,以下の記述を参考に。

After the install script has loaded then install using one of the kernel types.

User specific Quicklisp kernel: jupyter_install();
User specific binary image kernel: jupyter_install_image();
System-wide Quicklisp bundled kernel: jupyter_system_install(true, "pkg/");

After the installation is complete then exit Maxima. For the System-wide installation copy the files in pkg to the system root, i.e. sudo cp -r pkg/* / on Linux. (macOS でも同様)

個人で使うには,jupyter_install();jupyter_install_image(); でよいが,実習室 PC にインストールして教育用に… と思うと,system-wide なインストールが必要で,jupyter_system_install(true, "pkg/");

しかし,system-wide にインストールすると,起動時にコンソールに大量の Warning が出まくる。実行には支障がないようだが,どうしたものかと…

% jupyter console --kernel=maxima
WARNING: System definition file #P"/usr/local/share/maxima-jupyter/software/cl-base64-20150923-git/cl-base64.asd" contains definition for system "cl-base64-tests". Please only define "cl-base64" and secondary systems with a name starting with "cl-base64/" (e.g. "cl-base64/test") in that file.
WARNING: redefining UIOP/PACKAGE::WHEN-PACKAGE-FISHINESS in DEFMACRO
WARNING: redefining UIOP/PACKAGE::NOTE-PACKAGE-FISHINESS in DEFMACRO
WARNING: redefining UIOP/PACKAGE:DEFINE-PACKAGE in DEFMACRO
WARNING: redefining UIOP/COMMON-LISP::LOOP* in DEFMACRO
... 

maxima-jupyter: a Maxima Jupyter kernel; (C) 2019 Robert Dodier (BSD)
In [1]:

Maxima-Jupyter の Code Highlighting Installation

cd /usr/local/lib/python3.8/dist-packages/notebook/static/components/codemirror/mode/
sudo mkdir maxima
sudo cp ~/Downloads/maxima-jupyter/maxima.js maxima/
sudo vi meta.js 
  {name: "Mathematica", mime: 
+ {name: "Maxima", mime: "text/x-maxima", mode: "maxima", ext: ["mac", "max"]},
  {name: "Modelica", mime:
cd /usr/local/lib/python3.8/dist-packages/pygments/lexers/
sudo cp ~/Downloads/maxima-jupyter/maxima_lexer.py .
sudo vi _mapping.py 
  'MatlabSessionLexer': ('pygments.lexers.matlab', 
+ 'MaximaLexer': ('pygments.lexers.maxima_lexer', 'Maxima', ('maxima', 'macsyma'), ('*.mac', '*.max'), ()),
  'MiniDLexer': ('pygments.lexers.d', 'MiniD',

付録: wxMaxima

sudo apt install wxmaxima fonts-jsmath
cd /usr/bin
sudo chmod -x maxima # ソースからコンパイルしたものと混同しないように
# which maxima で /usr/local/bin/maxima だから大丈夫とは思うけど。

使用例

Jupyter notebook 環境で,Web ブラウザをフルスクリーン・エディタにして Maxima が使えるのはありがたい。定数や関数の定義,描画結果も保存しておけるしね。