debuildなどで遊ぶ。パッチを当てる

debian系システムを使っていてaptの扱いもまともに知らんとは……(ーー;

というわけでapt-get sourceからビルドしてみようと調べた矢先、俺の精神を猛烈に削るグーグル検索の結果が発覚したんである

xpdf を apt-get source から make して使ってみる

!?

いやー……6年前の記事なんですけども……おつかれです俺。冒頭の一行の重みがじわじわ

最終ゴールは以下の記事の
Ubuntu 12.04 の ejabberd に Pidgin から接続できない

以下の部分を再現することです
そこで、unstable から 2.1.10-3 のソースコードを持ってきて、debian/patches から relax-digest-uri-handling.patch を取り込み、debian/patches/series と debian/changelog を修正して、debuild します。そして、インストール。
再現魔術は重要ですよ。結局手作業の問題でしかない、という面もあるんですけど。

しかしどうせなのでgpg署名をしてパッケージを作るのもやってみます。そう、これは壮大なヤク毛刈り。いっそ、殺してしまえ、やっくバスターズ

参考: リトルバスターズ

○ gpg --gen-key でハマる

http://pochi.usamimi.info/linux/gnupg.html

ええとですね。エントロピーがないと言われるですよ。
Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 284 more bytes)
通常こういうメッセージが発生した時にはマウスでがちゃがちゃやるんですが、sshしてるからそれが出来ないわけでして。。試しにキーボードをバンバン叩いても手元が揺れるだけでEC2はビクともしません。

でまぁ、これ自体は比較的昔からある問題のはずで、EC2のご時世でもそういう問題を発見して回避する努力が提供されていないというだけ。

http://optimalops.blogspot.jp/2010/01/entropy-at-work.html
Even though the entropy_avail value kept going up and down while I was doing this, it turned out that the GPG key generation just kept taking what was available as new bytes, and after 10 minutes or so had enough bytes to finish:
というわけで ls -R / とか、あるいは dd で適当にファイルカキコするのが良いのではないか。
dd if=/dev/urandom of=tmpfile bs=1M count=5123
ただ、コマンドを叩いた直後にすぐに反応するわけではなく、結構 (上記の通り10分とか) 待つ必要があるかもしれません。

それにしても、途中で"Need XXX more bytes" のバイト数部分が増えるってのは一体……。

gpg: /home/dmiyakawa/.gnupg/trustdb.gpg: trustdb created
gpg: key 165C1EA8 marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048R/165C1EA8 2012-09-18
      Key fingerprint = FC08 067E A072 D555 D4C2  8CAA 469E F3BB 165C 1EA8
uid                  ここはひみつだ <ここはひみつだ>
sub   2048R/50F6A980 2012-09-1

○ debuild

http://www.debian.org/doc/manuals/maint-guide/build.ja.html

DEBUILD_LINTIAN_OPTS=-i -I --show-overrides

この"-l"オプション、lintianから消えたんだか最初からないんだか、とにかく何かエラーを吐くのでよしなに計らう必要があるです。

「debuild で一瞬だじぇ!」と言う前に build-deps でビルド時に必要なパッケージを入れましょう入れましょう……

参考
http://www.geocities.jp/hanoura123/lin/dpkg.htm

んで
そこで、unstable から 2.1.10-3 のソースコードを持ってきて、debian/patches から relax-digest-uri-handling.patch を取り込み、
unstableのソースにこのパッチがなかったんだよなぁ

というわけでこっからぐにょっと取ってきた

https://support.process-one.net/browse/EJAB-1529

ここまでで実は「なんでssh-keygenはgnupgでないん?」とか脇道にそれまくった上にMD5とかSHA-1とかそういう割とヤク毛なことを調べていた関係で「このパッチは本物なのだろうか」とか考え始めたんだが、まぁいいや。


  • debian/patches/series には普通にvimで手を入れた
  • debian/changesの変更にはdchを使った。
  • 最後にdebuild

ところでパッチが当たったことによって問題が解決されたかどうかについてチェックするモチベーションがないので、当てられたパッチが正しく機能したかはチェックしないのであった。あじゃーん。

○ 上の話を短くする

問題があったら、既にバグレポートがないかを確認し、ソースコードは apt-get source 経由で取ってきた上でパッチをdebian/patches に放り込み、debian/patches/seriesと debian/changelog を変更し、debuildを打つ。

って元の記事に書いてあるよね。

○ 参考

第9章 パッケージの更新


このブログの人気の投稿

LibreOfficeで表紙、目次、本体でフッターのページ番号のスタイルを変える

WiiUのコントローラが通信不良に陥った話

技術書典2 あ-03 『もわねっとのPythonの本』