読者です 読者をやめる 読者になる 読者になる

MacPorts をアンインストールして Homebrew に戻す

Inkscape仮想マシンでビルドすることにしたので、MacPortsからHomebrewへ。

継続的にメンテナンスされているパッケージと、そうでないパッケージの落差が激しいので。


Homebrewも問題がないとは言わないが、Bazaarとか一年前に2.7が出ているのに2.6のままだったり、しかもPythonのバージョンとの組み合わせでバグに遭遇するとか踏んだり蹴ったり。

あとは日本語のMacPortsの情報についてのWikiがちゃんと表示されないまま放置されていたりとか*1

ツールなりライブラリをインストールしたいのであって、issueトラッカーへのバグ報告がしたいわけじゃないので。

もちろんライブラリの共存機構やコンパイラの切り替えなどMacPortsにも長所はあります。ただ、それは私の求めているものではないいという話。

MacPorts のアンインストール

下記の公式の説明通りにすればよい。

2.4. Uninstall

MacPorts経由でインストールしたパッケージの削除。

$ 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

最後に.bash_profileなどの設定ファイルをチェックする。 MacPortsをインストールする前の.bash_profile.bash_profile.macports-saved_<日付>_at_<時刻>という形式のフィアイルに保存されているので比較したうえでMacPorts向けの設定を削除する。

私の環境ではファイルの末尾にコメントとともに記載されていたPATHを設定するためのexportで始まる行を削除しただけ。

Homebrew のインストール

brew.sh

数ヶ月ぶりに復帰、です。

これも公式ページのとおりに。

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

内部でsudoが実行されてパスワードを聞いてくるので素直に入力。

最終的に以下のメッセージが表示されるはず。

==> Installation successful!

==> Homebrew has enabled anonymous aggregate user behaviour analytics.
Read the analytics documentation (and how to opt-out) here:
  https://git.io/brew-analytics

==> Next steps:
- Run `brew help` to get started
- Further documentation:
    https://git.io/brew-docs

メッセージの内容通り、ユーザーの行動についての情報を収集しているそうなのでオプトアウトする。

$ brew analytics off

もしくは環境変数HOMEBREW_NO_ANALYTICSに"1"をセット。

環境によっては/usr/local配下に管理者権限で作成されたファイル、ディレクトリが存在する場合があるので権限を変更しておく。

$ sudo chown -R $(whoami):admin /usr/local/

追加でインストールするもの

よく使うものをインストール

$ brew update
$ brew install lv the_silver_searcher tmux git cmake p7zip hub wget bash nkf

Python

Pythonpyenvで切り替える。

$ brew install pyenv pyenv-virtualenv

ついでにpyenv-virtualenvもインストールしておく。

~/.bash_profileに下記を追加する(環境によっては~/.profile)。

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
$ pyenv install --list

Bash の入力補完

/usr/local/etc/bash_completion.d/配下に補完用の設定ファイルがインストールされるので、~/.bashrcに設定を追加。

インストール済みのパッケージによって存在するもののみ読み込むようにする。

[2017/03/03 追記]

bash-completionというパッケージを入れておかないとタブキーで入力補完を実行するたびに下記のようにエラーが出る。

-bash: _get_cword: command not found
-bash: _expand: command not found

日本語の場合:

bash: _get_cword: コマンドが見つかりません
bash: _expand: コマンドが見つかりません

パッケージを追加でインストール

$ brew install bash-completion

出力されるメッセージのの内容を~/.bash_profileもしくは~/.bashrcに追加。

[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion

c.f. Go 付属のcompletion使うと _get_cword: command not found エラーになる - libqtkmz

[追記ここまで]

$ vim ~/.bashrc
source /usr/local/etc/bash_completion.d/ag.bashcomp.sh
source /usr/local/etc/bash_completion.d/brew
source /usr/local/etc/bash_completion.d/git-completion.bash
source /usr/local/etc/bash_completion.d/git-prompt.sh
source /usr/local/etc/bash_completion.d/tmux
source /usr/local/etc/hub.bash_completion.sh

私の環境では~/.bash_profileから~/.bashrcを読み込むようにしています。RedHatLinuxを使っていた頃の名残というか癖というか。
aliasとか環境変数周りは.bashrcに設定するようにしています(bashの起動時に設定したいもの)。

まとめ

それぞれ一長一短あるように思いますが、

*1:Chrome系だから?