Open11

Macの環境設定まとめ

やまけんやまけん

Big Surで環境構築

社用のMacbook Pro (15inch 2018)をBig SurにUpdateして数週間。よく固まるようになってしまったのです。そんな訳で、再インストールを決意!私物のMacBook (Retina, 12-inch, Early 2016)も合わせて環境を構築することとした。

取り敢えずインストール

(上の手順があるので実際はやってないです)

インストールの詳細はそれぞれ参照ってことで省略。
アプリはリカバリーで戻ってくると思っていたけど、Homebrewまで戻ってきてた。
結構色々戻ってくるなーと関心したり。調子が悪くならないことを祈ろう。

17時過ぎ。時間かかり過ぎた。仕事できてない(泣)

結局

Macの調子が日々悪くなって、新たに届いた次第。
このメモを見ながら構築できたのですごく役にたったけど。まだまだ改善の余地はあるので今後も環境関連を追加記述して行きます。

やまけんやまけん

Python

標準の2系もあるけど、多数のバージョンを切り替えて使いたい。
そんな訳で、まずは

pyenvをインストール

% brew install pyenv

pyenvの環境設定

~/.zshrc
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"
fi

設定反映のため

% source ~/.zshrc

インストール可能なvarを確認

% pyenv install -list

各種VerのPythonをインストール

% pyenv install 3.9.0

現時点ではインストールできず、俺はこの方法でインストールした。
https://teratail.com/questions/309549
きっとそのうち対応されると思う。

% pyenv versions
* system (set by /Users/ken/.pyenv/version)
  3.8.6
  3.9.0

インストールできていることを確認して

% pyenv global 3.9.0
% python -V
Python 3.9.0

切り替わることも確認。

やまけんやまけん

Node.js

これも複数のVerを使い分ける必要がある訳で、まずは

nodebrewをインストール

$ brew install nodebrew

確認してみる

% nodebrew -v
nodebrew 1.0.1

Usage:
    nodebrew help                         Show this message
    nodebrew install <version>            Download and install <version> (from binary)
    nodebrew compile <version>            Download and install <version> (from source)
    nodebrew install-binary <version>     Alias of `install` (For backword compatibility)
    nodebrew uninstall <version>          Uninstall <version>
    nodebrew use <version>                Use <version>
    nodebrew list                         List installed versions
    nodebrew ls                           Alias for `list`
    nodebrew ls-remote                    List remote versions
    nodebrew ls-all                       List remote and installed versions
    nodebrew alias <key> <value>          Set alias
    nodebrew unalias <key>                Remove alias
    nodebrew clean <version> | all        Remove source file
    nodebrew selfupdate                   Update nodebrew
    nodebrew migrate-package <version>    Install global NPM packages contained in <version> to current version
    nodebrew exec <version> -- <command>  Execute <command> using specified <version>

Example:
    # install
    nodebrew install v8.9.4

    # use a specific version number
    nodebrew use v8.9.4

nodebrew(Node.js)の環境を設定

% nodebrew setup
Fetching nodebrew...
Installed nodebrew in $HOME/.nodebrew

========================================
Export a path to nodebrew:

export PATH=$HOME/.nodebrew/current/bin:$PATH
========================================

そしてPATH設定を追加

~/.zshrc
export PATH=$HOME/.nodebrew/current/bin:$PATH

ここからNode.js本体のインストールです。
ますはインストール可能なバージョンを確認しましょう。

% nodebrew ls-remote
v0.0.1    v0.0.2    v0.0.3    v0.0.4    v0.0.5    v0.0.6

v0.1.0    v0.1.1    v0.1.2    v0.1.3    v0.1.4    v0.1.5    v0.1.6    v0.1.7
v0.1.8    v0.1.9    v0.1.10   v0.1.11   v0.1.12   v0.1.13   v0.1.14   v0.1.15
v0.1.16   v0.1.17   v0.1.18   v0.1.19   v0.1.20   v0.1.21   v0.1.22   v0.1.23
v0.1.24   v0.1.25   v0.1.26   v0.1.27   v0.1.28   v0.1.29   v0.1.30   v0.1.31
v0.1.32   v0.1.33   v0.1.90   v0.1.91   v0.1.92   v0.1.93   v0.1.94   v0.1.95
v0.1.96   v0.1.97   v0.1.98   v0.1.99   v0.1.100  v0.1.101  v0.1.102  v0.1.103
v0.1.104
(以下省略)

