Edited at

Mac OS X El Capitan 10.11 開発環境構築 (クリーンインストール)

More than 3 years have passed since last update.


Items to install


  • Homebrew

  • JDK

  • Command Line Tools

  • MySQL

  • Git

  • Ruby, rbenv, rails

  • Node.js, nvm, grunt, bower

  • pyenv, virtualenv, django

  • CocoaPods


Install JDK

Java SE Development Kit 8 Downloads



$ java -version

java version "1.8.0_77"

Java(TM) SE Runtime Environment (build 1.8.0_77-b03)

Java HotSpot(TM) 64-Bit Server VM (


Install Command Line Tools for Xcode

Command Line Tools (OS X 10.11) for Xcode 7.3


Install homebrew

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

$ brew doctor
Your system is ready to brew.

$ brew update
Already up-to-date.

$ brew -v
Homebrew 0.9.5 (git revision be7f; last commit 2016-03-24)


Install MySQL

$ brew install mysql

==> Installing mysql
==> Downloading https://homebrew.bintray.com/bottles/mysql-5.7.11.el_capitan.bottle.tar.gz
...


Install Git && OpenSSL

$ git --version

git version 2.6.4 (Apple Git-63)

$ brew install git
==> Downloading https://homebrew.bintray.com/bottles/git-2.7.4.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring git-2.7.4.el_capitan.bottle.tar.gz
...
$ git --version
git version 2.6.4 (Apple Git-63)

$ echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile

$ source ~/.bash_profile

$ brew unlink git && brew link git

$ git --version
git version 2.1.2

$ which openssl
/usr/bin/openssl

$ brew link --force openssl
Linking /usr/local/Cellar/openssl/1.0.2g... 1588 symlinks created

$ which openssl
/usr/local/bin/openssl


Install Ruby, rbenv, and Rails

$ brew install readline

==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/readline-6.3.8.mavericks.bottle.tar.gz
######################################################################## 100.0%
...

$ brew install rbenv ruby-build rbenv-gemset
==> Installing dependencies for rbenv: autoconf, pkg-config, ruby-build
==> Installing rbenv dependency: autoconf
==> Downloading https://homebrew.bintray.com/bottles/autoconf-2.69.el_capitan.bottle.4.tar.gz
...

$ rbenv -v
rbenv 1.0.0

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

$ source ~/.bash_profile

$ cat >> ~/.gemrc << EOF
install: --no-rdoc --no-ri
update: --no-rdoc --no-ri
EOF

$ cat >> ~/.railsrc << EOF
--skip-bundle
--skip-test-unit
EOF

$ rbenv install -l
...
2.2.4
...

$ rbenv install 2.2.4

$ rbenv global 2.2.4

$ ruby -v
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-darwin15]

$ which ruby
/Users/*****/.rbenv/shims/ruby

$ gem update --system

$ gem install bundler rails

$ gem install sass --pre && gem install compass --pre && gem install compass-recipes --pre && gem install animation --pre && gem install susy --pre && gem install haml

$ rbenv rehash


Install node.js, nvm, and grunt

$ brew install node

==> Downloading https://homebrew.bintray.com/bottles/node-5.9.0.el_capitan.bottle.tar.gz
...

$ git clone git://github.com/creationix/nvm.git ~/.nvm
Cloning into '/Users/*****/.nvm'...
...

$ source ~/.nvm/nvm.sh

$ node -v
v5.9.0

$ nvm --version
0.31.0

$ npm --version
3.7.3

$ npm install -g grunt-cli

$ npm install -g bower

$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sane defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
name: MyProject
version: (1.0.0)
description:
entry point: (index.js) Gruntfile.coffee
test command: grunt watch
git repository:
keywords:
author: Developer
license: (MIT)
About to write to /Users/user/Project/MyProject/package.json:

{
"name": "My Project",
"version": "1.0.0",
"description": "",
"main": "Gruntfile.coffee",
"scripts": {
"test": "grunt watch"
},
"author": "Developer",
"license": "MIT"
}

Is this ok? (yes) yes

$ npm install --save-dev grunt grunt-banner grunt-bower-task grunt-concurrent grunt-concat-sourcemap grunt-contrib-clean grunt-contrib-coffee grunt-contrib-compass grunt-contrib-compress grunt-contrib-concat grunt-contrib-concat-sourcemaps grunt-contrib-connect grunt-contrib-copy grunt-contrib-cssmin grunt-contrib-haml grunt-contrib-htmlmin grunt-contrib-imagemin grunt-contrib-jade grunt-contrib-requirejs grunt-contrib-uglify grunt-contrib-watch grunt-devtools grunt-html-validation grunt-notify grunt-parallel grunt-play grunt-s3 grunt-shell grunt-slim load-grunt-tasks

