最初に
2017/10/10 追記
最新 tmux 2.5 に対応したものを書きました。 以下の文書はもう古いので参照しないでください。何かのときのために文書自体は残しておきます。
tmux 2.2 は何か変
tmux 2.2 にはいろいろ問題があって しばらくは使わないほうがいいようです。
パッチが当たらない
UTF8 の日本語を tmux で扱うには tmux-ambiguous-width-cjk.patch
を当てた tmux がほぼ必須ですが 2.2 になってからこのパッチが当たらなくなってしまいました。何も考えず brew upgrade
しちゃった私は後悔し深く反省しました。
パッチが当たった tmux を入れられればいい人
御託は必要なくインストールだけしたい人は以下のようにしてください;
$ brew uninstall tmux
$ brew update
$ brew tap hage/homebrew-formula
$ brew install tmux21
バージョンダウンの方法
以前は brew versions <formula>
で古いバージョンのコミットハッシュを得て、Homebrew のディレクトリで git checkout <commit>
する方法がありましたが、今は使えません。versions
サブコマンドが削除されましたし、いかにも管理が面倒そうですし、もしできたとしてもやりたくありません。
バージョン 2.1 の Formula を得る
GitHub にある homebrew/homebrew-core から tmux の Formula を開き [History] ボタンを…、押してもなんかエラーが出てダメです。こいつの古いのを取り出すには clone するしかないようです。
$ git clone https://github.com/Homebrew/homebrew-core.git
$ cd homebrew-core
$ git log master -- Formula/tmux.rb
これを見ると 78b85
というコミットがどうやらそれっぽいです。
$ git checkout 78b85
これで Formula/tmux.rb
がバージョン 2.1 のものになりました。
Formula を編集
まず自分用の Formula を収めるローカルリポジトリを作りましょう。
$ mkdir -p ~/project/homebrew-formula
$ cd !$
$ cp /path/to/homebrew-core/Formula/tmux.rb tmux21.rb
$ git init . && git add . && git commit -m 'add: tmux 2.1 formula'
tmux21.rb
を編集します。やることは以下のとおりです;
- クラス名の変更 (ファイル名に合わせたクラス名にする必要があります)
- パッチの記述を追加
- bottle の記述を削除 (パッチを当ててコンパイルしなければならないので bottle の記述は邪魔になります)
diff --git a/tmux21.rb b/tmux21.rb
index 9922c5c..3b0d4b7 100644
--- a/tmux21.rb
+++ b/tmux21.rb
@@ -1,4 +1,4 @@
-class Tmux < Formula
+class Tmux21 < Formula
desc "Terminal multiplexer"
homepage "https://tmux.github.io/"
@@ -21,14 +21,6 @@ class Tmux < Formula
end
end
- bottle do
- cellar :any
- revision 2
- sha256 "815920cd38a8102360f7d667271d9c724f41087dd79be433db29259390ef8011" => :el_capitan
- sha256 "93e2156c3c7e1c9f3f4b86dd84617e7519e9bee630f1e8769e00a91aa341d274" => :yosemite
- sha256 "03c4ca001f72a1623393c0ec9406dfd82b7e449d745762a6e761da6a95d0fbd9" => :mavericks
- end
-
head do
url "https://github.com/tmux/tmux.git"
@@ -45,8 +37,8 @@ class Tmux < Formula
ENV.append "LDFLAGS", "-lresolv"
system "./configure", "--disable-dependency-tracking",
- "--prefix=#{prefix}",
- "--sysconfdir=#{etc}"
+ "--prefix=#{prefix}",
+ "--sysconfdir=#{etc}"
system "make", "install"
@@ -67,4 +59,11 @@ class Tmux < Formula
test do
system "#{bin}/tmux", "-V"
end
+
+ def patches
+ [
+ "https://gist.githubusercontent.com/waltarix/1399751/raw/8c5f0018c901f151d39680ef85de6d22649b687a/tmux-ambiguous-width-cjk.patch",
+ "https://gist.githubusercontent.com/waltarix/1399751/raw/dc11f40266d9371e730eff41c64a70c84d34484a/tmux-pane-border-ascii.patch"
+ ]
+ end
end
これをコミットしましょう。
GitHub に Push
GitHub に適当なリポジトリを作って先に作ったリポジトリを push しましょう。
brew tap → brew install
brew で GitHub から取り込むリポジトリを指定し、インストールしましょう
$ brew tap <Your-GitHub-Name>/<Your-Formula-Repository>
$ brew install tmux21
参考文献
- MacPorts で古い tmux をインストールして使う こちらは MacPorts でのやり方でした。Homebrew でのやり方が探してもなかったのでこの記事を起こす気になりました
- 半角 border パッチがあたった tmux 2.2 を MacPorts で入れて使う tmux 2.2 の問題点がまとまっています
- Homebrewでサクッとpatchを当てる