Mac OS X 10.11 (El Capitan)は、Rootlessというセキュリティ整合性保護機能(SIP: System Integrity Protection)が導入されている。これにより、管理者権限(root)であっても特定のディレクトリにアクセス制限を受けることがあり、その弊害でコマンドライン関連の作業ができなくなるという症状が発生する。。。
Drupalのコマンドラインツール「Drush」もその一つで、そのため僕はここ数カ月の間、自身のMacをEl Capitanにアップデートすることを躊躇っていた。(Drushインストールには、悩み悩んで2日掛かった。おまけになぜ上手くインストールできたのか明確な手応えがないままの成功だったので。)
だが先日iOSが9.3にバージョンアップされ、Macの統合開発環境であるXcodeも7.3へアップデートする必要性がでてきた。そのためにはMac OSをEl Capitanにアップデートすることが不可避となり、やっとのことで重い腰を上げた。もう一台のMacにも同じ作業をせねばならず、その他の忘備録を兼ねて手順を記しておくことにした。
以降、MacのOSを10.11 (El Capitan)にアップデートしたうえでの作業となる。
① Macをリブートさせる。起動時に [⌘] + [R] を、起動ゲージが動作し始めるまで押下しておく。
② メニュバーより、Utilities > Terminal を起動し、以下のコマンドを入力。
-bash-3.2# csrutil disable -bash-3.2# reboot
Macがリブートされ、Rootlessが無効になる。
③ ライブラリのアップデートを行なう。再度Terminalを起動し、以下のコマンドを入力。
$ sudo gem update
④ PHPライブラリ管理ツール「Composer」をインストールする。
$ brew update $ brew tap homebrew/homebrew-php $ brew tap homebrew/dupes $ brew tap homebrew/versions $ brew install php55-intl $ brew install homebrew/php/composer
⑤ Drushをインストールする。
$ composer global require drush/drush:7.*
⑥ ~/.bash_profile に以下の 1 行を追加し、パスを通す。
PATH="~/.composer/vendor/bin:$PATH"
⑦ MAMPを起動。依存関係問題でApachが立ち上がらないなどのエラーが生じている場合、アプリケーションをアンインストールし、再インストールする。
⑧ Drupalの作業階層までcdし、drush ogrdを実行。
⑨ drush ogrd時、以下のエラーが発生した際、
Additional uncaught exception thrown while handling exception. Original PDOException: SQLSTATE[HY000] [2002] Socket operation on non-socket in drupal_is_denied() (line **** of /Users/*****/*****/*****/*****/includes/bootstrap.inc). Additional PDOException: SQLSTATE[HY000] [2002] Socket operation on non-socket in _registry_check_code() (line **** of /Users/*****/*****/*****/*****/includes/bootstrap.inc). Drush command terminated abnormally due to an unrecoverable error. [error]
mysql.sockのリンクを設定しなおす必要がある。まずmysql.sockの場所を探す。
$ mysqladmin variables | grep mysql.sock | socket | /Applications/MAMP/tmp/mysql/mysql.sock |
その場所へのリンクを設定する。
$ cd /var $ sudo mkdir mysql $ cd mysql $ sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock
以上となる。
Comment