發生在升級OS X Yosemite后:修復各種開發環境


本博文最初發布於我的個人博客《Jerry的樂園

終於還是忍不住升級了,促使我升級的原動力居然是Alfred的Yosemite theme居然比初始theme好看很多!在升級前就預想到我的開發環境是一定會被破壞的,所以升級好系統以后還是趕快看下發生了什么吧!

 

問題

一進新系統就發現phpstorm跪了,提示要裝jre6才能用。好吧,然后陸陸續續逐漸發現好多東西都跪了。只能一個一個慢慢修復啦。目前可見的發生錯誤的環境有:

  1. PhpStorm
  2. Homebrew
  3. node.js
  4. Apache
  5. MySQL

 

逐個擊破

1. PhpStorm

升級了Yosemite以后,按一般的尿性,蘋果肯定會升級所有運行環境的版本的,其中少不了Java,因此PhpStorm躺槍。肯定有同學要問啊,為什么JetBrains這種被譽為史上最屌霸天的IDE廠商所使用的jdk版本這么低!

JetBrains如是說:

Current JDK 1.7 and 1.8 versions have several critical issues. We can’t default to the new JDK version until these issues are resolved.

好了,解決方法就是下個jre6嘛!結果我在oracle的網站上找了半天卻只能找到提供給OS X的jre7和jre8。好吧,其實直接在蘋果官網上就可以找到下載鏈接:http://support.apple.com/kb/DL1572

2. Homebrew

Homebrew的運行離不開Ruby,升級后運行不了的原因其實也就是內置於Yosemite的Ruby版本更新啦:1.8 => 2.0。想要運行brew就會得到如下錯誤信息:

/usr/local/Library/brew.rb: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory

然后在網上找到解決辦法如下:

2.1 更新brew腳本

用你喜歡的編輯器打開/usr/local/bin/brew,然后將brew檢測系統的一段代碼注釋掉,具體如下所示:

#BREW_SYSTEM=$(uname -s | tr "[:upper:]" "[:lower:]")
#if [ "$BREW_SYSTEM" = "darwin" ]
#then
#    exec "$BREW_LIBRARY_DIRECTORY/brew.rb" "$@"
#else
    exec ruby -W0 "$BREW_LIBRARY_DIRECTORY/brew.rb" "$@"
#fi

2.2 創建軟鏈接

Homebrew會通過Ruby 1.8的路徑去找Ruby的運行環境,可惜在Yosemite里它再也找不到了。所以在Homebrew做出一定的改變以前,我們需要騙騙它,建立一個假的Ruby 1.8的地址,其實指向系統的Ruby 2.0運行環境。

sudo mkdir -p /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin
sudo ln -s /usr/bin/ruby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

3. node.js

好吧,其實寫這篇博客的時候只發現前面兩個問題。可是當我用grunt來自動生成我的博客時,卻收到了env: node: No such file or directory這樣的錯誤信息。看來node也在這次升級中慘烈犧牲了啊。

/usr/local/bin/下已經找到nodenpm卻發現是無法打開的,依舊會提示No such file or directory。目前還是不太清楚是什么原因造成的,最后解決的辦法也比較暴力:直接到node官網上下了個最新的pkg直接重新安裝一下就好了。

4. Apache

要本地調試代碼的時候發現Apache也不能幸免地跪了。執行apachectl -v發現Apache已經更新到2.4.9版本了。一定又是因為版本更新出了什么差錯。

4.1 修改httpd.conf

首先打開/private/etc/apache2/httpd.conf發現似乎恢復默認的設置了。重新將以下兩行代碼解注:

Include /private/etc/apache2/extra/httpd-vhosts.conf
...
LoadModule php5_module libexec/apache2/libphp5.so

4.2 修改httpd-vhosts.conf

打開private/etc/apache2/extra/httpd-vhosts.conf發現之前設好的虛擬主機似乎沒有被修改掉嘛!但因為升級到Apache 2.4以上設置需要一定的調整,不然就會得到403 Forbidden You don't have permission to access / on this server錯誤啦。

將原本的

<VirtualHost *:80>
    ServerAdmin zry656565@gmail.com DocumentRoot "/Users/Jerry/Dev/apache/php_tester" ServerName php_tester ErrorLog "/Users/Jerry/Dev/apache/php_tester/log/sites-error_log" CustomLog "/Users/Jerry/Dev/apache/php_tester/log/sites-access_log" common <Directory /> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride None Order deny,allow Allow from all </Directory> </VirtualHost>

改成

<VirtualHost *:80>
    ServerAdmin zry656565@gmail.com DocumentRoot "/Users/Jerry/Dev/apache/php_tester" ServerName php_tester ErrorLog "/Users/Jerry/Dev/apache/php_tester/log/sites-error_log" CustomLog "/Users/Jerry/Dev/apache/php_tester/log/sites-access_log" common <Directory /> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride None Require all granted </Directory> </VirtualHost>

其實就是將Order deny,allow, Allow from all改成Require all granted

5. MySQL

MySQL目前還沒有正式支持OS X Yosemite,所以在升級系統后會發現,MySQL的服務居然沒有在后台啟動。要解決這個問題只有手動啟動MySQL的服務,建議在~/.bash_profile中加入如下腳本,然后用source ~/.bash_profile啟用腳本。

export MYSQL_HOME=/usr/local/mysql/bin
alias start_mysql='sudo $MYSQL_HOME/mysqld_safe &'
alias stop_mysql='sudo $MYSQL_HOME/mysqladmin shutdown'

接下來,你只需要使用start_mysqlstop_mysql指令就可以開關mysql服務啦!

 

結語

其實本來還會發上第六條的:git。因為我發現我想把這篇博文發到github的博客上去卻失敗了!找了半天原因卻摸不着頭腦。后來突發奇想在gitcafe上創建了個項目居然push成功了,說明不是本地的git的問題,而是github的問題。過了一天才成功發上來還真是蛋疼!

以上這些解決方案在我本地都能夠解決問題,如果你還有什么疑問,可以在博文下留言,說不定能幫到你。

 

參考資料

  1. Homebrew, Ruby, and Rails on OS X 10.10
  2. Fix the PhpStorm Java Error with Yosemite
  3. Error message “Forbidden You don't have permission to access / on this server”
  4. start mySQL server from command line on Mac OS Lion

更新

  • 2014.11.16 添加apache、mysql的恢復


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM