Archive from 1月, 2018
1月 6, 2018 - コンピューター    Jupyter notebookとjuliaなどをインストールする はコメントを受け付けていません。

Jupyter notebookとjuliaなどをインストールする

brewのアップデート

 仕事場とおうちのMacBook Pro(macOS Sierra 10.12.6)に、Jupyter notebookとjuliaなどをインストールしたのでメモ。

 最近は普通のアプリばっかりインストールしてるしTeXはインストーラがあるしで、パッケージからのインストールをずっとしていなかった。その間にOSのバージョンも上がったりしてるので、まずはbrewのアップデートから。なお、開発ツールのXCodeは最新版をインストール済みなので、インストールしていない場合はまずApp Storeからインストールしておくと後が楽かも。


$ brew doctor

を実行して、特にアップデートせよというメッセージが出なければ次の作業はすっ飛ばして参考サイトの通りに実行すれば良い。私の環境では、Warningがいくつか出た後、


You haven't updated for at least 24 hours. This is a long time in brewland!
To update Homebrew, run `brew update`.

と表示されたので、まずは素直に、


$ brew update

を実行。すると、


You should probably change the ownership and permissions of /usr/local
back to your user account.
  sudo chown -R $(whoami):admin /usr/local

と表示された。/usr/localの所有者って、rootにしておくのかなと思っていたのだけど、どうも違うらしい。実は、長く使っている間にroot:admin, root:wheel, apj:admin(私)が/usr/local以下に混在している状態になっていたので、この際、root:wheelに統一しようかと思って試してみたのだけど、rootを所有者にした後で、root権限でbrewを実行しようとするとできなくなっていた。仕方がないのでまたも素直に、


$ sudo chown -R $(whoami):admin /usr/local

を実行。その後で、


$ brew update

を実行すると、暫く待たされた後でアップデートが完了した。/usr/local/Homebrew以下にbrewの関連ファイルが置かれた状態になる。which brewすると/usr/local/bin/brewが出るが、これはシンボリックリンクで、実体は/usr/local/Homebrew/bin/brewである。

これでbrewのアップデートが終わったので、チェックのために


$ brew doctor

を実行すると、


/usr/local/bin/brew: line 9: /usr/local/bin/readlink: Bad CPU type in executable
/usr/local/bin/brew: line 9: /usr/local/bin/readlink: Bad CPU type in executable
/bin/bash: /usr/local/Library/Homebrew/brew.sh: No such file or directory

となって動かない。どうも、システムの方は64-bitで動いているのに、/usr/local/bin/readlinkが32-bitで動いているということらしい。変なものを動かすのもアレなので、


$ sudo find / -name "readlink" -ls

して探してみると、


421811       24 -rwxr-xr-x    1 root             wheel               27456  7 15 13:27 /usr/bin/readlink
1153733       32 -rwxrwxrwx    1 apj              admin               13772  3 10  2004 /usr/local/bin/readlink

が見つかった。多分、/usr/bin/readlinkが正解で、/usr/local/bin/readlinkは2004年のもの……ってめっちゃ古い!古いやつが入ってる理由は忘れたが、LaTeXインストールの関係でexport PATHをした時に/usr/binよりも/usr/local/binを先に見に行くようになってしまったので古い方を先に見つけてしまうということになったらしい。そこで、(削除しちゃっても問題ないんだろうけどとりあえず)


$ mv /usr/local/bin/readlink /usr/local/bin/readlink.2004.old

と名前を変えてからwhith readlinkすると、/usr/bin/readlinkを見つけてくれるようになった。これで、エラーは出なくなった。再度、brew doctorすると、/usr/local/libにbrewで管理してないライブラリがあってトラブルの元だと警告されるが、とりあえず無視し、


Warning: Xcode alone is not sufficient on Sierra.
Install the Command Line Tools:
  xcode-select --install

に対応。コマンドラインからxcode-select –installを実行すると、「”xcode-select”コマンドを実行するにはコマンドライン・デベロッパ・ツールが必要です。ツールを今すぐインストールしますか?」という表示が別ウィンドウで開くので、インストールをクリック。XCodeを入れていなければ、XCodeも一緒にインストールするボタンもあるのでそちらをクリックすれば良い。


