====== macOS ====== ===== 環境構築 ===== === クリーン再インストール === * 電源起動時に電源ボタン押しっぱなしにする * オプションというのが出るのでオプションを選択して macOSユーティリティにゆく * ディスクユーティリティから Macintosh HD を選択してボーリュームマイナスボタンを押して消す.\\ 「ボリュームグループを消去」を選べば良い * 消去が終わったら「macOS を再インストール」を選ぶ * OSインストールしたら AppleID サインインなどせず始める. * 以下のスクリプトを実行したらサインイン無しで環境構築できる.
# For Mac with M1 processor
TARGET_PACKAGES=(wget emacs gcc)
CHECKED_PACKAGES=(${TARGET_PACKAGES} gfortran)
check_flag=1
## Install Homebrew
which brew >/dev/null 2>/dev/null
if [ $? -ne 0 ]; then
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
if [ "$(uname -a | sed 's/ /\n/g' | tail -n1)" = "arm64" ]; then
echo 'if [ "$(uname -a | sed '\''s/ /\n/g'\'' | tail -n1)" = "arm64" ]; then' >> /Users/$USER/.zprofile
echo ' eval $(/opt/homebrew/bin/brew shellenv)' >> /Users/$USER/.zprofile
echo 'fi' >> /Users/$USER/.zprofile
source /Users/$USER/.zprofile
fi
fi
## Check installing homebrew
if [ `which brew >/dev/null 2>/dev/null; echo $?` -ne 0 ]; then
echo "Homebrew is not installed." 1>&2
exit 1
fi
bash "$(dirname $0)/setup_homebrew_install_packages.sh"
#### code
#### bash setup_homebrew_install_packages.sh
# For Homebrew
GCC_VERSION="10"
TARGET_PACKAGES=(wget emacs gcc@${GCC_VERSION})
CHECKED_PACKAGES=(wget emacs gcc gfortran)
check_flag=1
## Check installing homebrew
if [ `which brew >/dev/null 2>/dev/null; echo $?` -ne 0 ]; then
echo "Homebrew is not installed." 1>&2
exit 1
fi
BREW_ROOT=`brew --prefix`
## Install each package
echo "Install packages"
for package in ${TARGET_PACKAGES[@]}; do
echo ${package}
done
for package in ${TARGET_PACKAGES[@]}; do
brew install ${package}
done
## Use GCC instead of Clang
if ! [ -f "${BREW_ROOT}/bin/gcc" ]; then
ln -s ${BREW_ROOT}/bin/gcc-${GCC_VERSION} ${BREW_ROOT}/bin/gcc
if [ $? -ne 0 ]; then
echo "Symbolic link of GCC cannot be created." 1>&2
exit 1
fi
fi
if [ "`readlink ${BREW_ROOT}/bin/gcc`" != "${BREW_ROOT}/bin/gcc-${GCC_VERSION}" ]; then
echo "gcc command may use Clang or default GCC instead of GCC installed by Homebrew." 1>&2
fi
## Check whether each packages is installed or not.
echo ""
echo ""
echo "Check packages"
for package in ${CHECKED_PACKAGES[@]}; do
${package} --version >/dev/null 2>/dev/null
if [ $? -ne 0 ]; then
echo "${package} is not installed." 1>&2
check_flag=0
fi
done
echo ""
if [ ${check_flag} -eq 1 ]; then
echo "Completed!"
else
echo "Some packages are not installed correctly."
fi
# For Mac with M1 processor
## Install Homebrew
which brew >/dev/null 2>/dev/null
if [ $? -ne 0 ]; then
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
if [ "$(uname -a | sed 's/ /\n/g' | tail -n1)" = "arm64" ]; then
echo 'if [ "$(uname -a | sed '\''s/ /\n/g'\'' | tail -n1)" = "arm64" ]; then' >> /Users/$USER/.zprofile
echo ' eval $(/opt/homebrew/bin/brew shellenv)' >> /Users/$USER/.zprofile
echo 'fi' >> /Users/$USER/.zprofile
source /Users/$USER/.zprofile
fi
fi
## Check installing homebrew
if [ `which brew >/dev/null 2>/dev/null; echo $?` -ne 0 ]; then
echo "Homebrew is not installed." 1>&2
exit 1
fi
# For Homebrew
GCC_VERSION="11"
TARGET_PACKAGES=(wget emacs gcc@${GCC_VERSION})
CHECKED_PACKAGES=(wget emacs gcc gfortran)
check_flag=1
## Check installing homebrew
if [ `which brew >/dev/null 2>/dev/null; echo $?` -ne 0 ]; then
echo "Homebrew is not installed." 1>&2
exit 1
fi
BREW_ROOT=`brew --prefix`
## Install each package
echo "Install packages"
for package in ${TARGET_PACKAGES[@]}; do
echo ${package}
done
for package in ${TARGET_PACKAGES[@]}; do
brew install ${package}
done
## Use GCC instead of Clang
if [ -f "${BREW_ROOT}/bin/gcc" ]; then
rm "${BREW_ROOT}/bin/gcc"
fi
ln -s ${BREW_ROOT}/bin/gcc-${GCC_VERSION} ${BREW_ROOT}/bin/gcc
if [ $? -ne 0 ]; then
echo "Symbolic link of GCC cannot be created." 1>&2
exit 1
fi
if [ "`readlink ${BREW_ROOT}/bin/gcc`" != "${BREW_ROOT}/bin/gcc-${GCC_VERSION}" ]; then
echo "gcc command may use Clang or default GCC instead of GCC installed by Homebrew." 1>&2
fi
## Check whether each packages is installed or not.
echo ""
echo ""
echo "Check packages"
for package in ${CHECKED_PACKAGES[@]}; do
${package} --version >/dev/null 2>/dev/null
if [ $? -ne 0 ]; then
echo "${package} is not installed." 1>&2
check_flag=0
fi
done
echo ""
if [ ${check_flag} -eq 1 ]; then
echo "Completed!"
else
echo "Some packages are not installed correctly."
fi
===== 頑張ってやる設定 =====
=== ホスト名の変更 ===
* システム環境設定 > 共有 > コンピュータ名
=== ライブ変換について ===
* Catalina以前では「システム環境設定」->「キーボード」->「入力ソース」->「ライブ変換」
* Big Sur 以降は自動確定しないようになったのでそんなに問題ない\\ 「入力ソース」(ここでスクロールできることに注意)\\ ライブ変換・タイプミスを修正・推測候補表示を外せば良い
defaults write com.apple.inputmethod.Kotoeri JIMPrefLiveConversionKey -bool false
defaults delete com.apple.inputmethod.Kotoeri JIMPrefLiveConversionKey
=== キーの入力を速くする ===
カーソルキーで移動するときにつらいのでキーのリピート入力の速度を上げたほうが良い。
defaults write -g InitialKeyRepeat -int 15
defaults write -g KeyRepeat -int 2
=== Dockを隠す ===
* 「システム環境設定」->「Dockとメニューバー」->「Dockを自動的に表示/非表示」のチェックボックスをONにする
* 「最近使ったアプリケーションをDockに表示」
defaults write com.apple.dock autohide -bool true
defaults delete com.apple.dock autohide
=== 画面解像度の設定 ===
* 「システム環境設定」->「ディスプレイ」で解像度のラジオボタンを「変更」にして「スペースを拡大」
* 輝度を自動調整とTrue Tone を消す
defaults でやるのは難しそう。
=== ターミナルの背景色を変更 ===
* プロファイル Pro を複製。mine を作る。
* 「ターミナル」->「環境設定」->「一般」->「起動時に開く」をBasicからmineにする
* Osaka 等幅24 がフォントとしては良い。
* ウィンドウサイズも全画面にして、列と行を設定しておくと、ターミナル起動時に全画面となるので嬉しい
=== ターミナルからすべてのディレクトリにアクセスできるようにする ===
ゴミ箱の削除とか、そういうことが初期設定ではできないので、設定を変更する必要がある。
環境設定 -> セキュリティとプライバシー -> プライバシー -> フルディスクアクセス
ターミナルのチェックを入れる。
=== Finder拡張子表示 ===
defaults write NSGlobalDomain AppleShowAllExtensions -bool true
=== Finder 隠しファイル表示 ===
defaults write com.apple.finder AppleShowAllFiles -bool true
=== Bluetoothをメニューバーに表示 ===
環境設定 -> Bluetooth -> メニューバーにBluetoothを表示
=== バッテリーパーセント表示 ===
環境設定 -> Dockとメニューバー -> バッテリー -> 割合(%)を表示
=== タイムゾーン設定 ===
環境設定 -> 日付と時刻 -> 時間帯
=== サウンド表示 ===
環境設定 -> サウンド -> メニューバーにサウンドを表示 「常に」
=== タップでクリック ===
環境設定 -> トラックパッド -> 「ポイントとクリック」 -> 「タップでクリック」
==== defaults コマンドでやっていく ====
* [[https://fnwiya.hatenablog.com/entry/2015/11/06/155255|参考]]
=== 変更前設定を保存 ===
defaults read > hoge.txt
defaults -currentHost read > foo.txt
=== 変更 ===
GUI で設定変更してみる
=== 変更後設定を保存 ===
defaults read > fuga.txt
defaults -currentHost read > bar.txt
=== 差分を確認 ===
まずは差分を見る。
diff hoge.txt fuga.txt
diff foo.txt bar.txt
それっぽい単語のありそうな箇所の行番号をみる。
cat fuga.txt | grep -n 単語
近傍を確認すると、名前空間がわかるはず。(例は123行目から456行目までを表示)
cat fuga.txt | sed -n '123,456p'
以下のコマンドを実行すれば設定変更ができるんだなと言うことがわかる。
defaults write com.apple.piyopiyo bazbaz -bool true
ただし反映には以下みたいにその機能を担当しているプログラムを再起動しなくてはいけない。
killall 何らかのプログラム
デフォルト設定に戻すには delete するだけ。
defaults delete com.apple.piyopiyo bazbaz
名前空間が Apple Global Domain のときだけ defaults コマンドに ''-g'' オプションが必要。
===== 知識 =====
CUI を動かすためには CommandLineTools が必要。
これは2通りのインストール方法があるっぽい。
- CommandLineTools のみのインストール
- Xcode に付属してくる場合のインストール
===== その他 =====
==== zsh ====
色つけ。bash の ''force_color_prompt'' と同じにしておく
PROMPT='%F{34}%n@%m%f:%F{32}%~%f$ '
export LSCOLORS=gxfxcxdxbxegedabagacad
alias ll='ls -LGF'
alias ls='ls -GF'
==== tmux ====
色を反映させるには次のようにする。
set-option -g default-terminal screen-256color
set -g terminal-overrides 'xterm:colors=256'
==== bash ====
デフォルトでは ''.bashrc'' を読んでくれないので以下のように ''.bash_profile'' を作るのが良い.<- bashデフォルト時代の話?
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
==== ショートカット ====
=== terminal ===
* 行頭に戻る : control + a
* 行末に進む : control + e
* タブ切り替え→ : control + tab
* タブ切り替え← : control + shift + tab
* 現在地から行末まで切り取り : control + k
* 現在地から行頭まで切り取り : control + u
* ペースト : control + y
* あんまり重要でない
* 1単語戻る : opt + ←
* 1単語進む : opt + →
==== homebrew ====
homebrewは外部のリポジトリからもパッケージのインストールができるようになっている.
caskはデスクトップアプリなどが豊富なリポジトリ.
homebrew本家に吸収された.
# 更新情報の取得 (=apt update)
brew outdated
# 更新情報の取得 (=apt upgrade)
brew update
# パッケージを探す
brew search
# パッケージをインストールする
brew install
# インストールしたパッケージのアップデート
brew upgrade
# パッケージのアンインストール
brew uninstall
# インストールしたパッケージ(=formula)の一覧
brew list
brew list --versions
# 古くなったパッケージの削除
brew cleanup
=== homebrew自体の再インストール ===
アンインストール
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
=== リポジトリ ===
* リポジトリの一覧 ''brew tap''
* 追加 ''brew tap hoge''
* 削除 ''brew untap hoge''
* 使えなくなっているもの検知
=== cask ===
このようにインストールする
brew install hogehoge --cask
以下リスト
brew install visual-studio-code --cask
brew install google-chrome --cask
brew install firefox --cask
brew install microsoft-powerpoint --cask
brew install microsoft-excel --cask
brew install microsoft-word --cask
brew install google-drive --cask
brew install zoom --cask
* Adobe CC は brew で入れるのがめんどい。自分でAdobeに行って入れる
* chrome に関しては、定期的に sudo rm -rf /Applications/Google\ Chrome.app して再インストールしたほうが良さそう。内部からアップデート適用するよりもクリーンな状態に保てる。
=== High Sierra ===
* 命令が足りないので OpenBLAS の一部がコンパイルできない。そのせいで色々なパッケージが update できないまま放置される。
I edited file /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/openblas.rb
and added "NO_AVX512=1" in line 43 to
system "make", "CC=#{ENV.cc}", "FC=gfortran", "libs", "netlib", "shared", "NO_AVX512=1"
Then reinstalling openblas.
==== M1 mac での Python環境 ====
従来通り pyenv で処理系も切り替えできるようにしたい。
Anaconda, Miniconda は M1 mac では pyenv からは入れられない。
同じようなものに Miniforge というのがあるのでこちらを使うのが良い。
ただし python3 のバージョンは最低で 3.8 っぽい?(python3.6環境の構築は難しそう)
=== pyenv ===
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc
=== miniforge ===
pyenv install --list | grep miniforge
pyenv install miniforge3-4.10.1-5
pyenv global miniforge3-4.10.1-5
echo '. /home/horiuchi/.pyenv/versions/miniforge3-4.10.1-5/etc/profile.d/conda.sh' >> ~/.zshrc
source ~/.zshrc
==== 障害対応 ====
=== CommandLineTools の系統 ===
Xcode 付属のものは
xcodebuild -version
でエラー無く実行可能。
単体のものは 'xcodebuild' requires Xcode エラーが出る。
===== 複数OSバージョンのデュアルブート =====
Monterey と Big Sur をデュアルブートしてみる。
M1 mac は出荷時の OS に復元することはできない。\\
インストールメディアを作成してダウングレードすることしかできない。
=== 旧バージョンの OS ダウンロード ===
* [[https://support.apple.com/ja-jp/HT211683|旧バージョンの macOS を入手する]] のページで Big Sur をダウンロードする。
* monterey では big sur のインストールはできません的なやつが出るが無視して良い
=== インストールメディアの作成 ===
* ''/Applications/Install macOS Big Sur.app'' があるはず。
* USB を挿しておく。
* USB のパスを確認 ''ls -la /Volumes''
* メディア作成を実行 sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia \
--volume /Volumes/USB_exFAT
=== インストール ===
* 電源オフして、電源ボタン押しっぱ起動でユーティリティいく(Intelは