今更なのですが、先日、Macで brew を使ってビルドしようとするとエラーしました。
エラーの内容を見ると、ボリューム名の「Macintosh HD2」のところのブランクのせいで、パスを正しく渡せてないようです。
スクリプト側の問題なのでしょうが、ボリューム名を変えたほうが手っ取り早いと思って今回変えてみました。意外と大変でしたので、その方法をまとめました。
環境
私の環境では、ホームディレクトリは以下の場所にあります。
/Volumes/Macintosh HD2/Users/xxxx
システムディスクが「Macintosh HD」で、もう一本のディスク「Macintosh HD2」にユーザ用のフォルダを割り当てています。
手順概要
手順の流れは以下のとおりです。
- 別の管理者権限ユーザを作成してログインし直す
- ボリューム名を変更する
- ホームディレクトリを変更する
- 再起動
順を追って説明します。
作業用ユーザを作成
上記の通り、ホームディレクトリのパスの中にボリューム名が含まれているため、ボリューム名を変更するとホームディレクトリのパスが変わってしまいます。そこで、影響を受けない他の管理者権限ユーザを作成してから作業するのがベターです。
はじめに、「システム環境設定」の「ユーザとグループ」を開きます。
鍵マークをクリックして鍵を解除した後、「+」ボタンを押し、必要な情報を入力して新規のユーザを作成します。
次にこの新規ユーザのホームフォルダの所在を確認します。
controlキーを押しながら作成したユーザを選択し、「詳細オプション」を開きます。
この例では、作成した新規ユーザのホームディレクトリは「/Users/」にあることがわかります。
念のため、ターミナルを開いて lsコマンドでこのフォルダを確認し、シンボリックリンクとなっていないかを確認します。もし、シンボリックリンクが張られていたら、リンク先を辿って再度確認します。
$ ls -lF / | grep Users drwxr-xr-x 7 root admin 224 5 9 14:36 Users/ $ ls -lF /Users/ | grep user1 drwxr-xr-x+ 11 user1 staff 352 5 9 14:36 user1/
その後、ディスクユーティリティを開き、各ディスクのマウントポイントをチェックします。
この例では、「/Users」は「/」配下にあり、「Macintosh HD」のボリューム配下であることがわかります。
以上より、この新規ユーザは「Macintosh HD2」のボリューム名を変更しても、影響を受けないことがわかります。
一旦、ログアウトして、作業用のユーザでログインしなおします。
ボリューム名を変更する
先ほど作成した作業用のユーザでログインして作業します。
ディスクユーティリティを開きます。
目的のボリュームの名前のところをクリックして、新しい名前を入力します。
ブランクの代わりにアンダーバーを使って「Macintosh_HD2」としました。
ホームディレクトリを変更する
引き続き作業用ユーザのまま、「システム環境設定」の「ユーザとグループ」を開きます。
鍵マークをクリックして鍵を解除した後、controlキーを押しながら元のユーザを選択し、「詳細オプション」を開きます。
先ほど変更したボリューム名に合わせて、以下の通り、ホームディレクトリのパスを変更します。
/Volumes/Macintosh_HD2/Users/xxxx
なお、以下のようにシンボリックリンクを張っておき、ホームディレクトリのパスを「/Users/xxxx」としても構いません。
/Users/xxxx -> /Volumes/Macintosh_HD2/Users/xxxx
変更後、再起動します。
シンボリックリンクだけを作成する方法
上の手順ではボリューム名自体を変更しましたが、ボリューム名は変えずにシンボリックリンクだけを張る方法ではどうでしょう。
以下のようにシンボリックリンクを張ります。
/Users/xxxx -> /Volumes/Macintosh HD2/Users/xxxx
そして、「システム環境設定」の「ユーザとグループ」で、ホームディレクトリのパスを「/Users/xxxx」とします。
そうすれば、ボリューム名にブランクが含まれていてもホームディレクトリにはブランクが含まれなくなります。対応方法としてもこっちのほうがスマートです。
実際にこちらの方法も試してみました。
冒頭の brew を使ったビルドを試してみましたが、残念ながら同じところでエラーしました。。
(Pythonに疎いのですが、__file__などの結果が、シンボリックリンクのパスではなく「/Volumes/Macintosh HD2/Users/xxxx」のほうのパスとなっていました。)
何か情報があればアップデートします。
トラブル対応
もし、ホームディレクトリとして存在しないパスを設定してしまったような場合、ログインできなくなります!
上記の手順の通り、作業用のユーザを作成してあれば、再度そのユーザでログインして設定を見直すことができます。
そうでない場合、起動直後に command(⌘) + R を連打して、復元モードで起動し、システムの設定を見直す必要があります。
まとめ
brew でビルドしようとすると、ボリューム名の中のブランクのせいでエラーしたことから、ボリューム名とホームディレクトリを変更しました。ここでは、その手順をまとめました。
なお、ブランクを含まないように変更した後は、無事ビルドは成功しました。
最後までお読みいただきありがとうございました!