'수학'에 해당되는 글 1건

  1. 2019.02.23 maxima 설치하기

maxima 설치하기

Personal Computer/misc 2019. 2. 23. 04:32 posted by tolkien

방송통신대 강의를 듣다보니 wxMaxima라는 tool을 사용한다. Maxima라는 수식을 간단하게 풀어주거나 Graph를 그려주는 program의 wxWidget front-end. 예전에 써봤던 Mathematica의 open source version으로 추측된다. 이걸 macbook에 설치해보니 실행이 제대로 안된다. 그래서, 다른 front-end중에서 이전에 tensorflow때 써먹었던 jupyter가 있길래 여기에 붙여본다고 삽질. (기준은 mac OS X 10.13.6 High Sierra )


1. brew를 통해서 maxima를 설치한다.

brew install maxima

2.   maxima를 실행한 다음에 다음 명령어가 먹으면, jupyter 설치(6번)로 들어간다.

f(x) := sin(x);

3. maxima 동작이 이상하면 이제 source build를 해야 한다. 먼저 sbcl이라는 lisp interpreter를 설치해야 한다.

brew install sbcl

4. 그리고, maxima source를 받아서 build. (mac은 platypus라는 것이 필요하다.)

git clone https://github.com/andrejv/maxima.git

brew install platypus

cd maxima

./bootstrap

make -f macosx/Makefile

5. 그러면 ~/Desktop/Maxima.app 이라는 directory가 생긴다. app을 실행할 것이 아니므로 적당한 곳은 옮기고, 그 안에 있는 실행 shell script을 실행가능한 path로 link 걸어놓는다. maxima를 실행시켜서 잘 동작하는 거 확인. 여기까지 안되면 그냥 windows binary 가져다가 사용할 것.

mv ~/Desktop/Maxima.app ~/Public

ln -s /Users/tolkien/Public/Maxima.app/Contents/Resources/maxima.sh ~/bin/maxima

6. jupyter를 설치해야 한다. 그리고,  ~/.sbclrc를 생성해서 다음과 같은 내용을 추가해주자.

brew install python3 pip3

pip3 install jupyter


MacBook-Air:work tolkien$ cat ~/.sbclrc 

(setf sb-impl::*default-external-format* :utf-8)

7. quicklisp이라는 것도 설치.

curl -O https://beta.quicklisp.org/quicklisp.lisp

sbcl --load quicklisp.lisp

- 여기부터는 lisp intepreter 명령임 -

(quicklisp-quickstart:install)

(ql:system-apropos "vecto")

(ql:quickload "vecto")

(ql:add-to-init-file)

(quit)


8. maxim-jupyter source를 download.

git clone https://github.com/robert-dodier/maxima-jupyter.git

9. build, 중간에 실패하면 10번 참조
cd maxima-jupyter

mkdir -p binary/binary-sbcl

maxima

- 여기부터 maxima 명령임 -

:lisp (load "load-maxima-jupyter.lisp")

:lisp (sb-ext:save-lisp-and-die #P"binary/binary-sbcl/maxima-jupyter-exec" :executable t :toplevel 'maxima-jupyter:kernel-start-exec)

10. 중간에 아래와 같은 message를 내면서 build 실패하면, lisp file을 patch해야 한다.

; /Users/tolkien/.cache/common-lisp/sbcl-1.4.16-macosx-x64/Users/tolkien/quicklisp/dists/quicklisp/software/pzmq-20171019-git/grovel__grovel /Users/tolkien/.cache/common-lisp/sbcl-1.4.16-macosx-x64/Users/tolkien/quicklisp/dists/quicklisp/software/pzmq-20171019-git/grovel__grovel.grovel-tmp.lisp

While evaluating the form starting at line 19, column 0

  of Maxima encountered a Lisp error:


 Couldn't execute "/Users/tolkien/.cache/common-lisp/sbcl-1.4.16-macosx-x64/Users/tolkien/quicklisp/dists/quicklisp/software/pzmq-20171019-git/grovel__grovel": Permission denied


Automatically continuing.

To enable the Lisp debugger set *debugger-hook* to nil.

#P"/Users/tolkien/work/maxima-jupyter/./load-maxima-jupyter.lisp":; 

10.1 patch file.

--- /Users/john/tmp/grovel.lisp 2019-02-23 03:45:12.000000000 +0900

+++ /Users/john/quicklisp//dists/quicklisp/software/cffi_0.20.0/grovel/grovel.lisp 2019-02-23 03:45:04.000000000 +0900

@@ -243,6 +243,7 @@

             (link-executable exe-file (list o-file)))

         (error (e)

           (grovel-error "~a" e)))

+      (apply 'invoke `(#+bsd ,@`("chmod" "755" ,exe-file)))

       (invoke exe-file lisp-file)

       lisp-file)))

11. 무사히 build가 끝나면 다음과 같은 실행파일을 볼 수 있을 것이다. (이제 다 왔다!)

MacBook-Air:maxima-jupyter tolkien$ ls -lh binary/binary-sbcl/

total 196736

-rwxr-xr-x  1 tolkien  staff    84M  2 23 03:46 maxima-jupyter-exec*

12. 이제 jupyter에 maxim kernel을 추가.

python3 ./install-maxima-jupyter.py --exec=`pwd`/binary/binary-sbcl/maxima-jupyter-exec


또는, virtualenv 환경에서 jupyter를 실행한다면 아래처럼 설치위치를 지정해주어야 한다.


python3 ./install-maxima-jupyter.py --prefix=/Users/tolkien/tf --exec=`pwd`/binary/binary-sbcl/maxima-jupyter-exec

13. jupyter를 실행하고, New button을 눌러서 maxima kernel이 있는 것을 확인하면 된다.

jupyter-notebook


참고 site:

  • http://maxima.sourceforge.net - maxima official site
  • http://maxima-online.org  - maxima web front-end
  • https://github.com/andrejv/maxima - maxima GitHub mirror
  • https://github.com/robert-dodier/maxima-jupyter - maxima-jupyter Github
  • https://www.quicklisp.org/beta/ - quicklisp official site