インストール可能なバージョンが出力されます。

Node.jsをインストールする。

nodebrew install <バージョン番号>

です。バージョン番号はls-remoteで取得できるものから選択します。
また、以下の設定も可能です。

コマンド 意味
nodebrew install latest 最新版をインストール
nodebrew install stable 安定版をインストール
たとえば
% nodebrew install latest
Fetching: https://nodejs.org/dist/v15.5.0/node-v15.5.0-darwin-x64.tar.gz
######################################################################### 100.0%
Installed successfully
% nodebrew install stable
Fetching: https://nodejs.org/dist/v14.15.3/node-v14.15.3-darwin-x64.tar.gz
######################################################################### 100.0%
Installed successfully

インストール済みのバージョンを確認

% nodebrew list
v14.15.3
v15.5.0

current: none

current: noneは有効化された(使用する)Verの設定がないということ

有効化する

nodebrew use <バージョン番号>

listで得ることができたインストール済みのバージョン番号から使用するものを設定する。

% nodebrew use v14.15.3
use v14.15.3

実際機能するNode.jsのバーションを確認する

% node -v
v14.15.3

また

%  nodebrew ls
v14.15.3
v15.5.0

current: v14.15.3

となっている。

Node.jsのアンインストール

nodebrew uninstall <バージョン番号>

参考

https://www.webdesignleaves.com/pr/jquery/node_installation_mac.html

nodeenv

複数のバージョンを同時に使用したい。こちらなら出来そうなので変更してみる。

インストール

$ git clone git://github.com/nodenv/nodenv.git ~/.nodenv

環境設定

.zshrcに追加

export PATH="$HOME/.nodenv/bin:$PATH"
eval "$(nodenv init -)"

plug-inのインストール

nodenv/node-build

  • nodenv install nodenv uninstall が使えるようになる。

nodenv/node-build-update-defs

  • nodenv環境下のインストール可能バーションを更新する。
$ git clone https://github.com/nodenv/node-build.git ~/.nodenv/plugins/node-build
$ git clone https://github.com/nodenv/node-build-update-defs.git ~/.nodenv/plugins/node-build-update-defs

nodenv initが必要(手っ取り早くShellの再起動)

確認してみる。

$ nodenv 
nodenv 1.4.0+3.631d0b6
Usage: nodenv <command> [<args>]

Some useful nodenv commands are:
   commands    List all available nodenv commands
   local       Set or show the local application-specific Node version
   global      Set or show the global Node version
   shell       Set or show the shell-specific Node version
   install     Install a Node version using node-build
   uninstall   Uninstall a specific Node version
   rehash      Rehash nodenv shims (run this after installing executables)
   version     Show the current Node version and its origin
   versions    List installed Node versions
   which       Display the full path to an executable
   whence      List all Node versions that contain the given executable

