本博文最初发布于我的个人博客《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的恢复

发生在升级OS X Yosemite后:修复各种开发环境的更多相关文章

  1. 【转】搭建Mac OS X下cocos2d-x的Android开发环境

    http://young40.github.io/blog/2013/02/23/setting-up-android-development-envirment-on-mac-os-x/ http: ...

  2. 搭建Mac OS X下cocos2d-x的Android开发环境

    版本 Cocos2d-x: cocos2d-2.1beta3-x-2.1.1 OS X: 10.8 Android ADT Bundle: v21.1.0 Android NDK: android-n ...

  3. 金玉良缘易配而木石前盟难得|M1 Mac os(Apple Silicon)天生一对Python3开发环境搭建(集成深度学习框架Tensorflow/Pytorch)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_189 笔者投入M1的怀抱已经有一段时间了,俗话说得好,但闻新人笑,不见旧人哭,Intel mac早已被束之高阁,而M1 mac已经 ...

  4. laravel5 项目上线后务必将开发环境更改为生产环境

    如果以开发环境上线,出错信息将全通过json暴露出来了,屏蔽方式如下: .env 文件设置如下APP_ENV=productionAPP_DEBUG=false 改完设置后把缓存清理一遍 如果更改后清 ...

  5. Mac os x下配置 Android ndk 开发环境

    1.阅读下面之前,请确保你android sdk的开发环境已经搭建好,ADT也最好是目前最新的. 2.到http://developer.android.com/tools/sdk/ndk/index ...

  6. 解决Mac OS X 升级10.10(Yosemite)后ADT(Eclipse)无法找到真机

    升级Yosemite之后继续开发Android,发现当编译版本高于设备版本的时候设备选择器找不到真机了,WTF!难道要改低版本SDK开发不成?臣妾做不到啊! 后来捣鼓了一阵,发现解决方案有两个: 1. ...

  7. 升级10.10 Yosemite 后,cocoapods 出现错误(解决方案)

    RSMacBook-Pro:~ RS$ pod search jsonkit /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/li ...

  8. 如何在Mac OS系统下配置Java服务器开发环境

    1.http://www.oracle.com/technetwork/Java/javase/downloads/index-jsp-138363.html 安装JDK(可通过java -versi ...

  9. 以 MAMP 为 Mac OS X 安装并设置 PHP开发环境

    PHP 页需要通过 Web 服务器处理.因此,要在 Dreamweaver 中使用 PHP 进行开发,您需要访问支持 PHP 的 Web 服务器和 MySQL 数据库.phpMyAdmin 也很实用, ...

随机推荐

  1. Spring Cloud(6):Zuul的基本使用

    网关:API Gateway 系统对外唯一入口,介于客户端和服务端之间,处理非业务功能 提供路由请求,鉴权,监控,缓存,限流等功能 简单理解:小区门卫,防止非法人员入内,居民也可以问路 实际理解:假设 ...

  2. 更新数据库中数据时出现: Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences 问题

    使用workbench在数据库中更新数据时报错: You are using safe update mode and you tried to update a table without a WH ...

  3. Ubuntu 16.04安装7zip的图形界面工具PeaZip

    其实PeaZip不是7zip的图形界面工具,而是一整套方案,里面包括了7z格式的解压缩等. PeaZip Linux版本只有32位包,如果你使用的是64位Ubuntu系统,那么先打开终端运行下面的命令 ...

  4. sh变更权限

    添加权限 假设您创建一个 “Hello world” 的 shell 脚本.当您第一次创建脚本时,它通常是不可执行的.使用 chmod 命令和 +x 选项添加执行权限,如清单 5 所示. 清单 5. ...

  5. GSON学习笔记之初识GSON

    引用"JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,採用全然独立于语言的文本格式.为Web应用开发提供了一种理想的数据交换格式. " ...

  6. VirtualMachineManager

    Java Code Examples for com.sun.jdi.VirtualMachineManager https://www.programcreek.com/java-api-examp ...

  7. MongDB应用

    题外话 工作3年,了解的技术颇多,但都是一知半解,了解不是很透澈.用过的技术,就像猴子搬过的包谷,搬一个丢一个.几年风雨,真有点一缕清风过,片叶不沾身的味道. 为强化知识点,提升文档及学习能力,我把以 ...

  8. web 开发之js---js 实现网页中播放wav的一种方法(flash播放器)

    http://blog.csdn.net/whumr1/article/details/6948160

  9. JVM架构

    1 JVM的内存模型 1.1 堆空间 每个jvm都有一个堆,所有的对象都放在这里. 1.2 java栈空间 每个线程都有一个java栈,所有的java栈都放在这里. 1.3 本地方法栈 每个线程都有一 ...

  10. python包格式

    1 egg和wheel 前者扩展名是.egg,后者扩展名是.whl 它们都是python的模块.后者用来替换前者. wheel是轮子的意思,就是说,有了.whl包就不需要重新再造轮子了.