screenの縦分割版をhomebrewでlionにinstall
teminal+sshでネットワーク切替時に接続がぶつぶつ切れるので、
screenを試してみることにしました。
縦分割をやりたくなったので
ソースからパッチ当ててinstallしようかと思いましたが
どうせやるならhomebrewで入れたかったので
Formulaファイルを作成して、やってみました。
formula
最終的にはコレ。
Library/Formula/screen-vertical-split.rb at master from rochefort/homebrew - GitHub
#screen-vertical-split.rb
require 'formula' class ScreenVerticalSplit < Formula url 'http://ftp.gnu.org/gnu/screen/screen-4.0.3.tar.gz' homepage 'http://www.gnu.org/software/screen/' md5 '8506fd205028a96c741e4037de6e3c42' def patches # enable vertical split patch [ "http://vsp4sdl.yuggoth.org/wrp_vertical_split_0.3_4.0.2.diff.bz2", "https://raw.github.com/gist/1143577/d351772f91704303d14aa6e654b8fdff90d3d225/pty.c.20110813.diff" ] end def install system "./configure", "--enable-colors256", "--prefix=#{prefix}", "--mandir=#{man}", "--infodir=#{info}" system "make" system "make install" end end
使い方
こいつを、/usr/local/Library/Formula/screen-vertical-split.rb という名前で保存して
brew install screen-vertical-split
macはデフォルトでscreenが入っているので元ファイルをrenameするなり
alias設定するなりして新しくinstallしたやつにパスを通してあげてください。
はまりどころ
make error
pty.c:38:26: error: sys/stropts.h: No such file or directory make: *** [pty.o] Error 1
そこでpty.cを見てみると、soralis用のコードでエラーとなっている。
pty.c /* for solaris 2.1, Unixware (SVR4.2) and possibly others */ #ifdef HAVE_SVR4_PTYS # include <sys/stropts.h> #endif
ちなみに、こちらで紹介されているようにLion/Leopardはstropts.hをサポートしていない模様。
Leopard で cvs版screen - bokuju とか tabe1hands の日記
なので、そこを削除するpatchをgistにあげて
brew install時にそいつを見るようにしてみました。
format of patches
brewから呼び出されるpatchコマンドは/usr/bin/patch -f -p1 -i という形式のようなので
1階層下に(old/new)生成されるようにpatchを作っています。
あと、最終行に改行を入れていないとエラーになったので、入れています。
$ diff -u old/pty.c new/pty.c --- old/pty.c 2011-08-13 16:22:42.000000000 +0900 +++ new/pty.c 2011-08-13 16:28:31.000000000 +0900 @@ -33,11 +33,6 @@ # include <sys/ioctl.h> #endif -/* for solaris 2.1, Unixware (SVR4.2) and possibly others */ -#ifdef HAVE_SVR4_PTYS -# include <sys/stropts.h> -#endif - #if defined(sun) && defined(LOCKPTY) && !defined(TIOCEXCL) # include <sys/ttold.h> #endif
screenrcはこれからですが、とりあえず縦分割達成。