$ cat package.json
{
"name": "My Project",
"version": "1.0.0",
"description": "",
"main": "Gruntfile.coffeee",
"scripts": {
"test": "grunt watch"
},
"author": "Developer",
"license": "MIT",
"devDependencies": {
"grunt": "^0.4.5",
"grunt-banner": "^0.2.3",
"grunt-bower-task": "^0.4.0",
"grunt-concurrent": "^1.0.0",
"grunt-contrib-clean": "^0.6.0",
"grunt-contrib-coffee": "^0.11.1",
"grunt-contrib-compass": "^1.0.1",
"grunt-contrib-compress": "^0.12.0",
"grunt-contrib-concat": "^0.5.0",
"grunt-contrib-connect": "^0.8.0",
"grunt-contrib-copy": "^0.6.0",
"grunt-contrib-cssmin": "^0.10.0",
"grunt-contrib-haml": "^0.2.0",
"grunt-contrib-htmlmin": "^0.3.0",
"grunt-contrib-imagemin": "^0.8.1",
"grunt-contrib-jade": "^0.12.0",
"grunt-contrib-requirejs": "^0.4.4",
"grunt-contrib-uglify": "^0.6.0",
"grunt-contrib-watch": "^0.6.1",
"grunt-devtools": "^0.2.1",
"grunt-html-validation": "^0.1.18",
"grunt-notify": "^0.3.1",
"grunt-parallel": "^0.3.1",
"grunt-play": "^0.1.0",
"grunt-s3": "^0.2.0-alpha.3",
"grunt-shell": "^1.1.1",
"grunt-slim": "^0.1.0",
"load-grunt-tasks": "^0.6.0"
}
}

$ bower init
[?] May bower anonymously report usage statistics to improve the tool over time? No
? name: My Project
? version: 1.0.0
? description:
? main file: index.html
? what types of modules does this package expose?:
? keywords:
? authors: Developer
? license: MIT
? homepage:
? set currently installed components as dependencies?: Yes
? add commonly ignored files to ignore list?: Yes
? would you like to mark this package as private which prevents it from being accidentally published to the registry?: (y? would you like to mark this package as private which prevents it from being accidentally published to the registry?: Yes

{
name: 'My Project',
version: '1.0.0',
main: 'index.html',
authors: [
'Developer'
],
license: 'MIT',
private: true,
ignore: [
'**/.*',
'node_modules',
'bower_components',
'test',
'tests'
]
}

? Looks good?: Yes
$ bower install --save-dev bootstrap jquery underscore normalize-css
$ cat bower.json
{
"name": "My Project",
"version": "1.0.0",
"main": "index.html",
"authors": [
"Developer"
],
"license": "MIT",
"private": true,
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test",
"tests"
],
"devDependencies": {
"bootstrap": "~3.2.0",
"jquery": "~2.1.1",
"underscore": "~1.7.0",
"normalize-css": "~3.0.2"
},
"exportsOverride": {
"bootstrap": {
"js": [
"**/bootstrap.js"
],
"css": [
"**/bootstrap.css",
"**/bootstrap.css.map",
"**/bootstrap-theme.css",
"**/bootstrap-theme.css.map"
],
"fonts": [
"**/*.eot",
"**/*.svg",
"**/*.ttf",
"**/*.woff"
]
},
"jquery": {
"js": "dist/*.js"
},
"underscore": {
"js": "**/underscore.js"
},
"normalize-css": {
"css": "**/normalize.css"
}
}
}

$ vi Gruntfile.coffee
module.exports = (grunt) ->
"use strict"
grunt.initConfig
pkg: grunt.file.readJSON("package.json")
bower:
install:
options:
targetDir: "./lib"
layout: "byType"
install: true
verbose: false
cleanTargetDir: true
cleanBowerDir: false

grunt.loadNpmTasks "grunt-bower-task"
grunt.registerTask "default", ["bower:install"]
return


Install pyenv & virtualenv

$ python --version

Python 2.7.10

$ which python
/usr/bin/python

$ brew install pyenv
==> Downloading https://github.com/yyuu/pyenv/archive/v20160310.tar.gz
...

$ brew install homebrew/boneyard/pyenv-pip-rehash
==> Tapping homebrew/boneyard
Cloning into '/usr/local/Library/Taps/homebrew/homebrew-boneyard'...
...

$ vi ~/.bash_profile
...
export PYENV_ROOT=${HOME}/.pyenv
if [ -d "${PYENV_ROOT}" ]; then
export PATH=${PYENV_ROOT}/bin:$PATH
eval "$(pyenv init -)"
fi

$ pyenv versions
* system (set by /Users/*****/.pyenv/version)

$ pyenv install --list
...
2.7.11
...

$ pyenv install 2.7.11

$ pyenv versions
* system (set by /Users/*****/.pyenv/version)
2.7.11

$ pyenv global 2.7.11 && pyenv versions
system
* 2.7.11 (set by /Users/*****/.pyenv/version)

$ pip install --upgrade pip

$ brew install pyenv-virtualenv pyenv-virtualenvwrapper

$ vi ~/.bash_profile
...
export PYENV_ROOT=${HOME}/.pyenv
if [ -d "${PYENV_ROOT}" ]; then
export PATH=${PYENV_ROOT}/bin:$PATH
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
export PYENV_VIRTUALENVWRAPPER_PREFER_PYVENV="true"
pyenv virtualenvwrapper
fi

$ source ~/.bash_profile


Install Django and python modules on virtualenv

$ mkvirtualenv VIRTUALENV_NAME

(VIRTUALENV_NAME)$ cat >> ./requirements.txt << EOF
... (write module names you want to install) ...
Django=1.9
... (write module names you want to install) ...
EOF

(VIRTUALENV_NAME)$ pip install -r requirements.txt
Downloading/unpacking django (from -r pip-install.txt (line 1))
...

(VIRTUALENV_NAME)$ source deactivate


Install gettext for i18n

$ brew install gettext

$ brew link gettext --force


Install CocoaPods

$ gem install cocoapods

...
Successfully installed cocoapods-0.39.0
...

$ pod setup
Setting up CocoaPods master repo
...
Setup completed