rcmdnk's blog
Last update

APPLE MacBook Air 1.7GHz Core i5/11.6/4GB/128GB MD224J/A

単にgitを新しくしたかっただけなんですが、 Homebrewで入れてみよう、と思ったら 意外と色々やることがあったのでそのまとめ。

Sponsored Links

gitの更新

Linux環境で使ってるgitが1.8になって

warning: push.default is unset; its implicit value is changing in Git 2.0 from 'matching' to 'simple'...

と言った注意が出るようになってたので、

$ git config --global push.default simple

push.defaultを設定。主なオプションはsimplematchingmatchingの方がこれまでのデフォルトと同じ動きで simpleの方はupstreamでのブランチ名と現在のブランチ名を比べて 違った場合はpushしない様にちょっと保守的にする。

まあ、基本、自分用バックアップで使ってる程度なのでどっちでも良いのですが、 新しい初期値と言うことでsimpleに。

.gitconfigは他のdotfilesと同様いくつかの環境で同期しているので、 他の所でもこの設定で動かすように、、、した所、Macのgitがまだ1.7の古いバージョン (いくつだったか見てなかった…)で、 この.gitconfig設定を使うとsimpleというオプションは無いと言われてしまいました 1

ということで、gitをアップデートしよう、と思って/usr/bin/gitをアップデート する方法がぱっとわからないのと 2、Homebrewとかもうちょっと ちゃんと見てみよう、ってのがあったのでHomebrewで入れて見ることにしました。

Homebrewインストール

Homebrew自体は以前なんとなくインストールしていたのですが、

$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

こんなコマンドでさくっとインストール出来ます。

追記: 2014/02/24

raw関連のディレクトリ構造が変わったのと、レポジトリのユーザー名がHomebrew になったので、現在は

$ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

が正しいURLになります。(ユーザー名に関してはmxclを使ってもリダイレクトされる様になっています。)

追記ここまで

MacPortsの削除

MacPortsも以前なんとなく使ってみたくて入れた記憶はあるのですが、 なんのために入れたかさっぱり覚えてない(上に記録もない…)。

MacPortsが入っている状態でbrewコマンドを打つとMacPortsとかあって 衝突起こすからそっちは削除しなさい、毎回と注意されて嫌なのでこっちは削除することに。

取り敢えずMacPortsで管理されてるパッケージをメモ。

$ port installed | tee port_installed.txt

The following ports are currently installedu
  bzip2 @1.0.6_0 (active)
  curl-ca-bundle @7.25.0_0 (active)
  db46 @4.6.21_6 (active)
  expat @2.1.0_0 (active)
  gdbm @1.10_1 (active)
  gettext @0.18.1.1_2 (active)
  gperf @3.0.4_2 (active)
  libedit @20110802-3.0_0 (active)
  libiconv @1.14_0 (active)
  mercurial @2.1.2_0 (active)
  ncurses @5.9_1 (active)
  ncursesw @5.8_0 (active)
  openssl @1.0.1_2 (active)
  perl5 @5.12.3_1+perl5_12 (active)
  perl5.12 @5.12.4_0 (active)
  python27 @2.7.3_0 (active)
  python_select @0.3_1 (active)
  sqlite3 @3.7.11_0 (active)
  xz @5.0.3_0 (active)
  zlib @1.2.6_0 (active)

内容を見て、さらに謎 3。 取り敢えず必要になったら入れればいいやのスタンスで全て削除。

MacPortsのガイド 4に従い

$ sudo port -fp uninstall installed
$ sudo rm -rf \
    /opt/local \
    /Applications/DarwinPorts \
    /Applications/MacPorts \
    /Library/LaunchDaemons/org.macports.* \
    /Library/Receipts/DarwinPorts*.pkg \
    /Library/Receipts/MacPorts*.pkg \
    /Library/StartupItems/DarwinPortsStartup \
    /Library/Tcl/darwinports1.0 \
    /Library/Tcl/macports1.0 \
    ~/.macports

さらに.bashrc(から読み込んでるファイル)にあった下の様なPATHの設定を削除。

#for MacPort
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export MANPATH=/opt/local/man:$MANPATH

brew doctor

準備が整ったのでHomebrewを使っていきます。

Homebrewではbrew doctorというコマンドで環境のチェックをしてくれるので、

$ brew doctor

としたところ 最初はMacPortsを消すまえだったのでMacPortsを消しなさいの文句もありましたが、 削除後にも何やら沢山Warningが出ていて面倒そうでしたが、、せっかくなので全部Fixしてみました。

最初に出たWarningはこんな感じでした。

/usr/localの管理権限の追加

