MacPortsからHomebrewに乗換え

Software Design 2011年12月号の特集「エンジニアの能力を引き出すMac活用術」のなかで、クックパッドでは、以前パッケージ管理にMacPortsを使っていたが、今はHomebrewでやっているとの記述を見つけたので、何人目の記事かはわからないが記録を残しておくことにした。


mac ports やめました! ー homebrew で快適 OSX 生活! - TokuLog 改メ tokuhirom’s blog http://d.hatena.ne.jp/tokuhirom/20100625/1277435268


私にとってのポイントは、Emacs環境を維持することになるので、Emacsで導入しているlispのうち、MacPorts由来のプロダクトに動作に影響が出るものをインストールできることをひとまずの目標とした。

man brew

影響が出そうなもの

Emacs本体

Cocoa Emacs に migemo をインストールで整理したとおり、.emacs.d/lisp配下にlispはインストールしてあり、また.emacs.d/init.elでパスを通す設定をしているの、EmacsをMacPorts由来のものに入れ替えさえすれば、lispは動作するはず。

Migemo

Cocoa Emacs に migemo をインストールでインストールしたとおり、migemoをインストールしていたが、Formulaが見あたらないので、「cmigemo」をインストールすることにした。それに伴い、.emacs.d/init.elの記述を一部変更した。

auto-install.el

動作には、「wget」が必要なのでhomebrew環境でインストールする。

Wanderlust

HTMLメールを表示する際に、「w3m」を使っている。 ログイン時のstarttlsのために「gnutls」を使っている。 それぞれhomebrew環境でインストールする。

twittering-mode

twittering-mode更新でOAuth認証で整理したとおり、OAuth認証をするのに「GnuPG」を使っている。 タイムライン取得に「curl」を使っている。 それぞれ、homebrew環境でインストールする。

MacPortsアンインストール

以上を整理した上で、MacPortsをアンインストールする。 手順はMacPorts Guideのアンインストール手順のとおりに実施した。 おしまい。 インストールパスをいじっていないので特に問題なく終了。

Homebrewをインストール

Installation - Homebrew - GitHubを参考にターミナルから以下のコマンドを実行する。 Xcodeが必要になるので、新規に構築する場合には忘れずに…(未来の自分に向けて)

$ ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"

途中で何度か「Press enter to continue」で止まるが、その度にEnterキーを押す。

==> Installation successful!

が表示されれば終了。

その後は、上記で整理したパッケージを順次インストールしていく。 もともとMacにインストールされているものはそのまま使うというコンセプトなので、環境構築までの時間が短くてすむのがメリットなんだねというのを体感できます。

w3mで苦戦

w3mのインストールで苦戦しましたが、Lion+homebrew で w3m が動かなかったのがなんとかなったヒャッハー: 麦汁三昧を教えていただいて、こちらの情報を参考に手順を実施しました。

w3mが依存しているbdw-gcのバージョンを7.2alpha6にすればよいとのことで、bdw-gcのFormulaを調べてみると

require 'formula'

class BdwGc < Formula
  homepage 'http://www.hpl.hp.com/personal/Hans_Boehm/gc/'

  if ARGV.build_devel?
    url 'http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.2alpha6.tar.gz'
    md5 '319d0b18cc4eb735c8038ece9df055e4'
    version '7.2alpha6'
  else
    url 'http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.1.tar.gz'
    md5 '2ff9924c7249ef7f736ecfe6f08f3f9b'
  end

  # patch to fix inline asm errors with LLVM, present in upstream SVN
  # some directory restructuring between 7.1 and 7.2a6 force us to have two
  # versions of the same patch
  def patches
    if ARGV.build_devel?
      DATA
    else
      { :p0 => "https://trac.macports.org/export/86621/trunk/dports/devel/boehmgc/files/asm.patch" }
    end
  end

  def install
    # ucontext has been deprecated in 10.6
    # use this flag to force the header to compile
    ENV.append 'CPPFLAGS', "-D_XOPEN_SOURCE" if MacOS.snow_leopard?

    system "./configure", "--disable-debug",
                          "--disable-dependency-tracking",
                          "--prefix=#{prefix}"
                          "--enable-cplusplus"
    system "make"
    system "make check"
    system "make install"
  end
end
(…略)

となっており、「if ARGV.build_devel?」の記述から

$ brew install --devel bdw-gc

とすれば、狙ったバージョンがインストールできることがわかりました。

w3mも上記の記事の記載通りにインストールしてうまくいきました。

.emacsの修正

migemo→cmigemo

migemoをcmigemoに変更したので、コマンドとコマンドオプション部分の記述を変更している。

変更前

(setq migemo-command "migemo")
(setq migemo-options '("-t" "emacs"))

変更後

(setq migemo-command "cmigemo")
(setq migemo-options '("-q" "--emacs"))

emacs-w3m

MacPortsでは/opt/local/bin配下にコマンドが配置されるが、Homebrewは/usr/local/bin配下に配置される。 よって、コマンドの在処の記述を変更。

変更前

(setq w3m-command "/opt/local/bin/w3m")

変更後

(setq w3m-command "/usr/local/bin/w3m")

Emacsテクニックバイブル ?作業効率をカイゼンする200の技?

Emacsテクニックバイブル ?作業効率をカイゼンする200の技?

Emacs Lispテクニックバイブル

Emacs Lispテクニックバイブル

  • 作者: るびきち
  • 出版社/メーカー: 技術評論社
  • 発売日: 2011/11/26
  • メディア: 単行本(ソフトカバー)
  • 購入: 5人 クリック: 220回
  • この商品を含むブログを見る