High SierraでiTunesのLocalizable.stringsをmv(リネーム)しようとしてoperation not permittedと怒られた場合の対応

iTunesの中途半端なローカライズが嫌という愚痴記事を以前書いた「iTunes 12もやっぱりジャンル名を勝手に日本語にする。勝手にローカライズ問題は続く – 或る阿呆の記」。Localizable.stringsをEnglishのものに上書きすることで対応していたのだが、High Sierraだとエラーが出るらしい。多分SIPのせい。その対応。

スポンサーリンク

やりたいこと

iTunesの中途半端な日本語化が嫌なので、Localizable.stringsを英語版に書き換えることでUI含め全部英語にしちゃう。

症状

下記の手順でLocalizable.stringsを書き換えようとすると…

$ cd /Applications/iTunes.app/Contents/Resources/Japanese.lproj
$ sudo mv Localizable.strings Localizable.strings.bak
$ sudo cp -a ../English.lproj/Localizable.strings .

sudo mvでoperation not permittedだと怒られる。

環境

  • iMac 2017
  • macOS High Sierra 10.13.1
  • iTunes: 12.7.1.14

一方、Mac mini 2012をEl CapitanからHigh Sierraにアップグレードしたものでは、この症状は起きなかった。

原因と対応

多分SIP(System Integrity Protected)のせい。SIPとは/bin、/sbin、/usr、/System下は管理者権限でも変更不可というもの。

How to turn off Rootless (SIP, or System Integrity Protection) in Mac OS X – Macworld UK」によると多くの/ApplicationにあるプリインアプリもSIPの影響を受けるとのこと。該当部分を引用。

The protected directories are: /System, /bin, /sbin, /usr (but not /usr/local). The symbolic links from /etc, /tmp, and /var to /private/etc, /private/tmp, and /private/varare also protected, although the target directories are not themselves protected. Most preinstalled Apple applications in /Applications are also protected.

手っ取り早い対応策としては、iTunesをアップデートしないことSIPを一時的に解除して、その間に上記の書き換えを行うこと。

解除方法は、以下。

  1. SIPの解除
    1. 電源を落とす
    2. Cmd + Rを押しながら起動→リカバリモードで立ち上がる
    3. ユーティリティ→ターミナルでターミナルを起動
    4. csrutil disable
    5. reboot
  2. 普通に再起動すると、SIPが解除されているので、記事の書き換え手順を実行
  3. 元に戻す
    1. 電源を落とす
    2. Cmd + Rを押しながら起動→リカバリモードで立ち上がる
    3. ユーティリティ→ターミナルでターミナルを起動
    4. csrutil enable
    5. reboot

以上です。面倒くさい。

参考

関連コンテンツ

関連記事

スポンサーリンク

カテゴリーMac

コメントを残す

メールアドレスが公開されることはありません。