LoginSignup
8
10

macOS数値計算用環境構築覚書

Last updated at Posted at 2019-12-15

はじめに

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で以下を実行します.

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で以下を実行します.

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環境を作り直すので個人的には管理しやすいです.

Terminal
# ryeのinstall
brew install rye

もしくは

Terminal
# ryeのinstall
curl -sSf https://rye-up.com/get | bash

使い方などは公式websiteなどを参考にしてください.

Julia

juliaupはJuliaのversion管理をしてくれます.

Terminal
brew install juliaup

※2023/08/09 最新binaryのinstallからjuliaupのinstallに変更しました.

執筆環境の設定 (LaTeX)

MacTeXを入れるとTeX Liveを含めて必要なものは大体入ると思います.

以下を実行します.

Terminal
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とします.

Terminal
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特有の問題があるようです.

Terminal
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環境が全て公開鍵認証なので公開鍵認証のみ記載しています.

鍵の作成

Terminal
mkdir ~/.ssh #なければ
ssh-keygen -t rsa -b 4096 -C "hoge@example.com" -f ~/.ssh/id_rsa

passphraseの設定は任意ですが, 設定が推奨されています.
"hoge@example.com"の部分はcommentなので好きなように変更可能です.

これでserverに公開鍵を置きさえすればsshできるはずです4.

Terminal
ssh hoge@example.com

sshには様々な設定があります. optionによる指定も可能ですが~/.ssh/configに設定を記載するのが一般的です.

~/.ssh/config
Host *
TCPKeepAlive yes
ServerAliveInterval 20
ServerAliveCountMax 5
#ssh-agent用
ForwardAgent yes

ForwardAgentは後述のssh-agent用ですので使わない方は消しても問題ありません.
設定について詳しく知りたい方はこちらを御覧ください.

addressの入力を省略する

addressの入力が面倒な場合, 以下のように~/.ssh/configを設定すればssh exampleの形で接続することが出来ます.

~/.ssh/config
 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に設定を記載します.

~/.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を以下のように設定します.

~/.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

~/.ssh/config
Host *
ForwardAgent yes

を追加します.

次に秘密鍵を登録します:

Terminal
ssh-add -K

これでdefaultの秘密鍵が登録されます. 鍵を指定したい場合は

Terminal
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_config6SendEnv LANG LC_*をcomment outします.

その他

Terminalをctrl+d(あるいはexit)で閉じる

TerminalのPreferences→ShellのWhen the shell exitsを変更します.

gnu-sedを使う

sed -zを使いたくなった場合などはmacOSの場合はinstallが必要です7.
実行commandはgsedになります.

Terminal
brew install gnu-sed 

その他のGNU系のcommandが欲しいとき

ここにbrewのcommandが記載されています.

例えば, seq (gseq)が欲しい場合は

Terminal
brew install coreutils

です.

  1. ちなみにこれとXcodeでC++ compiler, Make, Git, CBLAS/CLAPACKが揃うのでITensorをinstallする環境が整います.

  2. なおLLVM C(++) complierであるClangに対応する, FlangというLLVM Fortran compilerもあります.

  3. installerがpathを通すと思うのでPATH変数は書き換わっているはずなのですが, いつ反映されるかよく分かりませんでした. 自分は最初tlmgrを起動できなったのでpathを自分で通さないといけないのかと思い, 時間があるときにやろうとしばらく放置していました. しかし, いつの間にやらpathが通っており, 追加操作しないままtlmgrが起動するようになってしまいました...

  4. port番号が必要な場合など接続に必要なoptionはserverによって異なると思いますので管理者の方などにご確認ください.

  5. 多段認証の場合でなくてもssh-agentは利用可能です.

  6. OSのversionによって居場所が違いそうです.

  7. gnu-sedをsedとしてinstallする--with-default-namesは使えなくなったようです.

8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10