Warning: Your XQuartz (2.7.7) is outdated.
Please install XQuartz 2.7.11 (or delete the current version).
XQuartz can be updated using Homebrew-Cask by running
  brew cask reinstall xquartz

と、


Warning: Some installed formula are missing dependencies.
You should `brew install` the missing dependencies:
  brew install pcre

には対応しておく。いずれもそれぞれ一番下の行をコマンドラインにコピペしてEnterを押すだけ。


$ brew prune

も実行しておく。

Python, anacondaのインストール

やり方はhttps://qiita.com/Haji-Fuji/items/9e3d6ca46eb02f3c241fに書いてある通り。まずはpyenvからインストール。以下の内容を1行ずつコピペして実行。


$ brew install pyenv
$ brew install pyenv-virtualenv

環境変数の登録。


$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

登録したら、shellに設定を読み込ませる。


$ source .bash_profile

pyenvを使ってanacondaなどをインストール。以下を1行ずつコピペして実行。


$ pyenv install 3.6.0

$ pyenv install anaconda3-4.3.1

$ pyenv global anaconda3-4.3.1
$ conda create --name py3.6.0 python=3.6.0
$ pyenv local anaconda3-4.3.1/envs/py3.6.0
$ pyenv global system
$ source $PYENV_ROOT/versions/anaconda3-4.3.1/bin/activate py3.6.0

Jupiter Notebookのインストール

コマンドラインから1行ずつ以下を入力して実行するだけ。


$ pip install jupyter
$ pip install "ipython[notebook]"

起動するには、


$ jupyter notebook

終了するにはCtrl-Cを入力。

gfortranとcmakeのインストール

juliaをインストールするには、gfortranとcmakeが必要になる。gfortranはgccに統合されたので、gccをインストールすれば自動的にgfortranも使えるようになる。


$ brew install gcc

して、whitch gfortranを実行し、/usr/local/bin/gfortranと出ることを確認。cmakeの方は、


$ brew install cmake

で良い。

juliaのインストール

https://qiita.com/phigasui/items/8af41d1bcbe7ef276cfeを参考にした、というかほとんどこのサイトの通り。


$ sudo xcodebuild -license

を実行すると、license agreementが表示されるので、spaceを叩いて最後まで読んで、’q’で抜けたあと、agreeするかどうかきかれるので、agreeタイプしてEnter。

juliaをもらってくる。


$ git clone https://github.com/JuliaLang/julia.git

ダウンロードが終わったら、


$ cd julia
$ git tag

スペースを叩いて最後まで見ると、v0.6.2がある。


$ git checkout v0.6.2

次に、


$ system_profiler SPHardwareDataType | grep Cores

を実行すると、ウチの環境ではTotal Number of Cores: 4と出たので、上記サイトのアドバイスに従って


$ make -j4

を実行。ただ、makeする前にターミナルのログをクリアするか、新しいターミナルウィンドウでやった方が良い。コンパイル時間は長いしメッセージが長大で最長不倒メッセージかこれは、って勢いなので、途中でどんなエラーが出たかは後から検索して探すことになる。だからクリアしてからやらないと、これ以前の手順で出たエラーまでひっかかって面倒臭い。別の仕事をしてお茶淹れて休憩して……くらい待てば終了。

コンパイルが完了すると、$Home/julia/usr/bin/juliaができてて、これが実体。

パスを通すために、$Homeに戻り、.bash_profileの最後に、


source ~/.bashrc

を追加する。~./bashrcには、


alias julia='~/julia/usr/bin/julia'

と書いておく。書き換えたら忘れず、source ~./bash_profile。juliaと入力して、実行されることを確認する。抜ける時はCtrl-D。

Jupyter Notebookとの連携

上記サイトの手順通りで、juliaから行う。まずjuliaを起動し、ターミナルで


julia> Pkg.update()
julia> Pkg.add("IJulia")

となるように1行ずつ入力して実行。インストールできているかどうかのチェックは、


$ jupyter kernelspec list
Available kernels:
Available kernels:
  julia-0.6    $Home/Library/Jupyter/kernels/julia-0.6
  python3     $Home/.pyenv/versions/anaconda3-4.3.1/envs/py3.6.0/share/jupyter/kernels/python3
$ jupyter notebook

右上のNewをクリックすると、JuliaとPythonが選べるようになっていれば多分OK。