Intel MacからM2 Mac変更時のHomebrew

Intel MacからM2 Mac変更時の初期環境構築時にHomebrewの設定をしたときのメモ

やりたいこと

Intel用の不要なバイナリを削除して、Homebrewを入れ直す

前提

Timemachineを使って、Intel MacからM2 Macへ全データの移行済み

行った作業

  1. HomebrewのIntel用バイナリを削除

    1. Rosettaを使用して、Terminalを開く
    2. uname -mコマンドで、x86_64であることを確認する
    3. 下記コマンドを実行し、Homebrewを削除
      • /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
    4. 権限不足で削除できなかったディレクトリを削除
      • texliveを削除。sudo rm -rf /usr/local/texlive
      • /usr/local/bin以下のリンクが切れているコマンドを削除
  2. HomebrewのAppleSilicon用のバイナリをインストール

    1. Rosettaで開く」のチェックを外し、Terminalを開く
    2. uname -mコマンドで、arm64であることを確認する
    3. 下記コマンドを実行し、Homebrewをインストールする
      • /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

説明

1. HomebrewのIntel用バイナリを削除

homebrewの削除コマンドを単にTerminalで叩いても、Apple Silicon用の /opt/homebrew を見に行ってしまうので、Intel用としてコマンドを実行する必要がある。そのために、TerminalをRosettaで開く。

Homebrew削除時には以下のログが出力された。一部権限不足で削除ができていない

/Users/username/Library/Caches/Homebrew/
/usr/local/Caskroom/
/usr/local/Cellar/
/usr/local/bin/brew -> /usr/local/bin/brew
Are you sure you want to uninstall Homebrew? This will remove your installed packages! [y/N] y
==> Removing Homebrew installation...
Warning: Failed to delete /usr/local/Caskroom
rm: /usr/local/Caskroom: Permission denied
Warning: Failed to delete /usr/local/Cellar
rm: /usr/local/Cellar: Permission denied
==> Removing empty directories...
Password:
==> /usr/bin/sudo /usr/bin/find /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/opt /usr/local/sbin /usr/local/share /usr/local/var /usr/local/Caskroom /usr/local/Cellar /usr/local/Homebrew /usr/local/Frameworks -name .DS_Store -delete
==> /usr/bin/sudo /usr/bin/find /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/opt /usr/local/sbin /usr/local/share /usr/local/var /usr/local/Caskroom /usr/local/Cellar /usr/local/Homebrew /usr/local/Frameworks -depth -type d -empty -exec rmdir {} ;
==> Homebrew uninstalled!
The following possible Homebrew files were not deleted:
/usr/local/.com.apple.installer.keep
/usr/local/Frameworks/
/usr/local/Homebrew/
/usr/local/bin/
/usr/local/etc/
/usr/local/include/
/usr/local/lib/
/usr/local/opt/
/usr/local/sbin/
/usr/local/share/
/usr/local/texlive/
/usr/local/var/
You may wish to remove them yourself.

参考

m1 - Apple Silicon: port all Homebrew packages under /usr/local/opt/ to /opt/homebrew - Ask Different

Installation — Homebrew Documentation

GitHub - Homebrew/install: 📥 Homebrew (un)installer

Raspi環境構築

OSのアップグレード後、rebootかけたらOSが立ち上がらなくなりました。reboot前にps auxで見たら、アップグレードプロセスが生きていたので、ちゃんと完了していなかったのかもしれない。

OS入れ直して位置から環境を作り直す。

やること

OS install

Raspberry Pi ImagerでUbuntu Server 20.4.3 LSTを入れる

$ lsb_release -a

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.3 LTS
Release:    20.04
Codename:   focal

ssh接続

公開鍵認証を許可する。 /etc/ssh/sshd_configを編集。

PubkeyAuthentication yes

パスワード認証をきる。 /etc/ssh/sshd_configを編集。

PasswordAuthentication no
ChallengeResponseAuthentication no

最後に、 システム環境設定の共有のリモートログインをOFFにしてONする。

RasberryPiのusername変更

Raspbianでpiユーザ名とパスワードをうまいこと変更する - Qiita

DNS Serverにする

$ sudo apt install dnsutils # nslookup等使うため
$ sudo apt install dnsmasq

dnsmasqの設定ファイル変更

元の設定ファイルを変えたくないので、/etc/dnsmasq.d/local-dnsmasq.confを作成する。

port=53
domain-needed 
bogus-priv
local=/local-domain.com/
no-hosts
addn-hosts=/etc/local-hosts
expand-hosts
domain=local-domain.com

名前登録

上でaddn-hostsに設定した/etc/local-hostsファイルを作ります。 この中に登録したいサーバーの名前を登録します。

192.168.0.1    server01.local-domain.com server01
192.168.0.2    server02.local-domain.com server02
192.168.0.3    dns-server.local-domain.com dns-server

/etc/network/interfaces.d以下にinterfacesファイルを作る。

dns-server 127.0.0.1 8.8.8.8

を記入。※この作業いるんだっけ。

hostnameの変更を行っておく。 /etc/hosts/etc/hostnameの両方で変更する必要がある。 raspberrypiからdns-serverに変更します。 rebootすれば変わっていることが確認できます。

OpenVPN構築

ネットワークのことは詳しないのですが、以下のツールで簡単に構築可能。

Ubuntu 20.04でOpenVPNサーバーをセットアップ・設定する方法 | DigitalOcean

GitHub - pivpn/pivpn: The Simplest VPN installer, designed for Raspberry Pi

