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


mac OS 10.7.5의 어중간함.

Personal Computer/MacBook 2008 2019. 2. 10. 14:14 posted by tolkien

맥북이 두대가 있는데, 그중 macbook 2008은 지원되는 OS가 mac OS 10.7.5 Lion까지다. 이유는 CPU는 64bit이지만, EFI Bios가 32bit라서... google로 찾아보면 어찌어찌 hack해서 이후 OS를 설치하는 덕후들도 있지만, 솔직히 그냥 평범한 notebook에 hackintosh 설치하는 것과 크게 다를게 없다.


그동안 별 불만없이 2nd PC로 잘 쓰고 있었다. 헌데 open source software 진영에서도 하나둘씩 지원을 멈추더니 google chrome, firefox가 EOL (End Of Life)를 선언하고 이후 web browsing하는 데, 하나둘씩 불편함이 늘어나고 있다. 최근에 문제가 된 것은 SSL 인증 문제. 느린 것을 참겠지만, 아예 접속이 안되니... 아직까지 firefox 마지막 지원 version (48.0.2)으로 internet을 쓸 수 있겠지만, 이것도 언제까지 갈지..


결정적으로 그동안 잘 써왔던, brew에서 10.7.5에 대한 지원을 다음 version부터 하지 않겠다고 하면서 편하게 쓰던 3rd party software도 힘든 상황이 되었다. 그 대안으로 쓸 수 있는 것이 아직까지 지원하고 있는 MacPort와 TigerBrew.


여기서 TigerBrew가 brew의 fork라서 쓰기 편한데, 이건 말그대로 Tiger OS, 즉, PowerPC Mac을 지원하는 project라는 거다. bottle도 전부 ppc binary라서 내가 쓸 때는 항상 build부터 시작한다. 가끔 build error는 덤.


google을 뒤져봐도 macOS 10.7.5를 Apple 지원없이 계속 쓰지 위한 움직임은 보이지 않는다. 68k Mac이나 PPC Mac처럼 사용기간이 오래된 것도 아니고, 충성스런 사용자층이 있는 것도 아닌 것같고. 실사용기와 레트로 사이에 낀 어중간함이 꽤 지속될 것같다.

macbook 2008에 mac OS 10.7.5를 설치해서 web browser 좀 써보겠다고 낑낑대다가 이럴바에는 linux가 났겠다고 다시 linux를 설치했다. 내가 써놓은 글을 보니 엄두가 안 나서, 다른 방법으로 시도.


CD/DVD drive가 망가졌으므로 bootable USB를 만들어야 하는데, 많은 site가 mac OS 10.7.5에서 동작하지 않는 program를 쓰라고 한다. 하지만, 난 command line friendly이므로...


1. ubuntu 16.04.5 LTS (64bit) iso image를 받는다.

2. mac OS에서 hdiutil를 써서 image 변환.

hdiutil convert -format UDRW -o ~/path/to/target.img ~/path/to/ubuntu.iso

3. dd로 image를 USB memory에 write (용량 2G이상이면 됨.) 대개, disk0는 macbook HDD이므로, USB memory는 /dev/disk1 이다. 잘 모르겠으면, df 또는 disk list 명령으로 찾아보자.

sudo dd if=~/path/to/target.img.dmg of=/dev/disk1 bs=1m

그리고, "Option" key를 누르고 전원을 켜면, USB memory를 선택하고 booting할 수 있다. 상당히 오래 걸리므로 인내.인내.인내 (한 10분정도 있어야 설치화면을 볼 수 있었던 것 같다.)


설치가 다 끝나면, network이 ethernet device만 되고, WiFi가 되지 않는다. linux console에서 lspci 로 보면 Broadcomm 4321 chip이 보이고, 이건 kernel에서 지원된다고 되어 있는데, iwconfig 로 보면 보이지 않는다. modprobe -a b43 으로 kernel module을 load하면 firmware가 없다고 투덜대면서 module load에 실패하는 것을 볼 수 있다. 집 network은 이미 WiFi만 제공하므로 어떻게든 잡아야 한다. (이전 설치에서는 ubuntu 12.04 설치 -> upgrade로 이 문제를 풀었다.)


4. bcmwl-kernel-source 제거

apt-get purge bcmwl-kernel-source

5. 설치 usb에서 b43-fwcutter 찾아서 설치

dpkg -i b43-fwcutter_019-2_amd64.deb

6. broadcom legacy driver binary download후 b43-fwcutter로 firmware 추출

tar jxf broadcom-wl-5.100.138.tar.bz2

b43-fwcutter -w /lib/firmware broadcom-wl-5.100.138/linux/wl_apsta.o

7. reboot


이후, usb mouse 사용중에 touch pad를 disable하거나, keyboard typing중에 touchpad를 disable하는 trick 도 찾아서 써봤는데...

.

.

.

.

.

.

.

booting하는데, 한 5분정도 걸리는 걸보고 내가 뭐한건가... 읖조린 다음

backup해두었던 mac OS 10.7.5로 돌아갔다.


참고 site:

 - How to Create a Bootable Ubuntu USB Drive, for Mac, in OS X

 - How to Enable Wi-Fi on MacBook, Mac Mini, MacBook Air for Ubuntu/Linux OS

 - 파일들.

broadcom-wl-5.100.138-wl_apsta.only.tar.bz2

disable_tpad_while_typing.py

README.fix