tech-memo

Macのいろいろ

ソフトウェアのインストール

インターネットからダウンロードしたファイルがセキュリティではじかれてインストールできない場合

sudo spctl --master-disable

を実行すると、システム環境設定 - セキュリティとプライバシー - すべてのアプリケーションを許可が表示され、インストールできるようになる

〜が悪質なソフトウェアかどうかをAppleでは確認できないため、このソフトウェアは開けません。

システム環境設定 -> プライバシーとセキュリティの下の方に、ブロックされたアプリケーションの警告があり”そのまま開く”をクリックすると使えるようになる。

dmgファイルのマウントをコマンドで

hdiutil mount [dmgファイル名]

python

Macのスタートアップ

/Library/LaunchDaemons ココにXML形式で書くらしい

ファインダーでtmpを開く

command + shift + Gでパスを指定して開く

ファインダーで.(ドット)始まりのファイルを表示する

command + shift + .(ドット)で表示・非表示が切り替わる

ストレージ容量をCLIで確認する

diskutil apfs list

記号・絵文字など: 文字ビューアを表示

ctrl + command + space

スピーカープロセスの再起動

音がでなくなったときに

sudo killall coreaudiod

アクティベティモニタでcoreaudiodプロセスを強制終了でもよい(終了後自動起動する)

Mac用コマンド

スリープの一時停止

MacBook を閉じてもスリープしないようにする

caffeinate -i

ディスプレイだけスリープしない

caffeinate -d

1時間だけスリープしない

caffeinate -t 3600

サイズの大きいフォルダを探す

sudo du -x -h -d 5 / | sort -h | tail -n 30

タイムマシーンスナップショットの表示

tmutil listlocalsnapshots /

Apple Silliconへの切り替え

Intel MacからM3 Macに移行したとき、pythonライブラリのtensorflowが動かなくなった。
arm版でcursor(vs code)を起動して、そこで起動していたため。
元はといえば、このときに、archコマンドで、x86で起動しておけばなにも問題なかった。
しかしarchコマンドを知らなかったので、tensorflowを動かすにはbrewでライブラリを再インストールしなければならなくなり、 x86のbrewをアンインストールしてしまった。
で、arm版のbrewをインストールしtensorflowは動いたのだが、今度はx86のbrewライブラリを参照している既存アプリのflaskが起動しなくなった。
原因は、x86のbrewでインストールしたmysqlpkg-configがなくなってしまったため。
pythonライブラリのmysqlclientを再インストールしても、ライブラリの参照がうまくいかず利用できない。
なので、再度x86のbrewをインストールし、mysqlpkg-configをインストールして、mysqlclientを再インストールしたところ治った。

archコマンド

archで今のターミナルの起動アーキテクチャがわかる。arm or i386と出力される
デフォルトはarm版だが、

arch -x86_64 bash

とすることで、x86版のbashが起動する。bashの部分はコマンドやアプリでよい

brew

x86版は /usr/local/bin, /usr/local/Cellarを使う。 brew自体は

/usr/local/bin/brew -> ../Homebrew/bin/brew

arm版は、/opt/homebrew/bin, /opt/homebrew/Cellarを使う。 brewコマンドは、環境変数のPATHの先頭に、/usr/local/binを入れるか、/opt/homebrew/binを入れるかで異なる。

x86版のbrewを使うには、arch -x86_64で切り替えて、PATHを変更して使う必要がある。

mysqlclient

pythonライブラリのmysqlclientを使うには、brewでmysqlpkg-configをインストールする必要がある。公式ドキュメントにもそのように記載されている。
インストール時は、環境変数のDYLD_LIBRARY_PATHにも、先頭に/usr/local/mysql/libを入れる必要があるかもしれない