はじめに
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_config6の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によって居場所が違いそうです. ↩