A Way of Code

興味の赴くままに書き綴っていきます。

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を再構築できました。