PiVPNによるOpenVPNのインストール - とある社畜の頭脳整理

firewall関連について

サブネット10.8.0.0/24にクライアントが割り振られているとします。 インターフェイスはwlan0で接続しているとします。

マスカレードの設定

$ sudo firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o wlan0 -m comment --comment openvpn-nat-rule -j MASQUERADE

openvnのポートを開けます。1194/udpがデフォルトです。

$ sudo firewalld-cmd --permanent --add-service=openvpn

VPN接続先のネットワークのマシンへの接続を許可します。これしないとVPN繋いだ状態で外のネットワークに接続できなかったです。

$ sudo firewall-cmd --permanent --zone=trusted --add-interface=tun

global ipの定期確認

固定global ipを契約しているわけではないので、ipが変わる可能性あり。定期的に確認して、前回と変更がある場合通知を出す。

手順

  1. global ipを格納して前回のipと確認
  2. 異なる場合、指定したメールに通知を送る
  3. 調べたipをファイルに記録

バッチファイルcheck_ip.sh作成

ip=`curl inet-ip.info`
previous_ip=cat /tmp/previous-globalip.txt

if [ "$ip" != "$previous_ip" ] ; then
  echo "NOTE : My global ip changed The new ip is "$ ip | mail -s "NOTE: Home Global ip changed" -r system@raspi.home.com myaccount@gmail.com;
fi
echo $ip > /tmp/previous-globalip.txt

また、定期実行はcronで行う。

$ sudo apt install crontab
$ echo "00 7 * * * check_ip.sh" > cron.conf
$ crontab cron.conf

Docker install

TBD

Postgresql install

TBD

reboot後にwifiが見つけられなくなった

下記ファイルに1行付け足す。 /etc/wpa_supplicant/wpa_supplicant.conf

 network={
         ssid="XXXXX"
         psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
         scan_ssid=1
 }

なんで急にwifiが見つけられなくなったのかはよくわからない。

-> dhcpcd がうまく動いていなかった。 理由不明。

$ sudo systemctl restart dhcpcd

Linux: デバイスのマウントとアンマウント

usbデバイスを入れたときに、マウント、アンマウントを行う。

raspi(rasbian)での操作

バイスの確認

$ sudo fdisk -l

mount

バイスのリストの名前を使って、/mnt以下にマウントする

$ sudo mount /dev/.... /mnt/

unmount

コマンドはumountであることに注意

$ sudo umount /mnt/...

RasPi: PostgreSQL install

install

$ sudo apt-get install postgresql

setting

パスワードの設定

postgresユーザーができるので、このユーザーのパスワードを設定する。

$ sudo passwd postgres

ユーザーの追加

postgresにスパーユーザとして入る

$ su - postgres

postgresqlに接続して作業

$ psql

ユーザーを作成する

postgres=# CREATE ROLE sampleUser;

ログイン、データベース作成できるようにするには以下で作成。

postgres=# CREATE ROLE sampleUser LOGIN CREATEDB;

削除をするときは、

postgres=# DROP ROLE sampleUser;

ユーザーを確認してみます。

postgres=# SELECT ROLNAME FROM PG_ROLES;

データベースの作成

postgres=# CREATE DATABASE sampleDb OWNER sampleUser;

DB確認

postgres=#  \l

ログイン

$ psql -U username -d postgres

postgresqlサーバーにリモートからアクセスする

ポートを開ける

$ sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent
$ sudo firewall-cmd --zone=public --add-service=postgresql --permanent
$ sudo firewall-cmd --reload

postgresqlサーバー側のアクセス設定

各ファイルの場所に注意。

$ vim /etc/postgresql/9.6/main/postgresql.conf

listen_addresses = '*'に変更

$ vim /etc/postgresql/9.6/main/pg_hba.conf
host    all             all             192.168.0.0/24         md5

を最後に追加

参考サイト

【Raspberry Pi】PostgreSQLをインストールする(外部から接続できるまで) - りなっくすとらずぱい!

PostgresSQLの初期設定 - Qiita

ファイルから SQL を読み込む (MySQL, PostgreSQL, SQLite3) - CUBE SUGAR CONTAINER

RasPi: virtualenvで仮想環境を作る

install

これに先立ちpython3.7を入れておく。 pipでvirtualenvを入れる。 なんかいろんなtipsをみる限り、sudoをつける必要あり。どこにinstallされているかわかるように、--verboseをつけておく。

$ sudo pip3 install virtualenv --verbose

コマンドとして使えるようになる。

create

$ virtualenv -p python 3.6 env-name

activate

$ source env-name/bin/activate

deactivate

$ deactivate

RasPi: python 3.7をいれる

virtualenvでpython3.6を入れたいので、Raspiにpython3.7.2を入れる。

$ sudo apt install libffi-dev libssl-dev openssl
$ wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
# 3.7.2をmake
$ tar zxvf Python-3.7.2.tgz
$ cd Python-3.7.2
$ ./configure
$ make
$ sudo make install
# pipをupdate
$ sudo pip3 install --upgrade pip

macOSアプリの写真アプリのライブラリをAmazon Photoのバックアップディスクに指定する

写真ライブラリはそのままではAmazon Photoのバックアップディスクに指定できない。

回りくどいが、写真ライブラリ内のオリジナルデータをシンボリックリンクを貼ることでディスクに指定する。

わかりやすいように、 Pictures以下にphotoディレクトリなどを作成して、シンボリックリンクをはる。

$ ln -s  .../写真ライブラリ.photoslibrary/originals photo