macOS用のパッケージマネージャとしては最近「Homebrew」が圧倒的な人気を集めています。
以前から存在する「MacPorts」を使用していた方も、大勢に逆らえず、そろそろHomebrewに移行してみようかと考えている方もいるかもしれません。
今回、手元の環境でも、MacPortsからHomebrewへ移行してみたのですが、その際、MacPortsのインストール先ディレクトリである「/opt/local」が削除できない問題に遭遇しました。
root権限で「sudo rm -rf /opt/local」と実行しても「Operation not permitted」というエラーが表示されてディレクトリが削除できないのです。
この問題を解決する方法を説明します。
目次
macportsユーザー、グループを削除すること
結論から書くと「/opt/local」を削除する前に、MacPortsが自動的に作成するmacportsユーザー、macportsグループを削除することが必要でした。
以下のコマンドで削除できます。
$ sudo dscl . -delete /Users/macports $ sudo dscl . -delete /Groups/macports
これで/opt/localが削除可能となります。
$ sudo /bin/rm -rf /opt/local
結局、MacPortsの公式手順通りに実行すれば良いのですが、ユーザーとグループの削除は見逃しやすいので気をつける必要があります。
Ask Differentによると、macOSのSIP機能により、macportsユーザーのホームディレクトリが、rootであっても削除できないことが原因とのことです。
まとめ
MacPortsを完全インストールする際は、macportsユーザー/グループも忘れず削除する必要があります。詳しい手順は以下の記事でも説明しています。
Macのパッケージ管理システム「MacPorts」。
長い歴史を持ち、安定して動作する開発者向けのオープンソースソフトウェアですが、最近はより手軽に使用できる「H