遅ればせながら w3m インラインパッチを試してみる(今まで個人的に需要がなかったので)。 UTF-8 を w3m で読むためののマルチリンガル化ということでこの URL を教えてもらったのだけれども、なぜか画像 patch の方を先に。
Debian GNU/Linux Box に imlib-dev がまだ入ってなかったのでこれを apt-get してから
tar zxvf w3m-0.2.1.tar.gz cd w3m-0.2.1 patch -p1 < ../w3m-0.2.1-img-1.10.patch ./configure --prefix=/usr/local/w3m-0.2.1-img-1.10 make install
おっ、絵が出た。
なんか画像がズレているけどこんなものなのかなと思ったら、オプションセッティングパネルで文字幅、一行の高さを設定する必要があったのであった。 kterm でナガ10(naga10)を利用しているので文字幅5、高さ10にしたらバッチリ。スバラシイ。
WiKicker で使用しているキャッシュシステム Memcached 用の Perl API Cache::Memcached が新しくなっていたので、入れ換え。
1月に入れた時と同様、Perl 5.005_03 ではそのまま動かないので一部を修正。 前回はCVSスナップショット(Memcached.pm revision 1.8)に対する修正だったので手元で修正しただけだったが、今回はパッチも作っておく。
修正点は
といったところ(WiKicker で使っているところのみ修正)。
以前は Use of uninitialized value がかなり出ていたのだが、 Cache::Memcached のコード自体が綺麗になったのかこれらも出なくなっていい感じ。
そういえばパッチなんて滅多に作らないな。Cache::Memcached のパッチを作った時の手順をメモしておく。 公開する場合のパッチの作り方はこんな感じでOK?
--- 作成 tar zxvf Cache-Memcached-1.13.tar.gz cp -a Cache-Memcached-1.13 Cache-Memcached-1.13.orig emacs Cache-Memcached-1.13/Memcached.pm diff -ur Cache-Memcached-1.13.orig Cache-Memcached-1.13 > Cache-Memcached-1.13-5.005_03-20040605.diff --- patch する時 tar zxvf Cache-Memcached-1.13.tar.gz patch -p0 < /tmp/Cache-Memcached-1.13-5.005_03-20040605.diff
1.14 が 7月27日にリリースされていたのでパッチ作成。 1.13 用のパッチがあたったのでそのままいけるかなと思ったが、テストしたところまたいくつかの非互換コードが増えていたのでそれらの修正を行う。
tar zxvf Cache-Memcached-1.14.tar.gz cp -a Cache-Memcached-1.14 Cache-Memcached-1.14.orig patch -d Cache-Memcached-1.14 -p1 \ < Cache-Memcached-1.13-5.005_03-20040605.diff find Cache-Memcached-1.14 -name '*.orig' -exec rm {} ';' emacs Cache-Memcached-1.14/Memcached.pm LC_ALL=C TZ=UTC0 diff -Naur \ Cache-Memcached-1.14.orig Cache-Memcached-1.14 \ > Cache-Memcached-1.14-5.005_03-20040731.diff
新規修正点は
2004-07-19 * don't use pos() because it doesn't seem to work in taint mode. use $+[0] instead. (Dave Evans <..@djce.org.uk>)
それからパッチの作り方を変更。patch の man の通り LC_ALL=C TZ=UTC0 にするのとオプションを -Naur を使うように。
また 1.14 から String::CRC32 が必要になった。
都合によってCVS リポジトリにアクセスできないところにいるチームメンバから、変更した作業ファイルを送ってもらった。
さて。
どうするか。
ファイルに $Id$ などが含まれていてどのリビジョンに対して変更したのかが簡単にわかるものは diff をとって patch をあてるか。 自分の作業ディレクトリとは別にもう一つ作業ディレクトリをチェックアウトして、そこに変更されている作業ファイルを上書きコピー。
cvs diff -r リビジョン -au ファイル名 | patch /path/to/my/working/dir/ファイル名
で自分の作業ファイルにマージ。
とりあえず HEAD と diff してみて問題なさそうならそのままマージ。
やっぱりリビジョン番号を埋め込んでおいた方が便利やね。
reStructuredText 形式の parse が失敗するようになったと思ったら、Docutils のパッケージが upstream の 0.4 に追従してバージョンが上がっていた。
Release Notes に
Added Japanese and Simplified Chinese language mappings, and support for double-width CJK-characters in tables and section titles.
とあって期待したのだが、試してみたところまだまだ駄目っぽい。
0.3.9 に戻して 以前入れた時と同様 patch をあて、元の環境に戻す。
今後に期待。
ThinkPad X31 に入れている Debian GNU/Linux sid の Linux kernel を随分アップデートしていなかった(2.6.17 を使用中)。 今日 aufs を入れついでに、一緒に最新(2.6.23)をビルドすることにした。 Debian kernel パッケージ構築は去年の8月以来。
今回は linux-patch-aufs を入れておいて、aufs 用のパッチを当てる。
#apt-get build-dep linux-image-2.6.23-1-686 #apt-get install linux-source-2.6.23 linux-patch-aufs #exit $mkdir -p /usr/local/src/linux $cd /usr/local/src/linux $tar jxvf /usr/src/linux-source-2.6.23.tar.bz2 $cd linux-source-2.6.23 $make menuconfig $make-kpkg clean $fakeroot make-kpkg --added-patches put_filp,lhash,splice,ksize,sysfs_get_dentry --revision=sebastian.1.0 kernel_image $cd .. $su #dpkg -i linux-image-2.6.23_sebastian.1.0_i386.deb
パッチが一部 2.6.22 用で 2.6.23 には当たらなかったが、よしとしておく。 ここで再起動。次に MADWIFI と aufs をインストール。
module-assistant prepare module-assistant auto-install madwifi module-assistant auto-install aufs
いつも入れている shfs も同様に入れようと思ったがこちらはコンパイルエラー。 頻繁に使うわけではないので、とりあえずほっておくことにする。
コンパイルが面倒なのでそろそろ Debian 公式のを使おうかと思ったが、試してみたところ
ということ NG。 やはり自前でビルドしなければならないことを再確認。
OS X に Homebrew でインストールした Emacs をしばらく使ってみて IME インラインパッチなるものがないと辛いということがよくわかりました。
今は Homebrew の emacs formula では IME インラインパッチが当たらなくなっているので自分で当ててインストールしなおしました。
パッチは @takaxp 氏の
を使いました。感謝。まずはパッチファイルを取得。
$ mkdir ~/tmp $ cd ~/tmp $ git clone git@gist.github.com:1d91107b311b63b57529.git
次に emacs formula を書き換えます。
$ brew update $ brew edit emacs
で起動したエディタで先頭の方に patch 処理と Autoconf・Automake への依存情報を追加します(/Users/naney は私の HOME ディレクトリ)。
class Emacs < Formula desc "GNU Emacs text editor" homepage "https://www.gnu.org/software/emacs/" url "http://ftpmirror.gnu.org/emacs/emacs-24.5.tar.xz" mirror "https://ftp.gnu.org/gnu/emacs/emacs-24.5.tar.xz" sha256 "dd47d71dd2a526cf6b47cb49af793ec2e26af69a0951cc40e43ae290eacfc34e" # ここから追加 patch :p1 do url "file:///Users/naney/tmp/1d91107b311b63b57529/emacs-24.5-inline.patch" end depends_on "autoconf" => :build depends_on "automake" => :build # ここまで追加 bottle do ...
保存したらあとは Emacs をアンインストールし、書き換えた fomula で再度 Emacs をインストール。
$ brew uninstall emacs $ brew install --with-cocoa --with-gnutls --verbose emacs
やっほー。これで「Google 日本語入力で平仮名入力になっている時に C-x C-f と打ったらカレントバッファに変な文字が入力されてる!」なんていうのが無くなりました。快適です。
双方向ファイル同期化ツール Unison File Synchronizer、 Mac で使っているのが Unison 2.48.6 の GUI 版なのだけれど、古いせいか macOS Catalina だと「Install command-line tool」 が機能しない(/usr/bin にインストールしようとしているからかな)。
macOS 上で text UI 版がちょっと使いたい & GUI 版も新しいのにしたいなと思ってビルドとかした。
2021年01月05日時点での安定版は 2.51.3。
$ brew install unison
で text UI 版の「unison version 2.51.3 (ocaml 4.10.0)」が入る。GUI 版は入らない。
Unison 最新版のバイナリ配布が見当たらないのでビルドしてみる。 Xcode が必要。
$ xcode-select --install
で入る Command Line Tools だけだと text UI 版の Unison しかビルドできないので App Store から Xcode をインストールした。
OCaml は Homebrew ので済ます。
$ brew install ocaml
今日時点で入るのは OCaml 4.10.0 だ。次に Unison 2.51.3 をビルドする。
$ cd ~/tmp $ curl -OL https://github.com/bcpierce00/unison/archive/v2.51.3.tar.gz $ tar zxvf v2.51.3.tar.gz $ cd unison-2.51.3 $ make all
make だけだと text UI 版しかビルドされないので make all してみた。が残念 GUI 版はエラーで途中で止まった。今はうまくビルドできないのかもしれない。
諦めて make で text UI 版だけバイナリを得ることにした。 make 後
$ ./src/unison -version
で実行できることを確認。 ./src/unison を適当なところにコピーしておく(これなら brew install unison で十分だった)。
ローカルホストの Unison とリモートホストの Unison のバージョンが合っていないと同期できないのでリモートホスト側 (FreeBSD 9.1-RELEASE-p24) でも同じバージョンのものをビルドする。さくらのレンタルサーバ プレミアムで root 権限はないのでユーザー権限にて。
まずは OCaml。最近の OCaml は opam というのでインストールして使うのが流儀らしい。 opam をインストール。
$ cd ~/tmp $ mkdir bin $ curl -OL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh $ BINDIR=$HOME/tmp/bin sh install.sh
リモートホストの環境に合ったプレビルドが無いとエラーが出て install.sh ではインストールできず。
OCaml の前に遡って opam のビルドをする。
$ cd ~/tmp $ curl -OL https://github.com/ocaml/opam/archive/2.0.7.tar.gz $ tar zxvf 2.0.7 $ cd opam-2.0.7 $ gmake cold CONFIGURE_ARGS="--prefix ~/tmp/opam" $ gmake cold-install
ビルドできた。opam を初期化する。
$ PATH=$HOME/tmp/opam/bin:$PATH $ opam init
gpatch が無いとエラーで止まった。 patch へのシンボリックリンクで gpatch を作ってイケるかなと思ったけど今度は別のエラーで止まる。うーん。 opam で OCaml をインストールするのは断念。
OCaml のドキュメントを読んだら今まで通り configure して make も普通にできるじゃない。
$ curl -OL https://github.com/ocaml/ocaml/archive/4.10.0.tar.gz $ tar zxvf 4.10.0.tar.gz $ cd ocaml-4.10.0 $ ./configure --prefix $HOME/tmp $ gmake $ gmake install
次に Unison 2.51.3 をビルドする。出来上がったバイナリは今使っている Unison 2.48.3 と併用できるように別のディレクトリへ。
$ cd ~/tmp $ curl -OL https://github.com/bcpierce00/unison/archive/v2.51.3.tar.gz $ tar zxvf v2.51.3.tar.gz $ cd unison-2.51.3 $ PATH=$PATH:$HOME/tmp/bin $ gmake $ ./unison -version $ mkdir -p $HOME/local/unison-2.51.3/bin $ cp -a src/unison $HOME/local/unison-2.51.3/bin
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。