zoukankan      html  css  js  c++  java
  • 发生在升级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的恢复
    钟爱javascript的程序猿
  • 相关阅读:
    HBase with MapReduce (MultiTable Read)
    HBase with MapReduce (SummaryToFile)
    HBase with MapReduce (Summary)
    HBase with MapReduce (Read and Write)
    HBase with MapReduce (Only Read)
    Hbase中的BloomFilter(布隆过滤器)
    HBase的快照技术
    How To Use Hbase Bulk Loading
    Cloudera-Manager修改集群的IP
    Java中的HashSet和TreeSet
  • 原文地址:https://www.cnblogs.com/jerryzou/p/4100741.html
Copyright © 2011-2022 走看看