Homebrewを再構築する、インストールしたパッケージはそのままで
homebrewをいじっていたら、Formulaディレクトリがごちゃごちゃになってきたのでhomebrewを再構築してみました。(何をいじっているんだ、というツッコミは無しで)
git reset --hardで戻らなかった時の手段としてメモを残しておきます。
パッケージを全てインストールし直していたら何日掛かるか分からないので、インストールしたパッケージはそのままで。
バックアップ
まずhomebrewからインストールしたパッケージのリストを保存しておきます。万が一、homebrweを完全アンインストールすることになっても、環境を再構築できるようにするために(そうはなってほしくないですが)。
$ mkdir ~/homebrew_backup $ brew list -v > ~/homebrew_backup/brew_list.log
さらに、念のためLinkedKegsをバックアップしておきます。
# 空き領域がある方は、さらにさらにCellarまでバックアップしておけば安心です
cd /usr/local cp -R Library/LinkedKegs
アンインストール
本家が提示しているアンインストール方法だと、インストールしたパッケージやシムリンクも削除されてしまうので、手動で最低限のものだけアンインストールしていきます。
rm -rf ~/Library/Caches/Homebrew rm -rf ~/Library/Logs/Homebrew cd /usr/local rm -rf .git rm -rf .gitignore rm -rf Library/Aliases rm -rf Library/Contributions rm -rf Library/Formula rm -rf Library/Homebrew rm -rf README.md rm -rf bin/brew rm -rf share/man/man1/brew.1
ちなみに、homebrewのインストーラーからインストールされるものは以下です。(サブサブディレクトリとその中にあるファイルは省略)
.git # brew updateしたときにインストールされる .gitignore # brew updateしたときにインストールされる Library/Aliases Library/Contributions Library/Formula Library/Homebrew README.md bin/brew share/man/man1/brew.1
インストール
本家の通りにインストール。
/usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"
既存のパッケージに影響はないか確認
さて、どうなっていることやら。
brew updateしてみる
$ brew update Initialized empty Git repository in /usr/local/.git/ remote: Counting objects: 58600, done. remote: Compressing objects: 100% (24770/24770), done. remote: Total 58600 (delta 38261), reused 50488 (delta 33106) Receiving objects: 100% (58600/58600), 8.93 MiB | 1.89 MiB/s, done. Resolving deltas: 100% (38261/38261), done. From https://github.com/mxcl/homebrew * [new branch] gh-pages -> origin/gh-pages * [new branch] master -> origin/master * [new branch] tap -> origin/tap HEAD is now at 71a53dc libzzip 0.13.60 Already up-to-date.
おお、正常に動いていますね!
brew listはどうだろう?
$ brew list -v binutils 2.21.1a cmake 2.8.7 colordiff 1.0.9 d-bus 1.4.16 1.4.18 fftw 3.3 flac 1.2.1 gdbm 1.10 gfortran 4.2.4-5666.3 ghostscript 9.05 git 1.7.9 … 以下省略
ちゃんと残っていましたね。
brew upgradeしてみる
$ brew upgrade ==> Upgrading 5 outdated packages, with result: binutils 2.22, git 1.7.9.2, imagemagick 6.7.5-7, mercurial 2.1.1, sdl 1.2.15 ==> Upgrading binutils ==> Downloading http://ftpmirror.gnu.org/binutils/binutils-2.22.tar.gz ######################################################################## 100.0% … 以下省略
無事にhomebrewを再構築できました。