はじめに
MacBook Proを拾ったので数値計算用途の環境構築を行います.
ほとんど個人的な忘備録です.
(2019/12/26 似たような記事が見つかった...)
詳しくはそれぞれのlink先を参照してください.
やることは
- diskの初期化
- editor (Visual Studio Code) のinstall
- 開発環境の設定 (何を入れるかは目次を見てください)
- 執筆環境の設定 ($\LaTeX$)
- 日本語入力設定
- sshの設定
です (随時更新).
実行環境
macOS Mojave 10.14.3
diskの初期化
前の持ち主の設定が残っていたのでdiskを初期化してOSを入れ直します.
まず, OSを(再)起動して起動画面が出る前から⌘ + rを押し続けOS utilityを起動します.
disk utilityを選択し, 更にdiskを初期化を選択します.
diskのformatが終わったらdisk utilityを終了しOSの再installを選択しOSを入れ直します.
OSが入ったらOS utilityを終了し, OSを起動します.
OSの設定を諸々行うことになりますが, このときApple IDを作成していなければ作成します.
Xcodeをinstallする際にApple IDが必要になります.
最初の一歩 (Terminalの起動)
ほとんどの作業をTerminal上で行います.
Desktop右上の虫眼鏡を押してTerminal
で検索すると見つかります.
editor (Visual Studio Code) のinstall
editorのVisual Studio Code (以下VScode) をinstallします.
公式websiteから落とします.
落としたVisual Studio Code.appをApplications folderにdrug & dropします.
これをやらないと次に行うTerminalからVScodeを起動するための設定を何度もやる羽目になります.
TerminalからVScodeを起動するための設定を行います.
VScodeを起動し, F1でcommand paletteを起動します.
Shell Command: Install 'code' command in PATH command.
を選択します.
Terminalを再起動すればcode
でVScodeが起動します.
開発環境の設定
Xcode
これでBLAS/LAPACKが入ります.
App storeとdeveloper pageから入手する方法があるようです.
App store経由だとApple IDの詳細情報入力が面倒だったのでdeveloper pageから入手します.
developer pageをApple IDを入力して開きます.
downloadしたいversionのXcodeを選択し.xipをdownloadします.
.xipを展開して出てきたXcode.appをdownloadsからapplicationsに移動します.
Command Line Tools for Xcode (Clang, Git, Make)
C++ compilerなど開発に必要なものはだいたいこれで入ります1.
Terminalでxcode-select --install
を実行します.
なお, これでgcc
なども使えますが, 実際はClangが呼ばれるようです.
Homebrew (要Command Line Tools for Xcode)
package manager.
Terminalで以下を実行します.
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
CMake
Homebrewで入ります.
brew install cmake
Fortran (GCC)
Homebrewで入ります2.
brew install gcc
Python3 (Anaconda)
Homebrewで入ります.
pyenv経由でAnacondaを入れます. Terminalで以下を実行します.
brew install pyenv
#pyenvのpathを通します.
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
pyenv install anaconda3-2019.10
#全てのdirectoryでこのanacondaを使う設定を行います.
pyenv global anaconda3-2019.10
今後新しいversionが出た場合や, 古いversionをinstallしたい場合はpyenv install -l
でinstall可能なversionを確認してください.
公式websiteから落として入れることも可能です.
自分がPythonを導入するのはMatplotlibを用いた描画目的であるため, Pythonをmainで開発を行う場合は他の環境管理softwareもご検討ください.
Python3 (Rye)
正直何が一番良いのかよくわかりませんが, Python projectの管理にRyeを使い始めました.
project directory毎にpython環境を作り直すので個人的には管理しやすいです.
# ryeのinstall
brew install rye
もしくは
# ryeのinstall
curl -sSf https://rye-up.com/get | bash
使い方などは公式websiteなどを参考にしてください.
Julia
juliaupはJuliaのversion管理をしてくれます.
brew install juliaup
※2023/08/09 最新binaryのinstallからjuliaupのinstallに変更しました.
執筆環境の設定 (LaTeX)
MacTeXを入れるとTeX Liveを含めて必要なものは大体入ると思います.
以下を実行します.
brew install --cask mactex
#最新版に更新
sudo tlmgr update --self --all
sudo tlmgr paper a4
GUI applicationがいらない場合はbrew install --cask mactex
の代わりにbrew install --cask mactex-no-gui
とします.
brew install --cask mactex-no-gui
#最新版に更新
sudo tlmgr update --self --all
sudo tlmgr paper a4
なお, tlmgr
はTeX Liveのpackage managerです.
command not found
になった場合はpathの設定が反映されていませんので, echo $PATH
などで/Library/TeX/texbin/
にpathが通っているか確認してください3.
VScodeでTeX documentがformatされない場合の対処法
Mojave特有の問題があるようです.
brew install perl
brew install cpanm
cpanm Log::Log4perl Log::Dispatch::File YAML::Tiny File::HomeDir Unicode::GCString
このcommandだけでは動かない可能性がありますので詳細は以下を参考にしてください.
日本語入力設定
入力sourceに日本語を追加します.
System PreferencesからKeyboardのInput Sourcesを選択します.
+を押して日本語を追加します. 必要であれば各種設定を行います.
例えば, Caps Lockにローマ字入力onに切り替えを割り当てることなどができます.
sshの設定 (公開鍵認証)
自分のserver環境が全て公開鍵認証なので公開鍵認証のみ記載しています.
鍵の作成
mkdir ~/.ssh #なければ
ssh-keygen -t rsa -b 4096 -C "hoge@example.com" -f ~/.ssh/id_rsa
passphraseの設定は任意ですが, 設定が推奨されています.
"hoge@example.com"
の部分はcommentなので好きなように変更可能です.
これでserverに公開鍵を置きさえすればsshできるはずです4.
ssh hoge@example.com
sshには様々な設定があります. optionによる指定も可能ですが~/.ssh/config
に設定を記載するのが一般的です.
Host *
TCPKeepAlive yes
ServerAliveInterval 20
ServerAliveCountMax 5
#ssh-agent用
ForwardAgent yes
ForwardAgent
は後述のssh-agent用ですので使わない方は消しても問題ありません.
設定について詳しく知りたい方はこちらを御覧ください.
addressの入力を省略する
addressの入力が面倒な場合, 以下のように~/.ssh/config
を設定すればssh example
の形で接続することが出来ます.
Host example
HostName example.com
User hoge
Host
に接続名, Hostname
にdomain名, User
にuser名を記載します.
これは例として挙げているssh hoge@example.com
と同じことになります.
公開鍵を接続先で使い分ける
鍵を接続先で使い分ける場合, ~/.ssh/config
で鍵の指定を行います.
例えばhoge@example.com
に接続するときには~/.ssh/ide_rsa_example
を使いたい場合, 以下のように~/.ssh/config
に設定を記載します.
Host example
HostName example.com
User hoge
IdentityFile ~/.ssh/id_rsa_hoge
IdentitiesOnly yes
他にもport番号が必要な場合はPort xxxx
を追加とかありますが他の設定はこちらなどを御覧ください.
多段接続の設定
login serverを経由して目的のserverにloginする場合があります.
例としてhoge@login.com
を経由してhoge@example.com
にloginする, というような状況を想定します.
その場合, まずssh hoge@login.com
して, その後ssh hoge@example.com
するようなことになります.
しかし毎回2回sshするのは面倒ですので~/.ssh/config
を以下のように設定します.
Host example
Hostname example.com
User hoge
ProxyCommand ssh -CW %h:%p login
Host login
Hostname login.com
User hoge
これでssh example
で所望のserverまでloginができます.
ssh-agentの設定
多段接続の場合, 上記の設定でsshの回数は減らせてもpassphraseを入力する回数は減らせないため何度も入力する必要があり面倒です.
まず~/.ssh/config
に
Host *
ForwardAgent yes
を追加します.
次に秘密鍵を登録します:
ssh-add -K
これでdefaultの秘密鍵が登録されます. 鍵を指定したい場合は
ssh-add ~/.ssh/id_rsa
としてください. これでpassphrase入力が省略されるようになるはずです5.
言語設定をなんとかする
sshでloginすると/usr/bin/manpath: can't set the locale; make sure $LC_* and $LANG are correct
とか怒られました.
実害はなかったので放置していたら
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = (unset)
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
と怒られ出力がうまく動かない事態が発生してしまいました.
とりあえずmacが悪い.
macのlocale設定をsshで一緒にserverに送っているのが原因みたいなので
etc/ssh/ssh_config
6のSendEnv LANG LC_*
をcomment outします.
その他
Terminalをctrl+d(あるいはexit
)で閉じる
TerminalのPreferences→ShellのWhen the shell exitsを変更します.
gnu-sedを使う
sed -z
を使いたくなった場合などはmacOSの場合はinstallが必要です7.
実行commandはgsed
になります.
brew install gnu-sed
その他のGNU系のcommandが欲しいとき
ここにbrewのcommandが記載されています.
例えば, seq (gseq)
が欲しい場合は
brew install coreutils
です.
-
ちなみにこれとXcodeでC++ compiler, Make, Git, CBLAS/CLAPACKが揃うのでITensorをinstallする環境が整います. ↩
-
なおLLVM C(++) complierであるClangに対応する, FlangというLLVM Fortran compilerもあります. ↩
-
installerがpathを通すと思うのでPATH変数は書き換わっているはずなのですが, いつ反映されるかよく分かりませんでした. 自分は最初
tlmgr
を起動できなったのでpathを自分で通さないといけないのかと思い, 時間があるときにやろうとしばらく放置していました. しかし, いつの間にやらpathが通っており, 追加操作しないままtlmgr
が起動するようになってしまいました... ↩ -
port番号が必要な場合など接続に必要なoptionはserverによって異なると思いますので管理者の方などにご確認ください. ↩
-
多段認証の場合でなくてもssh-agentは利用可能です. ↩
-
OSのversionによって居場所が違いそうです. ↩