LoginSignup
4
4

More than 5 years have passed since last update.

tmux 2.2 が何かおかしいので homebrew で tmux 2.1 にダウングレードする

Last updated at Posted at 2016-06-03

最初に

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

参考文献

4
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4