Help us understand the problem. What is going on with this article?

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

はじめに

Mac Book Proを拾ったので数値計算用途の環境構築を行います.
ほとんど個人的な忘備録です.
(2019/12/26 似たような記事が見つかった... http://taklab-blog.blogspot.com/2019/12/macos-catalina-10152.html)

詳しくはそれぞれのlink先を参照してください.

やることは

  • diskの初期化
  • editor (Visual Studio Code) のinstall
  • 開発環境の設定 (何を入れるかは目次を見てください)
  • 執筆環境の設定 (LaTeX)
  • 日本語入力設定
  • sshの設定

です (随時更新).

実行環境

macOS Mojave 10.14.3

diskの初期化

前の持ち主の設定が残っていたのでdiskを初期化してOSを入れ直します.
まず, OSを(再)起動して起動画面が出る前からcommand + rを押し続けOS utilityを起動します.
disk utilityを選択し, 更にdiskを初期化を選択します.
diskのformatが終わったらdisk utilityを終了しOSの再installを選択しOSを入れ直します.
OSが入ったらOS utilityを終了し, OSを起動します.
http://vdeep.net/initialize-mac#Mac-2

OSの設定を諸々行うことになりますが, このときApple IDを作成していなければ作成します. Xcodeをinstallする際にApple IDが必要になります.

最初の一歩 (terminalの起動)

ほとんどの作業をterminal上で行います.
Desktop右上の虫眼鏡を押してterminalで検索すると見つかります.

editor (Visual Studio Code) のinstall

editorのVisual Studio Code (以下VScode) をinstallします.
公式ページ https://code.visualstudio.com/docs/?dv=osx から落とします.

落とした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が起動します.
https://code.visualstudio.com/docs/setup/mac

開発環境の設定

Xcode

これでBLAS/LAPACKが入ります.

App storeとdeveloper pageから入手する方法があるようです.
App store経由だとApple IDの詳細情報入力が面倒だったのでdeveloper pageから入手します.
https://developer.apple.com/download/more/?name=Xcode をApple IDを入力して開きます.
downloadしたいversionのXcodeを選択し.xipをdownloadします.
.xipを展開して出てきたXcode.appをdownloadsからapplicationsに移動します.
https://fukatsu.tech/install-xcode

Command Line Tools for Xcode (Clang, Git, Make)

C++ compilerなど開発に必要なものはだいたいこれで入ります1.

terminalでxcode-select --installを実行します.
https://qiita.com/motofumi/items/0f2e7ae1b852f118fe95

なお, これでgccなども使えますが, 実際はClangが呼ばれるようです.
https://qiita.com/kuboshu83/items/265264551193da079ad2

Homebrew (要Command Line Tools for Xcode)

package manager.
terminalで以下を実行します.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

https://brew.sh/index_ja.html

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

https://qiita.com/aical/items/2d066801a7464a676994

今後新しいversionが出た場合や, 古いversionをinstallしたい場合はpyenv install -lでinstall可能なversionを確認してください.

公式ページ https://www.anaconda.com/distribution/#macos から落として入れることも可能です.
https://weblabo.oscasierra.net/python-anaconda-install-macos/

自分がPythonを導入するのはMatplotlibで描画目的であるため, Pythonをmainで開発を行う場合は他の環境管理softwareもご検討ください.
https://qiita.com/KRiver1/items/c1788e616b77a9bad4dd

Julia

Homebrewで入れてpathを通します.

brew cask install Julia
echo export PATH=\$PATH:/Applications/Julia-1.3.app/Contents/Resources/Julia/bin >> ~/.bash_profile
source ~/.bash_profile

versionの部分は適宜変更してください.
公式ページ https://julialang.org/downloads/ からdownloadすることも可能です.
https://qiita.com/SatoshiTerasaki/items/41df235328badcf382eb

執筆環境の設定 (LaTeX)

MacTeXを入れるとTeX Liveを含めて必要なものは入ると思います.
https://texwiki.texjp.org/?MacTeX
https://doratex.hatenablog.jp/entry/20190502/1556775026

以下を実行します.

brew cask install mactex
#最新版に更新
sudo tlmgr update --self --all
sudo tlmgr paper a4

GUI applicationがいらない場合はbrew cask install mactex
の代わりにbrew cask install mactex-no-guiとします.

なお, tlmgrはTeX Liveのpackage managerです.
command not foundになった場合はpathの設定が反映されていませんので, echo $PATHなどで/Library/TeX/texbin/にpathが通っているか確認してください3.

日本語入力設定

入力sourceに日本語を追加します.
system PreferencesからKeyboardのInput Sourcesを選択します.
+を押して日本語を追加します. 必要であれば各種設定を行います.
例えば, Caps Lockにローマ字入力onに切り替えを割り当てることなどができます.
https://support.apple.com/ja-jp/guide/japanese-input-method/jpim10267/6.2.1/mac/10.14

sshの設定 (公開鍵認証)

自分のserver環境が全て公開鍵認証なので公開鍵認証のみ記載しています.

鍵の作成

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

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

これで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ようですので使わない方は消しても問題ありません.
設定について詳しく知りたい方はこちらを御覧ください.

adressの入力を省略する

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
bash:~/.ssh/config
Host *
ForwardAgent yes

を追加します.

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

terminal
ssh-add -K

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

terminal
ssh-add ~/.ssh/id_rsa

としてください. これでpassphrase入力が省略されるようになるはずです5.
https://qiita.com/isaoshimizu/items/84ac5a0b1d42b9d355cf

言語設定をなんとかする

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します.
https://qiita.com/bump_of_kiharu/items/86ceb65e09049959bc90

その他

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

TerminalのPreferences→ShellのWhen the shell exitsを変更する.
https://ocs.hatenadiary.org/entry/20111010/1318209350


  1. ちなみにこれとXcodeでC++ compiler, Make, Git, CBLAS/CLAPACKが揃うのでITensorをinstallする環境が整います. https://itensor.org/docs.cgi?vers=cppv3&page=install 

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

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

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

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

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

ultimatile
quantum many-body systems
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした