[RUBY] Mac OS X Mavericks 10.9.5 Development environment construction

Items to install

Install JDK

Java SE Development Kit 8 Downloads

$ java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)

Install homebrew

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
=> This script will install:
/usr/local/bin/brew
/usr/local/Library/...
/usr/local/share/man/man1/brew.1
 .
 .
 .
$ brew doctor
Your system is ready to brew.
$ brew update
Already up-to-date.
$ brew -v
Homebrew 0.9.5

Install MySQL

$ brew install mysql
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/mysql-5.6.20_1.mavericks.bottle.tar.gz
Already downloaded: /Library/Caches/Homebrew/mysql-5.6.20_1.mavericks.bottle.tar.gz
 .
 .
 .

Install Git

$ git --version
git version 1.9.3 (Apple Git-50)
$ brew install git
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/git-2.1.1.mavericks.bottle.tar.gz
 .
 .
 .
$ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry and just ignore them. Thanks!

Warning: /usr/bin occurs before /usr/local/bin
This means that system-provided programs will be used instead of those
provided by Homebrew. The following tools exist at both paths:

    git
    git-cvsserver
    git-receive-pack
    git-shell
    git-upload-archive
    git-upload-pack

Consider setting your PATH so that /usr/local/bin
occurs before /usr/bin. Here is a one-liner:
    echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile
$ echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile
$ source ~/.bash_profile
$ brew unlink git && brew link git
$ git --version
git version 1.9.3

Install OpenSSL

$ brew install openssl
Uninstalling /usr/local/Cellar/openssl/1.0.1i...
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/openssl-1.0.1i.mavericks.bottle.3.tar.gz
 .
 .
 .
$ which openssl
/usr/bin/openssl
$ brew link --force openssl
Linking /usr/local/Cellar/openssl/1.0.1i... 1140 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-gem-rehash
==> Downloading https://github.com/sstephenson/rbenv/archive/v0.4.0.tar.gz
######################################################################## 100.0%
 .
 .
 .
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ sudo cat >> ~/.gemrc << EOF
install: --no-rdoc --no-ri
update: --no-rdoc --no-ri
EOF

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

Install Ruby on rbenv

$ rbenv install -l
1.9.3-p547
2.0.0p576
2.1.3
 .
 .
 .
$ RUBY_CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline) --with-openssl-dir=$(brew --prefix openssl)" rbenv install 2.1.3
Downloading ruby-2.1.3.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/0818beb7b10ce9a058cd21d85cfe1dcd233e98b7342d32e9a5d4bebe98347f01
Installing ruby-2.1.3...
 .
 .
 .
$ rbenv global 2.1.3
$ sudo gem update --system
$ sudo gem install bundler && sudo gem install rails
$ sudo gem install sass --pre && sudo gem install compass --pre && sudo gem install compass-recipes --pre && sudo gem install animation --pre && sudo gem install susy --pre && sudo gem install haml

Install node.js, nvm, and grunt

$ brew install node
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/node-0.10.32.mavericks.bottle.tar.gz
######################################################################## 100.0%
 .
 .
 .
$ git clone git://github.com/creationix/nvm.git ~/.nvm
Cloning into '/Users/gumob/.nvm'...
remote: Reusing existing pack: 1256, done.
 .
 .
 .
$ source ~/.nvm/nvm.sh
$ node -v
v0.10.32
$ nvm --version
0.17.0
$ npm --version
2.0.0
$ sudo npm install -g grunt-cli
$ sudo 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
$ bower install --save-dev jquery
$ bower install --save-dev underscore
$ bower install --save-dev 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 Python

$ python --version
Python 2.7.5

$ brew install python --universal --framework
==> Installing dependencies for python: sqlite, gdbm, makedepend, openssl
==> Installing python dependency: sqlite
==> Downloading http://sqlite.org/2014/sqlite-autoconf-3080600.tar.gz
######################################################################## 100.0%
 .
 .
 .
$ $ python --version
Python 2.7.8
$ brew install python3 --universal --framework
==> Installing python3 dependency: xz
==> Downloading http://fossies.org/linux/misc/xz-5.0.7.tar.bz2
######################################################################## 100.0%
 .
 .
 .
$ python --version
Python 2.7.8
$ python3 --version
Python 3.4.1
$ brew update
$ pip install --upgrade setuptools
$ pip install --upgrade pip
$ pip3 install --upgrade setuptools
$ pip3 install --upgrade pip
$ brew linkapps
Linking /usr/local/Cellar/python/2.7.6_1/IDLE.app
Linking /usr/local/Cellar/python/2.7.6_1/Python Launcher.app
Linking /usr/local/Cellar/python3/3.4.0_1/IDLE 3.app
Linking /usr/local/Cellar/python3/3.4.0_1/Python Launcher 3.app
Finished linking. Find the links under /Applications.

Install distribute

$ curl http://python-distribute.org/distribute_setup.py | sudo python
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 17672  100 17672    0     0  18731      0 --:--:-- --:--:-- --:--:-- 18740
 .
 .
 .
$ curl http://python-distribute.org/distribute_setup.py | sudo python3
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 17672  100 17672    0     0  11731      0  0:00:01  0:00:01 --:--:-- 19484
 .
 .
 .

Install virtualenv

$ pip install virtualenv virtualenvwrapper
Downloading/unpacking virtualenv
  Downloading virtualenv-1.11.6-py2.py3-none-any.whl (1.6MB): 1.6MB downloaded
 .
 .
 .
