【Tips】MacPorts完全削除時に「Operation not permitted」と表示された場合に確認したい事

Operation not permitted

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
Operation not permitted 2

結局、MacPortsの公式手順通りに実行すれば良いのですが、ユーザーとグループの削除は見逃しやすいので気をつける必要があります。

Ask Differentによると、macOSのSIP機能により、macportsユーザーのホームディレクトリが、rootであっても削除できないことが原因とのことです。

まとめ

MacPortsを完全インストールする際は、macportsユーザー/グループも忘れず削除する必要があります。詳しい手順は以下の記事でも説明しています。

Macのパッケージ管理システム「MacPorts」。 長い歴史を持ち、安定して動作する開発者向けのオープンソースソフトウェアですが、最近はより手軽に使用できる「H

スポンサーリンク