See `nodenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/nodenv/nodenv#readme

インストール可能なバージョンの確認

nodenv install --list

$  nodenv install --list
0.1.14
0.1.15
0.1.16
0.1.17
0.1.18
0.1.19
(以下省略)

インストール

nodenv install <バージョン番号>

$ nodenv install 14.17.3
Downloading node-v14.17.3-darwin-x64.tar.gz...
-> https://nodejs.org/dist/v14.17.3/node-v14.17.3-darwin-x64.tar.gz
Installing node-v14.17.3-darwin-x64...
Installed node-v14.17.3-darwin-x64 to /Users/yamadaken/.nodenv/versions/14.17.3

設定

nodenv versions インストール済みバージョンの確認
nodenv global <バージョン番号> 使用するnodeの設定(全体)
nodenv local <バーション番号> 指定ディレクトリ下で使用するnodeの設定

$ nodenv global 14.17.3 
$ nodenv versions
  12.22.3
* 14.17.3 (set by /Users/yamadaken/.nodenv/version)
$ nodenv local 12.22.3
$ nodenv versions
* 12.22.3 (set by /Users/yamadaken/work/ats-firebase/.node-version)
  14.17.3

.node-versionというファイルができている。localの設定の正体。

参考

https://qiita.com/1000ch/items/41ea7caffe8c42c5211c

yarn

yarnのインストールも忘れずに
各バージョン毎に必要。

% npm install -g yarn
やまけんやまけん

Golang

流行りものは試すにかぎるわけです。
これもいろんなVerがあるわけなので、ますコレ。

goenvのインストール

$ brew install goenv

確認してみる。

% goenv -v
goenv 1.23.3

環境設定

~/.zshrc
# go
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$PATH
# goenv
export GOENV_ROOT=$HOME/.goenv
export PATH=$GOENV_ROOT/bin:$PATH
export PATH=$HOME/.goenv/bin:$PATH
eval "$(goenv init -)"

設定反映のため

% source ~/.zshrc

goのインストール

まずはインストール可能なVerを確認します。

% goenv install -l
Available versions:
  1.2.2
  1.3.0
  1.3.1
  1.3.2
  1.3.3
  1.4.0
  1.4.1
  1.4.2
  1.4.3
  1.5.0
  1.5.1
  1.5.2
  1.5.3
  1.5.4
  1.6.0
  1.6.1
  1.6.2
  1.6.3
  1.6.4
  1.7.0
  1.7.1
  1.7.3
  1.7.4
  1.7.5
  1.8.0
  1.8.1
  1.8.3
  1.8.4
  1.8.5
  1.9.0
  1.9.1
  1.9.2
  1.9.3
  1.9.4
  1.9.5
  1.9.6
  1.9.7
  1.10.0
  1.10beta2
  1.10rc1
  1.10rc2
  1.10.1
  1.10.2
  1.10.3
  1.10.4
  1.10.5
  1.10.6
  1.10.7
  1.11.0
  1.11beta2
  1.11beta3
  1.11rc1
  1.11rc2
  1.11.1
  1.11.2
  1.11.3
  1.11.4
  1.12beta1

インストールは

goenv install <Ver番号>

です。たとえばこんな感じ

% goenv install 1.11.4
Downloading go1.11.4.darwin-amd64.tar.gz...
-> https://dl.google.com/go/go1.11.4.darwin-amd64.tar.gz
Installing Go Darwin 64bit 1.11.4...
Installed Go Darwin 64bit 1.11.4 to /Users/ken/.goenv/versions/1.11.4

インストール済みVerの確認

% goenv versions
  1.11.4
  1.8.7

使用するVerを指定する。

goenv global <Ver番号>

またディレクトリ毎に使用するVerを変更できます。

goenv local <Ver番号>

例えばこんな感じ。

% goenv global 1.11.4
% go version
go version go1.11.4 darwin/amd64

動作確認

あとまわしw

やまけんやまけん

Rust

https://www.rust-lang.org/ja

これも流行りものですね。

インストール

とりあえず、公式通りに

% curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

途中で

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>

は、とりあえず 1) Proceed with installation (default)を選択。
インストールは正常終了。

環境設定

~/.zshenvに自動的にPATH設定が入ります。

~/.zshenv
source "$HOME/.cargo/env"

インストール確認

https://qiita.com/tktktktk/items/ebe7bfec725d1c674d18
これによると

  • rustc
    Rustのコンパイラ

  • cargo
    Rustのパッケージマネージャ

  • rustup
    Rustのインストーラ

とのことで、確認。

% rustc --version
rustc 1.49.0 (e1884a8e3 2020-12-29)
% rustup --version
rustup 1.23.1 (3df2264a9 2020-11-30)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: The currently active `rustc` version is `rustc 1.49.0 (e1884a8e3 2020-12-29)`
% cargo --version
cargo 1.49.0 (d00d64df9 2020-12-05)

infoが出るのはきになりつつ。

やまけんやまけん

Java

Javaって色々ありまして
https://qiita.com/nowokay/items/edb5c5df4dbfc4a99ffb
本家(Oracle)か、AdoptOpenJDK(OpenJDK)で、他を選ぶ理由はほぼないかなと。

インストール

JDK11の場合

% brew install adoptopenjdk/openjdk/adoptopenjdk11 --cask

インストール済みJDKを確認

% /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    11.0.9.1 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 11" /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
    1.8.0_275 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home

設定

~/.zshrc
## JDK8
# export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
## JDK11
export JAVA_HOME=`/usr/libexec/java_home -v 11`

実際動いているVerを確認

% java --version
openjdk 11.0.9.1 2020-11-04
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.9.1+1)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.9.1+1, mixed mode)
やまけんやまけん

dotfile

https://gist.github.com/nnks1010/103a280b21bddfed7876f908a77cbf21#dotfiles-の良さ

複数の環境を持っていたりすると便利だと思ったので導入してみようと思う。

基本的にはdotfilesってディレクトリ下に環境を作り込んでGitに保存、共有。
無論そのままでは使えんので Makefileでdot.ファイルを$HOMEにおいたりとかをする。
Homebrewや他のパッケージも自動的に登録しちゃう感じということで。

色んな人の設定、が公開されているので今の俺用にアレンジをしながら色々準備をしてみよう。
ここまでのことのほとんどが自動化されるはず。

ちょっと面倒だけど、ちょいちょい準備していこう。
結果を公開したほうが良いか思案をしつつ。

とりあえず作ってみる。

$ mkdir ~/dotfiles

こんな感じでディレクトリを掘って
インストーラー的なものを軽く作ってみた。
試行錯誤中なのですが...最小限ということで。

#!/bin/bash

DOTPATH=$HOME/dotfiles
DOT_FILES=(.zshrc .zshenv .vimrc)

for file in ${DOT_FILES[@]}
do
  ln -sf $DOTPATH/$file $HOME/$file
  if [ $? -eq 0 ]; then
    printf "    %-25s -> %s\n" "\$DOTPATH/$file" "\$HOME/$file"
  fi
done

case ${OSTYPE} in
  darwin*)
    # Mac用の設定
    ## iTerm shell integration
    ## https://iterm2.com/documentation-shell-integration.html
    ## https://www.rasukarusan.com/entry/2019/04/13/180443
    curl -L https://iterm2.com/misc/install_shell_integration.sh | bash
    ;;
  linux*)
    # Linux用の設定
    ;;
esac

.zshrc .zshenv .vimrcをとりあえずsymbolic linkで
iterm 用の設定をちょっとだけ。
(Macのみってどう描くのか試してみる意味で)
現状はこんなところです。

この状況で公開。
https://github.com/KenYAMADA/dotfiles

今後色々追加していこうと思います。

やまけんやまけん

githubの認証問題

ある日のお仕事で

% git pull
hint: Pulling without specifying how to reconcile divergent branches is
hint: discouraged. You can squelch this message by running one of the following
hint: commands sometime before your next pull:
hint:
hint:   git config pull.rebase false  # merge (the default strategy)
hint:   git config pull.rebase true   # rebase
hint:   git config pull.ff only       # fast-forward only
hint:
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
Username for 'https://github.com':

唐突にこうなった。
UserNameとPasswordを入力。でもダメ。
コマンド的にfetchpullもダメ。

困った。

Keyを作り直してみたけど状況変わらず。
結局、リポジトリへのアクセスをhttpsからsshに変更することで解消した。
git configコマンドで直せそうだけど俺は単純に
プロジェクトルートにある .ssh/configを修正で対応した。

[remote "origin"]
-        url = https://github.com/user/project.git
+        url = git@github.com:user/project.git

納得いかんのです。気持ち悪い。
お仕事用なので...あとでプライベートの方も確認しておこう。