環境について
- macOS Big Sur
- ProductName: macOS
ProductVersion: 11.2
BuildVersion: 20D64 - Git
- git version 2.29.2
- Git lfs
- git-lfs/2.13.2 (GitHub; darwin amd64; go 1.15.6)
- Sourcetree
- 4.0.2(236)
不具合内容について
Sourcetreeにて差分ファイルを作成しようとした際に、「git-lfs filter-process: git-lfs: command not found」というエラーが発生しました。
発生後、Google先生に尋ねてみると「 【macOS Catalina】Catalinaでstderr: git-lfs filter-process: git-lfs: command not foundに対応する【Jenkins】」という記事を発見!
早速記事を参考に作業を進め、「sudo mount -uw /」コマンドを実行したところで下記のようになって進めません。。。
mount_apfs: volume could not be mounted: Permission denied
mount: / failed with 66
これは困ったぞと、さらにGoogle先生に尋ねてみると「 ビッグサーで書き込み可能なルートとしてマウント」という記事に辿り着きました。
FileVaultを無効にする
リカバリモードで再起動して実行します:csrutil authenticated-root disable
MacOSに再起動します。
デバイスをマウントし、あなたのルートを検索-あなたのルートは/dev/disk1s2s3であればmount実行し、最後のを切り落とす、例えば、あなたは/dev/disk1s2をマウントします
例えば、新しいディレクトリを作成し~/mount
上記の値を使用して、 sudo mount -o nobrowse -t apfs DISK_PATH MOUNT_PATHを実行します。
マウントされたディレクトリの下のファイルを変更します
sudo bless --folder MOUNT_PATH/System/Library/CoreServices --bootefi --create-snapshotを実行する
システムを再起動すると、変更が行われます
実際の作業内容について
マウント用ディレクトリを作成。
% mkdir ~/mount
Time Machineで管理されている「APFSシステムスナップショット」のデータをマウントする。
「/dev/disk1s5」は、「Macintosh HD」の「device」です。
% sudo mount -o nobrowse -t apfs /dev/disk1s5 ~/mount
シンボリックリンクを作成。
「/usr/local/bin/git-lfs」は、git-lfsがインストールされている場所。
「~/mount/usr/bin/」は、マウント先のパスが通っているところ。
% sudo ln -s /usr/local/bin/git-lfs ~/mount/usr/bin/
スナップショットを作成。
% sudo bless --folder ~/mount/System/Library/CoreServices --bootefi --create-snapshot
macOSを再起動。
% sudo reboot
その後見つけた記事について
試してはいませんが、「~/.bash_profile」の編集でうまくいけたらいいな、、、
なんて考えたりしました。
El Capitan環境だと/usr/bin配下にファイルを配置することはSIPの無効化などが必要で面倒なので、/usr/bin/gitを/usr/local/bin/gitにシンボリックリンクを張るのが一番楽かと。
$ ln -s /usr/bin/git /usr/local/bin/git $ which git /usr/local/bin/git
gitの場所が/usr/bin/gitを指してる場合は、PATHで/usr/local/binより先に/usr/binが設定されてるので、~/.bash_profileなどを変更して対応する。