この記事について
mac book pro(2019)(OSはmac OS Mojave 10.14.6)の環境構築ガイドです.
理系大学生(物理系?)向けです.
この夏, 7年間お世話になったmac book proからmac book pro(2019)に買い換え, 一から環境構築することになったので, そのメモです.
- Python3
- VTK
- OpenCV
- ROOT(cernの解析ソフト)
が使える環境を目指します.
(2020.02.11追記)
この記事では brew
とbuildしたものが被らないようにするために, buildしたものを brew
にむりやり認識させようとしますが, あんまりうまく行ってる気がしないので, 気にしない方が得策な気がします.
brew
に認識させようと骨を折る部分は適宜無視してください.
Xcodeのインストール
まずはXcode.
AppStoreからXcodeをインストール(Xcode自体はあんまり使わないけど, 一応インストール).
Terminalでxcode-select --install
でcommand line toolsをインストール.
Homebrewのインストール
Homebrewの公式に従って, Terminalで
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
を実行.
homebrew-cask
もこれで使えるようになる.
Homebrew, Homebrew Cask で必要なアプリケーションをインストール
Homebrewで以下をインストール.
- cmake
Homebrew Caskで以下をインストール
- Google Chrome
- Slack
- atom
- xquartz
Gitのインストール, 設定
brew install git
を実行.
gitの設定
$ git --global user.name "your name"
$ git --global user.email "your_email@example.com"
$ git config --global color.ui auto
ssh keyの生成.
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f "$HOME/.ssh/github_rsa"
$ eval "$(ssh-agent -s)"
$HOME/.ssh/config
を作成し, 以下の内容を書き込む.
Host github github.com
AddKeysToAgent yes
UseKeychain yes
HostName github.com
IdentityFile ~/.ssh/github_rsa
User git
ssh-add
を実行.
$ ssh-add -K ~/.ssh/github_rsa
githubにssh keyを追加.
$ pbcopy < ~/.ssh/github_rsa.pub
クリップボードにコピーした公開鍵の内容をgithubのSSH keysにペーストする.
$ ssh -T git@github.com
として
Hi your_github_account_name! You've successfully authenticated, but GitHub does not provide shell access.
と表示されればOK.
C/C++開発環境
学生の特権を使ってiccを入れる.
ここからC++ macOSを選んで, インストーラをダウンロードして, インストーラの指示に従って, インストール.
mkl
, tbb
も一緒にインストールされる.
intelpython3
も一緒にインストールしたけど, これ使わない気がする...
mkl
, tbb
の環境変数を設定するために.bash_profile
に
source /opt/intel/mkl/bin/mklvars.sh
source /opt/intel/tbb/bin/tbbvars.sh
を追加(これをしないとnumpy
, scipy
が使えなかったりする).
iccだとbuildできないものもあるので, gccも入れる.
$ brew install gcc
Fortran開発環境
iccと同じようにifortranを入れる.
ここからFortran macOSを選んで, インストーラをダウンロードして, インストーラの指示に従って, インストール.
gfotran
は$ brew install gcc
で一緒にインストールされてる.
Python開発環境
今まではAnacondaを利用していたけど, 他の環境を壊しちゃったり, Anacondaとbrewで重複して入っちゃったパッケージがあったりとか, ROOTがAnaconda Pythonでは使えなかったりとか... 大変なので使うのやめます.
普通にPythonとpipで環境構築します.
Python3のインストール
まずはPython3のインストール(イマドキPython2は使いませんよ).
$ brew install python
pip
も一緒に入るので大丈夫.
numpy, scipyのインストール
普通にpip
でnumpy
, scipy
をインストールすると, openblas
が使われるので遅い.
なので, mkl
とリンクさせてbuildする.
$HOME
に以下の内容の.numpy-site.cfg
を作る.
[mkl]
library_dirs = /opt/intel/mkl/lib
include_dirs = /opt/intel/mkl/include
mkl_libs = mkl_rt
lapack_libs =
また, $HOME
に次の内容で.config/pip/pip.conf
を作る.
[install]
no-binary = numpy,scipy
[wheel]
no-binary = numpy,scipy
これでコンパイル済みのバイナリをインストールすることなく, buildされるようになる.
あとは普通にnumpy
,scipy
をインストールする.
pip install numpy
pip install scipy
Jupyterのインストール, 設定
jupyter labのインストール
$ pip install jupyterlab
だいたいこれでいける.
あとは細かな設定.
$ jupyter notebook --generate-config
を実行して, ~/.jupyter/jupyter_notebook_config.py
を作成.
これをちょっと編集する.
safariとjupyterの相性がよろしくないので,
c.NotebookApp.browser = '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome %s'
としてGoogle Chromeで開くようにする.
ちなみに--new-window
とつけると, 新しくウインドウで開く.
jupyter lab
はnode
を使うので,
brew install node
を実行.
jupyter lab
でR
を使いたい場合は, R
を起動して, R
のインタプリンタで以下を実行.
> install.packages('IRkernel')
> IRkernel::installspec()
その他のインストール
- pandas
- matplotlib
- plotly
- Pillow
- Cython
- PyQt5
をインストール.
plotly
をjupyter lab
で使えるようにするためには, 次をインストールする必要がある.
jupyter labextension install @jupyterlab/plotly-extension
ROOTのインストール(build)
$HOME/ROOT
ディレクトリを作る.
$HOME/ROOT
下のsrc
にROOT
のソースをおく.
$ git clone https://github.com/root-project/root.git src
$HOME/ROOT
でcmakeを実行.
このとき, PYTHON_EXECUTABLE
でpython3
を指定する.
$ cmake src -D PYTHON_EXECUTABLE=/usr/local/bin/python3
必要に応じてccmake src
を実行してからmake.
$ sudo make -j8
このとき, コンパイラの関係で失敗するときは, 以下の内容でclang.cmake
をつくり, cmake -C clang.cmake -D PYTHON_EXECUTABLE=/usr/local/bin/python3 src
を実行.
set(CMAKE_C_COMPILER "/usr/bin/clang" CACHE string "clang compiler" FORCE)
set(CMAKE_CXX_COMPILER "/usr/bin/clang++" CACHE string "clang++ compiler" FORCE)
make install
をする必要はないかな.
.bash_profile
に次を追加.
source "$HOME/root/bin/thisroot.sh"
これでROOTが使えるようになる.
jupyter
でROOTを使いたい場合は,
$ cp -r $ROOTSYS/etc/notebook/kernels/root /Users/$USER/Library/Jupyter/kernels/
を実行する.
ROOTとbrewとの共存(2019.12.18追記)
brew doctor
で
Warning: "config" scripts exist outside your system or Homebrew directories.
`./configure` scripts often look for *-config scripts to determine if
software packages are installed, and which additional flags to use when
compiling and linking.
Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew-provided
script of the same name. We found the following "config" scripts:
/Users/foobar/root/bin/afterimage-config
/Users/foobar/root/bin/root-config
とWarningが出るのが気になる人(i.e. 僕)は .bash_profile
に次を追加することで brew doctor
を黙らせることができます(小手先の技術...).
alias brew="env PATH=${PATH/${HOME}\/root\/bin:/} brew"
Qtのインストール
qtの公式からOpen Source版をダウンロードしてきて, あとはインストーラの指示に従ってインストール.
フルでインストールすると, 20GBくらいになるので, 使いそうにないiOS(これだけで9GB...)やAndroid用のものはインストールしない.
後のOpenCVとかVTKとかのbuildでcmakeがQtを認識できるように
export CMAKE_PREFIX_PATH=/Users/foobar/Qt/5.12.4/clang_64/lib/cmake
を.bash_profile
に追加する.
OpenCVのインストール(build)
opencvとopencv_contribのソースをgitで落としてくる.
$ git clone https://github.com/opencv/opencv.git
$ git clone https://github.com/opencv/opencv_contrib.git
そして, cmakeでconfigureしてmake
, make install
のいつもの流れ.
$ cd opencv
$ mkdir build
$ cd build
$ cmake `cd ..; brew diy --version=4.1.1` \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules/ \
-D BUILD_EXAMPLES=ON \
-D WITH_QT=ON \
-D Qt5Core_DIR=/Users/foobar/Qt/5.12.4/clang_64/lib/cmake/Qt5Core/ \
-D Qt5Gui_DIR=/Users/foobar/Qt/5.12.4/clang_64/lib/cmake/Qt5Gui/ \
-D Qt5Test_DIR=/Users/foobar/Qt/5.12.4/clang_64/lib/cmake/Qt5Test/ \
-D Qt5Widgets_DIR=/Users/foobar/Qt/5.12.4/clang_64/lib/cmake/Qt5Widgets/ \
-D Qt5Concurrent_DIR=/Users/foobar/Qt/5.12.4/clang_64/lib/cmake/Qt5Concurrent/ \
-D Qt5OpenGL_DIR=/Users/foobar/Qt/5.12.4/clang_64/lib/cmake/Qt5OpenGL/ \
-D WITH_OPENGL=ON \
-D Qt5_DIR=/Users/foobar/Qt/5.12.4/clang_64/ ..
このあと$ ccmake ..
でBUILD_EXAMPLES
をONに, MKL
やTBB
, Python
の設定がうまくできてるか確認してから,
$ make -j8
$ make install
最後にbrew link opencv
.
VTKのインストール(build)
必要かもしれないhdf5
, netcdf
をインストール.
$ brew install hdf5
$ brew install netcdf
$HOME
にvtkのディレクトリを作り, sourceをgitで落としてくる.
$ mkdir vtk
$ git clone https://github.com/Kitware/VTK.git src
git checkout refs/tags/v8.2.0
とした方が良いのかもしれないけど, こうすると, bugがある(Pythonでimport vtk
をすると失敗する.詳しくはここ)のでmaster
のままでbuildする.
そしてcmake
.
$ cmake -D CMAKE_INSTALL_PREFIX=/usr/local/Cellar/vtk/8.2.0 \
-D PYTHON_EXECUTABLE=/usr/local/bin/python3 \
-D VTK_WRAP_PYTHON:BOOL=ON \
src
ccmakeでもうちょっとConfigure
$ ccmake src
build examples
やVTK_Group_Qt
をONにしてc
でConfigure.
$ make -j8
$ make install
最後にbrew link.
$ brew link vtk
ParaViewのインストール
5.7.0がRC版なので, 5.6.2を公式からインストール.
homebrew caskのやつはGUIがイマイチ(見た目が古かった)だったのでやめました.
buildしないのかって?
結構大変なんすよ...
brewとbuildしたOpenCV, VTKの共存(2019.12.18追記)
brew diy
, brew link
で OpenCV
と VTK
を brew
に認識させてますが, brew upgrade
により, せっかくbuildしたものが台無しになる可能性があります.
brew upgrade
の代わりに
$ brew outdated | awk '{print $1}' | grep -v -e opencv -e vtk | xargs brew upgrade
とすることで, OpenCV
と VTK
を除いたパッケージだけをupgradeできます.
(...めんどくさい...もっといい方法ないかな)
brew doctor
を走らせたときに
$ brew doctor
Warning: Some installed formulae are missing dependencies.
You should `brew install` the missing dependencies:
brew install ceres-solver gflags glog ilmbase metis numpy openexr pyqt sip suite-sparse tbb
とか, brew missing
を走らせたときに
$ brew missing
opencv: gflags glog metis suite-sparse ceres-solver numpy ilmbase openexr tbb
vtk: sip pyqt
とか出ますが, これが気になる人(i.e. 僕)で, 二重で入れたくない(例: numpyとかをpipとbrewの二重で入れたくない, tbbをiccとbrewの二重で入れたくない)人(i.e. 僕)は
$ mkdir /usr/local/Celler/numpy
$ mkdir /usr/local/Celler/numpy/1.17.4
$ brew link numpy
って感じで, /usr/local/Celler/<Package名>/<Version>
という空ディレクトリを作って brew link <Package名>
を実行すること, つまりbrewに勘違いさせること(小手先の技術...)で, とりあえず brew doctor
を黙らせることができます.
TeX環境の構築
basictexとghostscriptをインストール.
$ brew cask install basictex
$ brew install ghostscript
アップデートしてから日本語を使えるようにする.
$ sudo tlmgr update --self --all
$ sudo tlmgr paper a4
$ sudo tlmgr install collection-langjapanese
ヒラギノを使えるようにする.
$ sudo tlmgr repository add http://contrib.texlive.info/current tlcontrib
$ sudo tlmgr pinning add tlcontrib '*'
$ sudo tlmgr install japanese-otf-nonfree japanese-otf-uptex-nonfree ptex-fontmaps-macos cjk-gs-integrate-macos
$ sudo tlmgr install cjk-gs-integrate adobemapping
$ sudo cjk-gs-integrate --link-texmf --cleanup
$ sudo cjk-gs-integrate-macos --link-texmf
$ sudo mktexlsr
sudo kanji-config-updmap-sys --jis2004 hiragino-highsierra-pron
TeXshop, latexitをインストール.
$ brew cask install texshop
$ brew cask install latexit
texshopの設定を開いてtexwikiを参考にして設定する.
ユーティリティー
Terminal起動のショートカット設定
- Automater → クイックアクション.
- アプリケーションを起動, Terminalを起動を選択. ワークフローが受け取る項目を入力なしに設定.
-
ComeOnTerminal
の名前で保存. - システム環境設定 → キーボード → ショートカット → サービス → 一般 →
ComeOnTerminal
→ ショートカットキー(ctrl + option + t)を追加.
Automatorスクリプトは~/Library/Services/ComeOnTerminal.workflow
にある.
アプリケーションを起動中はそのアプリケーションのショートカットが優先されるため, Terminalが起動しないことがある.
2019.10.15 追記
この方法だとすでにTerminalが開かれていた場合にショートカットが効かない.
これが気にいらない場合には, 2. において「アプリケーションを起動」ではなく, 「シェルスクリプトを実行」を選択し, open -a Terminal $HOME
と書けばよい.
そのあとは同じ.
Touch BarからSiriを消す
Touch BarにSiriがいるのなんか嫌.
間違って押しちゃいそうになるし...
- システム環境設定 → キーボード → Touch Barをカスタマイズ.
- Siriを消す.
フォントRictyのインストール
Ricty Diminishedの公式からRicty Diminishedをダウンロードしてインストール.
Rictyは前のMacBookProで生成したものを移植(サボりました...).
参考
- Generating a new SSH key and adding it to the ssh-agent
- Adding a new SSH key to your GitHub account
- IRkernel/IRkernel
- ROOT for High-Energy Astrophysics (RHEA)
- ROOT
- JupyROOT
- Building ROOT
- Install and Build ROOT
- Linuxbrew 若しくは Homebrew を用いた野良ビルドパッケージの管理手法
- OpenCV Installation in Linux
- OS X El CapitanにOpenCV最新版をインストールする手順 without Homebrew
- Install OpenCV 4.0.1 from Source on MacOS with Anaconda Python 3.7 to Use SIFT and SURF
- Install OpenCV4 on macOS
- VTK/Configure and Build
- texliveのセットアップ
- ヒラギノフォントのセットアップ