Homebrewではユーザー権限で/usr/local以下に色々追加していくのですが、 他のアプリを導入する際にprefix/usr/local指定にして sudo make install等としていると、root権限で/usr/localを作るので、 このディレクトリ下は通常のユーザー権限ではいじれなくなります。

doctorがそう言っていた(!?)こともあるので、これに対しては安易に

$ sudo chown -R $USER /usr/local

で権限をユーザーにあげてしまうことで解決。

Xcodeのアップデート

Xcodeをインストールする際、App Storeからと、直接ダウンロードして入れたものが あったみたいで、まず古いXcodeを消しなさい、的な表示があったので支持に従い

$ sudo   /Developer/Library/uninstall-developer-folder

を実行。これには数分かかりました。

Xcodeの再インストール

残ったXcodeも古いのか再インストールするよう促されるので、 一旦削除し(App Cleanerを使用)、 App Storeから再インストール。

さらにコマンドラインツールも古いから新しくしろと言われるので、 AppleのDevelopersページ からCommand Line Tools (OS X Lion) for Xcode - April 2013 をダウンロードしてきてインストール。

インストール後、一度もXcodeを立ちあげないとライセンスに同意してない、 と注意されるので、取り敢えずGUI版でもコマンドラインツールでも いいから立ち上げてライセンスに同意しておく必要があります。

一回Homebreewをアップデートしてみる

Xcodeの再インストールが住んだので、doctorで最後に注意される Homebrewを24時間以内にアップデートしてないよの表示を消すため brew updateを実行。

$ brew update
error: The following untracked working tree files would be overwritten by merge:
        Library/Formula/bigloo.rb
Please move or remove them before you can merge.
Aborting
Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master

エラーが出てしまったので、上で言われているbigloo.rbを一旦退避(その後削除)。

$ mv /usr/local/Library/Formula/bigloo.rb ~/tmp/

再びアップデート

$ brew upate

今度はOK。

ということで再びbrew doctorをして残りを潰していきます。

gitの状態の回復

Homebrewを大分前にインストールしたままの状態で何かしたのか、 You have uncommited modifications to Homebrewと言った注意があるので、 これも指示通り

$ cd /usr/local/Library && git stash && git clean -d -f

で解決。

Unlinked kegs

リンク関係がおかしいといったエラーが出るので、これも言われるがまま

$ brew link ghc

今回はghcだけについて言われたので1つだけ。

Unexpected libralies

/usr/local/libにUnexpectedな物がある、と注意される。 みてみるとBoost系が主なんですがこれもどこで入れたか覚えてない…

差し当たりHomebrewでBoostをインストールしてみます。

$ brew install boost

これでインストールされたのは

libboost_atomic-met.dylib

と言った感じのファイルたちで一方

libboost_atomic.dylib

と言った感じの元からあるファイル達はUnexpectedだと注意されます。

そこで、一旦注意されているファイルを退避させることにしました。

$ brew doctor >& doctor.log

で、実際、Unexpectedだと言われているものが必要あるかないかを確認して、 特に今すぐ消して困る、といったものも無かったので

$ mkdir -p ~/Documents/bkup/usr_local_lib/
$ cat doctor.log |grep  usr|grep -v Warning|xargs -J % mv % mv % ~/Documents/bkup/usr_local_lib/

で、全てのUnexpectedなファイルを退避。一応しばらくとっておきます。

これで大体カタが付きましたが、brew doctorしてみると 無効なリンクがあるとのことで、これも言われたとおり

$ brew prune

で解決。

で、もう一度doctorしてみると

$ brew doctor
Your system is ready to brew.

ということで全てFix出来ました。

gitのインストール

やっとのことHomebrewがちゃんと設定出来たので、gitをインストール。

$ brew install git

だけ。これで現時点での安定版の最新であるgit 1.8.3.1が/usr/local/bin 以下にインストールされます。

PATHの設定がlocalをさして居なかったり/usr/binより後にある場合は .bashrcを変更して

export PATH=/usr/local/bin:/usr/bin:$PATH

の様な行を加えます。

Sponsored Links
  1. simple1.7.11から導入されたらしいのでこれより古いやつが/usr/bin/にあったと言うこと。Xcodeのコマンドラインツールも途中で入れているので、これによってgitも更新されたらしく、今調べると、/usr/bin/にあるgitは1.7.12.4なので、これを使ってもsimpleで文句は言われなくなってます…

  2. そんなわけで、最新版に、というわけではありませんが、Xcodeのコマンドラインツールを入れるとこの/usr/bin/gitも更新されるわけですね。(最初のやつもXcodeのやつかな?覚えてないけど。)

  3. ncurses辺りがscreenだかコンパイルするときに必要だったのかな…

  4. MacPorts Guide: Uninstall

Sponsored Links

« Vimを使う上でのIME(日本語入力)の取り扱い スクロール時に付いてくるサイドバー »