GNU Screen にパッチを当てて再構築

元ネタは

かな. screen 上で aptitude を起動すると, 罫線の表示がズレたりする. 最初はフォントが悪いのか, mlterm が悪いのか, とか思ってたんだけど (aptitude の時だけ uxterm 使ったりしてた) 試しに mlterm で aptitude を起動したら, 綺麗に表示された.

で, 調べたら上のサイトがあった訳で.

これは

  • ソースを取得して
  • screen install memo からパッチを取得して
  • dpatch で patch を管理して
  • パッケージを再構築して install

した作業ログ.

ソースの取得

apt 万歳

$ cd ~/comp/local_deb
$ apt-get source screen
 パッケージリストを読み込んでいます... 完了
 依存関係ツリーを作成しています... 完了
 877kB のソースアーカイブを取得する必要があります.
 取得:1 http://cdn.debian.or.jp etch/main screen 4.0.3-0.3 (dsc) [624B]
 取得:2 http://cdn.debian.or.jp etch/main screen 4.0.3-0.3 (tar) [841kB]
 取得:3 http://cdn.debian.or.jp etch/main screen 4.0.3-0.3 (diff) [35.4kB]
 877kB を 1s で取得しました (590kB/s)
 dpkg-source: extracting screen in screen-4.0.3
 dpkg-source: unpacking screen_4.0.3.orig.tar.gz
 dpkg-source: applying ./screen_4.0.3-0.3.diff.gz

いやー, apt ってホント素晴らしいですね.

dpatch の設定

dpatch で patch を管理する為に

  • debian/rules で
    1. /usr/share/dpatch/dpatch.make を include する
    2. configure で patch が当たるように.
    3. clean で unpatch されるように.

結果として

$ diff -u rules.org rules 
 --- rules.org     2007-05-17 22:55:21.000000000 +0900
 +++ rules     2007-05-17 22:52:43.000000000 +0900
 @@ -7,6 +7,8 @@
  # Uncomment me to turn on debugging
  #export DH_VERBOSE=1

  +include /usr/share/dpatch/dpatch.make
  +
  # the debhelper compatability version
  export DH_COMPAT=3

  @@ -17,7 +19,7 @@
   # statically define this... sucko
   TTYGROUP = 5

  -configure-stamp:
  +configure-stamp: patch-stamp
        dh_testdir
        ./configure --prefix=/usr \
                 --infodir='$$(prefix)/share/info' \
  @@ -32,7 +34,7 @@
        touch $@

  -clean:
  +clean: unpatch
        dh_testdir
        dh_testroot
        rm -f configure-stamp build-stamp

こんな感じ. dpatch が正しく適用されているのかは,

$ ./debian/rules patch
$ ./debian/rules unpatch

が正常に終了するかを確認する.

patch の取得

より.

  • screen-4.0.2-deadlock-patch
  • screen-4.0.2-hankanacopy-patch
  • screen-4.0.2-patch-cjkwidth-cvs-2006052001

を取得しておく.

dpatch へ patch を登録

パッチの登録は…正しい作法がある気もするんだけど, とりあえず

$ dpatch-edit-patch 01_deadlock
$ patch -p0 < screen-4.0.2-deadlock-patch
$ exit
$ dpatch-edit-patch 02_hankanacopy
$ patch -p0 < screen-4.0.2-hankanacopy-patch
$ exit
$ dpatch-edit-patch 03_cjkwidth-cvs-2006052001
$ patch -p0 < screen-4.0.2-patch-cjkwidth-cvs-2006052001
$ exit

これで, debian/patches/ 以下に各々の dpatch が置かれる. 当然ながら元のパッチが正常に当たらない場合にはこのままではダメで, dpatch-edit-patch の後にソースを直接修正することになる (patch のまま登録する場合は…どうすんだっけ? dpatch-convert-diffgz?).

$ ls debian/patches
 01_deadlock.dpatch
 02_hankanacopy.dpatch
 03_cjkwidth-cvs-2006052001.dpatch

あとはこれらを管理するために 00list を作成する.
00list の中身は patches 以下を一行に一個ずつ書いておけば良い.

$ cat debian/patches/00list
 01_deadlock
 02_hankanacopy
 03_cjkwidth-cvs-2006052001

今回は元のパッチが正常に適用されるので, 特に困った事は無かった.

パッケージの再構築

おきまりの

$ dch -i
 … changelog の編集. 注意すべきはバージョン情報かな.
$ sudo apt-get build-dep screen
$ debuild -rfakeroot
$ cd ../
$ dpkg -i screen*.deb

結果

…駄目だわ. やっぱ汚ないねぇ.
罫線が酷い. 検索の際に表示が崩れる様ではちょっと使いづらいなぁ…

何が問題なんだろう…