MacPortsからHomebrewに移住した記録

今北用三行

* MacPortsを削除するのは http://guide.macports.org/chunked/installing.macports.uninstalling.html この通りに
* Homebrewでrubyを入れるのは http://hatch2.com/blog/archives/1490 この通りに
* Homebrewでemacsを入れるのは```brew install emacs```

はじめに
----
HomebrewにはあるけどMacPortsにはない、というパッケージもちょくちょく見かけます。なのでMacPortsからHomebrewに引っ越しました。
今回はそれの記録です。



下準備：いつでも戻ってこれるように
----
まずは現状のバックアップを取っておきます。

* ファイルそのものはTimeMachineでバックアップ
* MacPortsで入れたパッケージの一覧を取得しておく

```sh:
macmini% port installed > /tmp/macports.txt
```

* MacPortsで入れたものの中で気になるのは以下2点
  * ruby1.9を入れてた。これのgemファイルの入れ直しも必要かもしれない。
  * emacs-aapp.24を入れてた。これは一時的に無くなっても大丈夫だとは思う

gemも入れ直しになるかもしれないので、listを残しておく。

```sh:
macmini% gem list > /tmp/gemlist.txt
```


ところでgemファイルはどこにあるんだっけ?
----
```sh:
macmini% gem which  `gem list  | awk '{print $1}' `
ERROR:  Can't find ruby library file or shared library activesupport
ERROR:  Can't find ruby library file or shared library addressable
/opt/local/lib/ruby1.9/1.9.1/x86_64-darwin12/bigdecimal.bundle
/opt/local/lib/ruby1.9/gems/1.9.1/gems/cocoapods-0.16.1/lib/cocoapods.rb
/opt/local/lib/ruby1.9/gems/1.9.1/gems/colored-1.2/lib/colored.rb
/opt/local/lib/ruby1.9/gems/1.9.1/gems/escape-0.0.4/lib/escape.rb
/opt/local/lib/ruby1.9/gems/1.9.1/gems/excon-0.16.10/lib/excon.rb
/opt/local/lib/ruby1.9/gems/1.9.1/gems/faraday-0.8.4/lib/faraday.rb
/opt/local/lib/ruby1.9/gems/1.9.1/gems/faraday_middleware-0.9.0/lib/faraday_middleware.rb
/opt/local/lib/ruby1.9/gems/1.9.1/gems/hashie-1.2.0/lib/hashie.rb
/opt/local/lib/ruby1.9/gems/1.9.1/gems/heroku-2.34.0/lib/heroku.rb
/opt/local/lib/ruby1.9/gems/1.9.1/gems/heroku-api-0.3.7/lib/heroku-api.rb
/opt/local/lib/ruby1.9/gems/1.9.1/gems/i18n-0.6.1/lib/i18n.rb
ERROR:  Can't find ruby library file or shared library io-console
/opt/local/lib/ruby1.9/1.9.1/json.rb
/opt/local/lib/ruby1.9/gems/1.9.1/gems/launchy-2.1.2/lib/launchy.rb
ERROR:  Can't find ruby library file or shared library mime-types
ERROR:  Can't find ruby library file or shared library minitest
/opt/local/lib/ruby1.9/gems/1.9.1/gems/multi_json-1.5.0/lib/multi_json.rb
ERROR:  Can't find ruby library file or shared library multipart-post
/opt/local/lib/ruby1.9/gems/1.9.1/gems/netrc-0.7.7/lib/netrc.rb
/opt/local/lib/ruby1.9/gems/1.9.1/gems/octokit-1.22.0/lib/octokit.rb
/opt/local/lib/ruby1.9/gems/1.9.1/gems/open4-1.3.0/lib/open4.rb
/opt/local/lib/ruby1.9/1.9.1/rake.rb
/opt/local/lib/ruby1.9/1.9.1/rdoc.rb
/opt/local/lib/ruby1.9/gems/1.9.1/gems/rest-client-1.6.7/lib/rest-client.rb
ERROR:  Can't find ruby library file or shared library rubygems-update
ERROR:  Can't find ruby library file or shared library rubyzip
/opt/local/lib/ruby1.9/gems/1.9.1/gems/xcodeproj-0.4.1/lib/xcodeproj.rb
macmini% 
```
大体が/opt/の下に、それ以外は所在不明らしい（組み込み？）ので、これらも入れ直しになるかと思います。


MacPortsを削除する
----
http://guide.macports.org/chunked/installing.macports.uninstalling.html を見ながら。

```sh:
macmini% sudo /opt/local/bin/port -fp uninstall installed
macmini% sudo rm -rf \
    /opt/local \
    /Applications/DarwinPorts \
    /Applications/MacPorts \
    /Library/StartupItems/DarwinPortsStartup \
    /Library/Tcl/darwinports1.0 \
    /Library/Tcl/macports1.0 \
    ~/.macports
```

この後に~/.profileにあったPATHの設定を削除。


Homebrewでrubyを入れ直し
----
http://hatch2.com/blog/archives/1490 を参考に

```sh:
macmini% brew install ruby -v 
```
-vオプションで、コンパイルの状況が表示されてmacportsっぽくなります。

Homebrewでは/usr/local/bin/の下に配置されるようです。