$ pip3 install virtualenv virtualenvwrapper
Downloading/unpacking virtualenv
  Downloading virtualenv-1.11.4-py2.py3-none-any.whl (1.7MB): 1.7MB downloaded
 .
 .
 .
$ sudo cat >> ~/.bashrc << EOF
source /usr/local/bin/virtualenvwrapper.sh
EOF
$ source ~/.bashrc
# virtualenv for Python 2.7.6
$ mkvirtualenv VIRTUALENV_NAME
# virtualenv for Python 3.4.0
$ mkvirtualenv VIRTUALENV_NAME --python /usr/local/bin/python3
$ workon VIRTUALENV_NAME
(VIRTUALENV_NAME)$ deactivate
$ exit

Install Django and python modules to virtualenv

$ workon VIRTUALENV_NAME
(VIRTUALENV_NAME)$ cat >> ./pip-install.txt << EOF
BeautifulSoup==3.2.1
Django==1.5.1
MySQL-python==1.2.5
Pattern==2.6
SimpleThreads==1.2
South==1.0
beautifulsoup4==4.3.2
boto==2.32.1
chardet==2.2.1
django-debug-toolbar==1.2.1
feedparser==5.1.3
logging==0.4.9.6
lxml==3.4.0
python-dateutil==2.2
readability-lxml==0.3.0.3
requests==2.4.1
six==1.8.0
speedparser==0.2.0
sqlparse==0.1.11
tweepy==2.3.0
unicodecsv==0.9.4
urllib3==1.9.1
wsgiref==0.1.2
EOF
(VIRTUALENV_NAME)$ pip install -r pip-install.txt
Downloading/unpacking django (from -r pip-install.txt (line 1))
  Downloading Django-1.6.3-py2.py3-none-any.whl (6.7MB): 6.7MB downloaded
 .
 .
 .
(VIRTUALENV_NAME)$ rm -f pip-install.txt
(VIRTUALENV_NAME)$ pip freeze
(VIRTUALENV_NAME)$ deactivate
$ exit

Install CocoaPods

$ rbenv global 2.1.3
$ sudo gem install cocoapods
Password:
Fetching: fuzzy_match-2.0.4.gem (100%)
Successfully installed fuzzy_match-2.0.4
 .
 .
 .
$ pod setup

Other Configuration

$ sudo visudo
$ sudo cat /etc/sudoers
# User privilege specification
 .
 .
 .
# User privilege specification
root    ALL=(ALL) ALL
%admin  ALL=(ALL) ALL
username  ALL=(ALL) NOPASSWD: /usr/bin/rsync
 .
 .
 .

Recommended Posts

Mac OS X Mavericks 10.9.5 Development environment construction
Mac OS X Yosemite 10.10 Development environment construction
Mac OS X development environment construction memo
Mac OS X Mountain Lion 10.8.5 Development environment construction
Build a Python development environment on Mac OS X
GeoDjango + SQLite environment construction on OS X
Continuation ・ Notes on preparing the Python development environment on Mac OS X
Anaconda-4.2.0-python3 environment construction (Mac)
Python development environment construction
python2.7 development environment construction
Mac environment construction Python
Pyxel environment construction (Mac)
Mac development environment construction (Ansible + Serverspec + Travis CI)
Create a Python development environment in 10 minutes (Mac OS X + Visual Studio Code)
Django development environment construction memo
Building an environment for "Tello_Video" on Mac OS X
Python environment construction For Mac
[MEMO] [Development environment construction] Python
Memo on Mac OS X
django project development environment construction
Create a Python development environment on OS X Lion
[MEMO] [Development environment construction] wine
Ansible environment construction For Mac
Create a GO development environment with [Mac OS Big Sur]
Mac + Eclipse (PyDev) + Django environment construction
Start of self-made OS 1. Environment construction
Anaconda environment construction on Mac (2018 version)
Install Sphinx on Mac OS X
I checked Mac Python environment construction
[For beginners] Django -Development environment construction-
Installation of scikit-learn (Mac OS X)
Python environment construction memo on Mac
[Python3] Development environment construction << Windows edition >>
Python development environment construction on macOS
[MEMO] [Development environment construction] Jupyter Notebook
Install mitmproxy on Mac OS X
Environment construction of python3.8 on mac
Python3 TensorFlow for Mac environment construction
Emacs Python development environment construction memo
Ubuntu Desktop 20.04 development environment construction memo
Development environment construction (2020 version, WSL2 + VcXsrv)
Install pgmagick on Mac OS X 10.9
Environment construction procedure for the gym "Open AI Gym" that trains AI in games on Mac OS X
Python (anaconda) development environment construction procedure (SpringToolsSuites) _2020.4
WEB application development using django-Development environment construction-
How to prepare Python development environment [Mac]
Installed aws-cli On Mac OS X Lion
Python3 + venv + VSCode + macOS development environment construction
Prepare the development environment for keyhac for Mac
Construction of development environment for Choreonoid class
Windows + gVim + Poetry python development environment construction
Run NASA CEA on Mac OS X
Django environment construction
Python3 TensorFlow environment construction (Mac and pyenv virtualenv)
DeepIE3D environment construction
Emacs-based environment construction
Linux environment construction
Python environment construction
Python explosive environment construction starting from zero (Mac)
Environment construction (python)
django environment construction