rcmdnk's blog
Last update

Gnu Screen

この前GNU screen 4.2.0がリリースされたのに続いてすぐに4.2.1がリリースされました。 Gitレポジトリのmasterブランチにも正式に4.2.1が入ったみたいなので ちょっと調べたことを。

GNU screen 4.2.0 及び4.2.1リリース

4.1系からの6年ぶり?だかのリリースになりますが、 とりあえず4.2.0へのアップデートはこちらに詳しくあります。

GNU Screenバージョン4.2がリリースされました - Keep It Simple, Stupid

4.2.1は数日後に幾つかバグフィックス等を行ったようです。

[screen-devel] GNU Screen v.4.2.0

GNU Screen - News: GNU Screen v.4.2.1 [Savannah]

インストール方法

ソースからコンパイル

GNU screenのGitの状況を見ると:

GNU Project Archives

masterにもprepare for v.4.2.1が入っています。

最新版はscreen-v4と言うブランチで作られていて ここの変更がmasterにも追加された形です(多分、昨日から今日にかけて)。

なので、ソースを取ってくるにはGitを使って

$ git clone git://git.sv.gnu.org/screen.git

とするか、 GNU Project Archives などからアーカイブされたものを取ってきます。

ちなみに、昨日までにもv.4.2.1のアーカイブは出来てましたが、 もし、開発中のscreen-v4をGitで取ってきたかったら

$ git clone git://git.sv.gnu.org/screen.git
$ cd screen
$ git checkout -b screen-v4 origin/screen-v4

とすればscreen-v4ブランチが取ってこれます(今の状態だとmasterと全く同じですが)。

コンパイルについてですが、コンパイルする前にパッチをあてます。

Macでの文字化け対策用のGNU screenのインストール

上のページに従い、screen-utf8-nfd.patchscreen-utf8-osc.diffの パッチを当てます。

screen-utf8-nfd.patch

screen-utf8-osc.diff

それからもう一つ、下のHomebrewのところで補足しますが、

gistfile1.diff

というファイルも取ってきて同じようにパッチをあてておきます。

追記: 2014/06/14

Mac以外でこれを適用してしまうと

tmp.c: In function ‘xpututline’:
utmp.c:887: warning: assignment makes pointer from integer without a cast
utmp.c:889: error: dereferencing pointer to incomplete type
utmp.c:889: error: ‘DEAD_PROCESS’ undeclared (first use in this function)
utmp.c:889: error: (Each undeclared identifier is reported only once
utmp.c:889: error: for each function it appears in.)
utmp.c:890: error: dereferencing pointer to incomplete type
utmp.c:890: error: dereferencing pointer to incomplete type
make: *** [utmp.o] Error 1

の様なエラーが出るので注意。

追記ここまで

これらに関して、screen-v4のログを見てみると、

screen outputs screen “ÿ” after a connected character.

と一度screen-utf8-nfd.patchの方のパッチをあてた後、

Revert “screen outputs screen “ÿ” after a connected character.”

とまた戻してます。いくつか他のパッチもあてたり戻したりしてます。

何か問題があったんだと思いますが、今のところ入れても特に大きな問題はないし、 逆に入れないと日本語ディレクトリが化けるので入れています。

MacでHomebrewを使って

Homebrewだと、デフォルトでは未だに4.0.3を取ってきますが、 Gitのmasterからも取ってこれることに気づいたのでメモ。

まず、最近のHomebrewではMacにデフォルトで入ってるコマンドは避け様というのが基本らしく、 そのようなコマンドについてはdupwsというレポシトリに入っているのでtapする必要があります。

Homebrew/homebrew-dupes: https://github.com/Homebrew/homebrew-dupes

$ brew tap homebrew/dupes

追記: 2022/08/06

現在はdupesレポジトリはなくなり、メインのFormulaレポジトリのhomebrew-coreblob/master/Formula/screen.rb)の中に入っています。

  • https://github.com/Homebrew/homebrew-core/blob/master/Formula/screen.rb

追記ここまで

次にscreen.rb を見てみると、HEADの指定が

git://git.savannah.gnu.org/screen.git

masterブランチの指定になってるのがわかるので、

$ brew install --HEAD screen

そしてあげると、 screen.rb の中のheadのものを入れることが出来ます。

現在はmasterに4.2.1が入ったのでこれで4.2.1が入ります。

もう少しFormulaを見てみると

homebrew-dupes/screen.rb
1
2
3
4
5
6
7
8
9
def patches
  if build.head?
    # This patch is to disable the error message
    # "/var/run/utmp: No such file or directory" on launch
    "https://gist.github.com/raw/4608863/75669072f227b82777df25f99ffd9657bd113847/gistfile1.diff"
  else
    "http://trac.macports.org/raw-attachment/ticket/20862/screen-4.0.3-snowleopard.patch"
  end
endp

と、パッチを使ってることが分かります。

headの方にあててるのはこちら

Patch for GNU Screen HEAD on OS X, which disables the error message “/var/run/utmp: No such file or directory” on launch. This is based on http://www.opensource.apple.com/source/screen/screen-16/patches/config.h.in.diff

どうもOS X特有でutmp周りのエラーメッセージに対する処理のようです。

上の題だとon launchと書いてあるんですが特に立ち上げ時に出てきたことは無いような。

ただ、コンパイルするときにutmp周りでwarning的なものが沢山出てきます。

それに対して、上のパッチをあててみるとutmp関連のwarningが消えてくれます。 実質的にコンパイル後にどう影響するか理解してないですが、 一応綺麗にコンパイルできるようになる、ということであてておきたいところ、 ということで上のソースから取ってくる場合にも入れることにしました。

多分他にもパッチはいろいろあるのでしょうが。。。

で、見て分かる通り、この場合には上の文字化け用のパッチがあたっていません。 もちろんFormulaを無理やりいじれば出来ますが、 それだとあまりスマートではありません。

もしかしたら他の部分の改善で上手くいってるかも、と思って パッチ無しで試してみたらやはり化けてしまいました。

ということで、今のところはMacでもHomebrewを使うことは断念して 素直に自分で手でコンパイルして入れる様にしています。

Sponsored Links
Sponsored Links

« GNU screenでのソケットディレクトリについて Macで最初に行う設定備忘録 »

}