Bye Bye Macports, Welcome Homebrew
Definition
Homebrew: The missing package manager for OS X
Why? well, the reality is, macports is not that good anymore.
Once you have many packages installed and start updating, everything start to break apart, lot’s of failing packages.
Homebrew is very easy to install, it’s fast and simple. That means you can make your own homebrew formula for your package so easily. oh, and homebrew is in ruby! :)
Back to topic, this is you how you get rails with mysql up and running with homebrew and rvm.
Clean up
To make sure to have a clean install, I recommend removing any previous .rvm installation and previous Xcode.
# rm -rf ~/.rvm/
# sudo rm -rf /Developer
1. Xcode
Install Xcode from AppStore. it’s 3 GB download so it may take a while.
after it’s downloaded it will not install automatically, you need to open Applications and install again from there. the name will be “Install Xcode”
Update: If you don’t want to download and install huge XCODE (3.0GB) :
https://github.com/kennethreitz/osx-gcc-installer
It allows you to install the essential compilers, GCC, LLVM, etc.
PS: I have not tested it
Thanks JP for the tip.
2. Install HomeBrew
UPDATE: in the comments some people recommended to do create the folder “/usr/local/Cellar” before hand, due to some bug on homebrew.
mkdir -p /usr/local/Cellar
# /usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"
Installation instructions: https://github.com/mxcl/homebrew/wiki/installation
3. install RVM
# bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
then after RVM is installed run this 'one-line' command.
# echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile
Details instructions: http://beginrescueend.com/rvm/install/
4. Install ruby 1.9.2
OS X Lion comes with Ruby-1.8.7-p249, but we all want ruby 1.9.2 right?
# rvm install 1.9.2
# rvm use ruby-1.9.2
# gem install rails thin bundler
....
I tested both ruby-1.9.2-head and ruby-1.9.3, latest sources from git, and it works well with all my apps.
With Ruby-1.9.3-head, Rails booted a lot faster.
If you wish to try 1.9.3:
# rvm install 1.9.3-head
Optionally you might want to install GIT, wget,
ack, imagemagick
and other mighty software tools for daily use.
# brew install git ack wget curl redis memcached libmemcached colordiff imagemagick
5. Install Mysql
# brew install mysql
one-line command:
# mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
Once mysql is installed you might want it to load automatically each time you start your mac.
# mkdir -p ~/Library/LaunchAgents
# cp /usr/local/Cellar/mysql/5.5.14/com.mysql.mysqld.plist ~/Library/LaunchAgents/
# launchctl load -w ~/Library/LaunchAgents/com.mysql.mysqld.plist
*check that the version I use here is 5.5.14
6. Troubleshooting:
if you have problems with mysql "cannot connect to /tmp/mysql.sock"
then create a file /usr/local/etc/my.cnf and add this:
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
bind-address = 127.0.0.1
port = 3306
socket = /tmp/mysql.sock
if encounter errors with homebrew run this command and follow recommendations:
# brew doctor
update: If you end up with Segmentation fault or cannot install Ruby-1.8.7, you might want to try this solution:
# export CC=/usr/bin/gcc-4.2
# rvm install ruby-1.8.7
by the way this is my /usr/local/etc/my.cnf optimized file, when using this file you may have to recreate your db
# mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
event_scheduler = ON
skip-character-set-client-handshake
collation_server = utf8_unicode_ci
character_set_server = utf8
bind-address = 127.0.0.1
port = 3306
socket = /tmp/mysql.sock
max_connections = 20
table_open_cache = 256
max_allowed_packet = 32M
binlog_cache_size = 1M
max_heap_table_size = 64M
read_buffer_size = 2M
read_rnd_buffer_size = 4M
sort_buffer_size = 8M
join_buffer_size = 512k
thread_cache_size = 2
thread_concurrency = 2
query_cache_size = 16M
query_cache_limit = 2M
default-storage-engine = INNODB
thread_stack = 192K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 64M
# MyISAM Options
key_buffer_size = 64M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 1G
myisam_repair_threads = 1
myisam_recover
# INNODB Options
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 128M
innodb_thread_concurrency = 2
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 4M
innodb_log_file_size = 8M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_flush_method = O_DIRECT
innodb_lock_wait_timeout = 120
innodb_file_per_table
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 16M
write_buffer = 16M
[mysqlhotcopy]
interactive-timeout
VN:F [1.9.11_1134]
Rating: 7.9/10 (7 votes cast)
VN:F [1.9.11_1134]
Rating: +1 (from 3 votes)
Bye Bye Macports, Welcome Homebrew
Definition
Homebrew: The missing package manager for OS X
Why? well, the reality is, macports is not that good anymore.
Once you have many packages installed and start updating, everything start to break apart, lot's of failing packages.
Homebrew is very easy to install, it's fast and simple. That means you can make ...