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。