```sh:
macmini% where ruby
/usr/bin/ruby       # ← OS標準のruby
/usr/local/bin/ruby # ← Homebrewで入ったruby
macmini% /usr/bin/ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]
macmini% /usr/local/bin/ruby -v 
ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin12.2.0]
macmini% 
```

.zshrcにPATH指定を追加して、/usr/local/の下を優先して使うようにします。

```sh:.zshrc
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
```

```sh:
macmini% which ruby
/usr/local/bin/ruby
macmini% which gem
/usr/local/bin/gem
macmini% 
```

gemで使っていたrakeとcocoapodsを入れ直します。参考にしたサイトにある"brewを経由してgemをインストールできるbrew-gem"を試します。

```sh:
macmini%  sudo gem update --system
…
macmini% brew install brew-gem
==> Downloading https://github.com/josh/brew-gem/tarball/v0.1.2
######################################################################## 100.0%
  /usr/local/Cellar/brew-gem/0.1.2: 4 files, 16K, built in 3 seconds

macmini% brew gem rake
==> gem install rake --version 10.0.3 --no-rdoc --no-ri --install-dir /usr/local/Cellar/rake/10.0.3
Warning: Could not link rake. Unlinking...
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
You can try again using `brew link rake'
==> Summary
  /usr/local/Cellar/rake/10.0.3: 152 files, 936K, built in 16 seconds
macmini% brew link rake   
Linking /usr/local/Cellar/rake/10.0.3... Warning: Could not link rake. Unlinking...

Error: Could not symlink file: /usr/local/Cellar/rake/10.0.3/bin/rake
Target /usr/local/bin/rake already exists. You may need to delete it.
To force the link and delete this file, do:
  brew link --overwrite formula_name

To list all files that would be deleted:
  brew link --overwrite --dry-run formula_name
macmini% gem list

*** LOCAL GEMS ***

bigdecimal (1.1.0)
io-console (0.3)
json (1.5.5)
minitest (2.5.1)
rake (0.9.2.2)
rdoc (3.9.5)
rubygems-update (2.0.0)
macmini% 
```
rakeはすでに入ってて、"そこへのリンクが張れなかったから"エラーになったようです。

```sh
macmini% brew gem cocoapods -v
==> gem install cocoapods --version 0.16.3 --no-rdoc --no-ri --install-dir /usr/local/Cellar/cocoapods/0.16.3
 /usr/local/Cellar/cocoapods/0.16.3: 1138 files, 9.9M, built in 4.8 minutes
```

homebrew経由で入れたgemファイルは、 gemコマンドでは出てこないようです。この点少し不安です。

```sh:
macmini% brew list     
appledoc	cocoapods	libyaml		rake		ruby
brew-gem	gdbm		pkg-config	readline	z
macmini% gem list

*** LOCAL GEMS ***

bigdecimal (1.1.0)
io-console (0.3)
json (1.5.5)
minitest (2.5.1)
rake (0.9.2.2)
rdoc (3.9.5)
rubygems-update (2.0.0)
macmini% 
```


Homebrewでemacsを入れる
----
```sh:
macmini% brew install emacs    
…
macmini% emacs --version 
GNU Emacs 22.1.1    # ←あれ？
Copyright (C) 2007 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of Emacs
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.

macmini% ls -la /usr/local/bin/emacs 
lrwxr-xr-x  1 tak  admin  30  2 25 17:37 /usr/local/bin/emacs -> ../Cellar/emacs/24.2/bin/emacs
macmini% which emacs
/usr/bin/emacs     # ←OS標準のemacsの方が反応してた
macmini% where emacs
/usr/local/bin/emacs
/usr/bin/emacs
/usr/local/bin/emacs
macmini% rehash
macmini% which emacs
/usr/local/bin/emacs   # ← これでOK
macmini% 

```

.zshrcに書いていたemacsのショートカット部分をちょっと手直し

```sh:.zshrc
# デーモンモードで起動させ、それに接続する                                                                              
# 素のemacsをオーバーライドしないように、関数名をEとした。                                                              
function E(){                                                                                                           
    # if [[ ]] はzshでのif短縮形                                                                                        
    if [[ 0 -eq `ps ax | grep emacs | grep daemon | wc -l` ]] emacs --daemon                                            
    emacsclient -t $*;                                                                                                  
}                                                                                                                       
                                                                                                                        
# emacs.d/以下をいじっているとしょっちゅう再起動したくなるのでコマンド化                                                
function kill-emacs(){                                                                                                  
    emacsclient -e "(kill-emacs)"                                                                                       
}                                                                                                                       
      
```


Homebrewに引っ越した感想
----
* 依存関係で入るパッケージがほとんど無い？
  * MacPortsでemacs入れるときにごつごつと色々なパッケージが入ったと思うのだけど、homebrewだとほとんど入らない、というかすかすかすぎて逆に怖い
* ```brew doctor```でチェックできるのはありがたい。
* ```brew gem```は良いのか悪いのかよく分からない
* コンソールにビールが出てくるのが楽しくて良いです。



参考にしたサイト
----
http://tech.tmd45.in/entry/2012/07/05/120858
http://openlab.dino.co.jp/2008/08/18/220655330.html