平衡点
2009/09/03
_ GPG 鍵を 4096 bit に更新
新たに 4096bit/RSA 鍵を作成して, これまで使っていた 1024bit/DSA の鍵(1024D/AEE995F4)で署名しました.新しく作成した GPG 鍵とその fingerprint は以下.
pub 4096R/891D7E07 2009-09-03 Key fingerprint = 66A4 EA70 4FE2 4055 8D6A C2E6 9394 F354 891D 7E07 uid Youhei SASAKI <uwabami_(at)_gfd-dennou.org> sub 4096R/9DBFD29F 2009-09-03
手順はCreating a new GPG keyにある通り,
- gpg.conf を更新する
- 4096bit/RSA で鍵を作成する
- 古い鍵で署名して, 鍵サーバに送る
です.
~/.gnupg/gpg.conf の更新
以下を追記する.
personal-digest-preferences SHA256 cert-digest-algo SHA256 default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
鍵の作成
$ gpg --gen-key ~ gpg (GnuPG) 1.4.9; Copyright (C) 2008 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. ご希望の鍵の種類を選択してください: (1) DSAとElgamal (既定) (2) DSA (署名のみ) (5) RSA (署名のみ) 選択は?
RSA (署名のみ), を選択する --> 5 を入力
RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048)
4096 bit にする --> 4096 を入力
鍵の有効期限を指定してください。 0 = 鍵は無期限 <n> = 鍵は n 日間で満了 <n>w = 鍵は n 週間で満了 <n>m = 鍵は n か月間で満了 <n>y = 鍵は n 年間で満了 鍵の有効期間は? (0)
有効期限は無制限. --> 0 を入力
Key does not expire at all これで正しいですか? (y/N)
確認する. --> y を入力
あなたの鍵を同定するためにユーザーIDが必要です。 このソフトは本名、コメント、電子メール・アドレスから 次の書式でユーザーIDを構成します: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" 本名: 電子メール・アドレス: コメント:
適宜入力する. コメントは入れなかった.
次のユーザーIDを選択しました: “Youhei SASAKI <uwabami_(at)_gfd-dennou.org>”
なんか入れた方が良いのかな?
名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? <-- o 秘密鍵を保護するためにパスフレーズがいります。
パスフレーズを適宜入力する.
今から長い乱数を生成します。キーボードを打つとか、マウスを動かす とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で 乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。 ........................................+++++ ....+++++ gpg: 鍵891D7E07を絶対的に信用するよう記録しました 公開鍵と秘密鍵を作成し、署名しました。 gpg: 信用データベースの検査 gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル gpg: 深さ: 0 有効性: 2 署名: 4 信用: 0-, 0q, 0n, 0m, 0f, 2u gpg: 深さ: 1 有効性: 4 署名: 2 信用: 4-, 0q, 0n, 0m, 0f, 0u pub 4096R/891D7E07 2009-09-03 指紋 = 66A4 EA70 4FE2 4055 8D6A C2E6 9394 F354 891D 7E07 uid Youhei SASAKI <uwabami_(at)_gfd-dennou.org> Note that this key cannot be used for encryption. You may want to use the command "--edit-key" to generate a subkey for this purpose.
これにて鍵の生成が終了.
暗号化用の subkey の追加
$ gpg --edit-key 891D7E07 ~ gpg (GnuPG) 1.4.9; Copyright (C) 2008 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. 秘密鍵が使用できます。 pub 4096R/891D7E07 作成: 2009-09-03 満了: 無期限 利用法: SC 信用: 絶対的 有効性: 絶対的 [ultimate] (1). Youhei SASAKI <uwabami_(at)_gfd-dennou.org> コマンド>
addkey と入力. パスフレーズを入力してロックの解除をする.
次のユーザーの秘密鍵のロックを解除するには パスフレーズがいります:“Youhei SASAKI <uwabami_(at)_gfd-dennou.org>” パスフレーズ: 4096ビットRSA鍵, ID 891D7E07作成日付は2009-09-03 ご希望の鍵の種類を選択してください: (2) DSA (署名のみ) (4) Elgamal (暗号化のみ) (5) RSA (署名のみ) (6) RSA (暗号化のみ) 選択は
RSA (暗号化のみ) を選択する --> 6 を入力
RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 4096 要求された鍵長は4096ビット 鍵の有効期限を指定してください。 0 = 鍵は無期限 <n> = 鍵は n 日間で満了 <n>w = 鍵は n 週間で満了 <n>m = 鍵は n か月間で満了 <n>y = 鍵は n 年間で満了 鍵の有効期間は?
無期限. --> 0 を入力
これで正しいですか? (y/N) <-- y 本当に作成しますか? (y/N) <-- y 今から長い乱数を生成します。キーボードを打つとか、マウスを動かす とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で 乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。 pub 4096R/891D7E07 作成: 2009-09-03 満了: 無期限 利用法: SC 信用: 絶対的 有効性: 絶対的 sub 4096R/9DBFD29F 作成: 2009-09-03 満了: 無期限 利用法: E [ultimate] (1). Youhei SASAKI <uwabami_(at)_gfd-dennou.org> コマンド> save
これにて終了.
古い鍵で新しい鍵に署名
$ gpg --default-key AEE995F4 --sign-key 891D7E07 pub 4096R/891D7E07 作成: 2009-09-03 満了: 無期限 利用法: SC 信用: 絶対的 有効性: 絶対的 主鍵の指紋: 66A4 EA70 4FE2 4055 8D6A C2E6 9394 F354 891D 7E07 Youhei SASAKI <uwabami_(at)_gfd-dennou.org> 本当にこの鍵にあなたの鍵“Youhei SASAKI <uwabami_(at)_gfd-dennou.org>”で署名してよいですか (AEE995F4) 本当に署名しますか? (y/N) <-- y 次のユーザーの秘密鍵のロックを解除するには パスフレーズがいります:“Youhei SASAKI <uwabami_(at)_gfd-dennou.org>” 1024ビットDSA鍵, ID AEE995F4作成日付は2005-12-08 パスフレーズ: <-- 適宜入力
あっというまに終了.
鍵サーバへ送信
subkeys.pgp.net に送ろうとしたら time out しちゃった. なんでかな.pgp.mit.edu に送る
$ gpg --keyserver pgp.mit.edu --send-key 891D7E07 gpg: 鍵891D7E07をhkpサーバーpgp.mit.eduへ送信
以上です. 欲しい人は 891D7E07 を鍵サーバあたりから取得して下さい.
参考文献
2009/09/11
_ Windows での Subversion
コードは PHP, ドキュメントは word で記述, というプロジェクトに参加.word ってのが痛い. しょうがないので, 仮想マシン上の Windows に TortoiseSVN を導入. 導入自体は非常に楽. explorer との一体感も素晴しいですね.
でも... Word かぁ... ( ´Д`)=3
_ Windows の hosts ファイル
結構有名かと思っていたんだけれど, 周りの人間も以外と知らなかったり. ふと自分がなんでこのことを知ったのか, と振り返ってみたのだけれど...
恐らく VMware の マニュアルじゃないかな, とか.個人的な用途も仮想マシン上の Windows でのホスト-ゲスト間の名前解決だし.
...違った. うーん?
ちなみに, このフォルダには hosts ファイルだけじゃなくて
- hosts
- lmhosts
- networks
- protocol
- services
があります.
hosts は適当に弄るとちゃんと反映されますね. networks とか servcices はちゃんと反映されるのかな. というか, そもそもこのファイルを参照しているプログラムって何があるんだろう.
2009/09/13
_ 最近気になっているコトメモ
次の Hack_Cafe(行けるかどうかわからんけど)のネタメモ
- pbuilder/cowbuilder 関係
- build 後に lintian 走らせる or changes を別ディレクトリに取っておく
- 多分簡単. 設定ゴニョっとすれば良い, ハズ
- build 時に親の X 環境に接続する
- どうするのかな.
- 抱えているパッケージの ITP
- 抱えているパッケージのライセンスを upstream に相談すべくメール書く
はてさて.
2009/09/14
_ dvips -> ps2pdfwr
エラー吐いて死ぬ. 鬼門だなぁ.
Error: /invalidfileaccess in /findfont Operand stack: Fb 256 --nostringval-- --nostringval-- 0 1278.16 GothicBBB-Medium-H Execution stack: %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1862 1 3 %oparray_pop 1861 1 3 %oparray_pop 1845 1 3 %oparray_pop 1739 1 3 %oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- 1820 7 4 %oparray_pop Dictionary stack: --dict:1153/1684(ro)(G)-- --dict:0/20(G)-- --dict:82/200(L)-- --dict:179/300(L)-- Current allocation mode is local Current file position is 38276 GPL Ghostscript 8.70: Unrecoverable error, exit code 1
そもそも /var/lib/defoma/gs.d/dirs/fonts/CIDFnmap の Ryumin-Light/GothicBBB-Medium はドコで制御してんだろ.
beamer で良い感じのグラデーション背景をやろうとしたんだけれど, dvipdfmx だと背景が線になってしまうし. むぅ...
2009/09/15
_ JFS のディスクを umount したらセグフォった件
...ほーう?.
kern.log は以下
kernel: imklog 3.18.6, log source = /proc/kmsg started. kernel: ------------[ cut here ]------------ kernel: kernel BUG at fs/jfs/super.c:119! kernel: invalid opcode: 0000 [1] SMP kernel: CPU 1 kernel: Modules linked in: ipt_REJECT xt_tcpudp nf_conntrack_ipv4 xt_state nf_conntrack iptable_filter ip_tables x_tables jfs nls_base loop snd_pcm snd_timer snd soundcore snd_page_alloc ipmi_si ipmi_msghandler psmouse pcspkr rng_core serio_raw hpilo container button i5000_edac edac_core shpchp pci_hotplug evdev ipv6 ext3 jbd mbcache ide_cd_mod cdrom usbhid hid ff_memless ata_generic libata dock ide_pci_generic sd_mod piix ide_core ehci_hcd bnx2 uhci_hcd mptsas mptscsih mptbase qla2xxx scsi_transport_sas firmware_class scsi_transport_fc scsi_tgt cciss scsi_mod thermal processor fan thermal_sys [last unloaded: scsi_wait_scan] kernel: Pid: 19944, comm: umount Not tainted 2.6.26-2-amd64 #1 kernel: RIP: 0010:[<ffffffffa02b5a35>] [<ffffffffa02b5a35>] :jfs:jfs_destroy_inode+0x1d/0xda kernel: RSP: 0018:ffff810226821da8 EFLAGS: 00010283 kernel: RAX: ffff8101b46611b0 RBX: ffff8101b46613a8 RCX: ffff810226821df8 kernel: RDX: 0000000000000007 RSI: ffff8101b46615b0 RDI: ffff8101b46613a8 kernel: RBP: ffff8101b4661140 R08: 0000000000000008 R09: ffff810001102a80 kernel: R10: 0000000000000002 R11: ffffffffa02b5a18 R12: 000000000001df2f kernel: R13: ffff810226821df8 R14: ffff8101c46cc3c8 R15: 0000000000000001 kernel: FS: 00007ff5770c9730(0000) GS:ffff81022ec848c0(0000) knlGS:0000000000000000 kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b kernel: CR2: 00007f5b5b5294c0 CR3: 000000018509d000 CR4: 00000000000006e0 kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 kernel: DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 kernel: Process umount (pid: 19944, threadinfo ffff810226820000, task ffff81022d9670e0) kernel: Stack: ffff8101b46615b0 ffff8101b46613b8 ffff8101b46613a8 ffffffff802ad483 kernel: ffffffff802ad764 ffff8101b41dec18 ffff81022bca10c0 000000000001df84 kernel: ffff81022bca10c0 ffffffff802ad77b ffff8101b4661850 ffff8101c46cc3b8 kernel: Call Trace: kernel: [<ffffffff802ad483>] ? dispose_list+0xbf/0xee kernel: [<ffffffff802ad764>] ? invalidate_inodes+0xb2/0xe7 kernel: [<ffffffff802ad77b>] ? invalidate_inodes+0xc9/0xe7 kernel: [<ffffffff8029caae>] ? generic_shutdown_super+0x39/0xee kernel: [<ffffffff8029cb70>] ? kill_block_super+0xd/0x1e kernel: [<ffffffff8029cc2c>] ? deactivate_super+0x5f/0x78 kernel: [<ffffffff802aff44>] ? sys_umount+0x2f9/0x353 kernel: [<ffffffff80221fbc>] ? do_page_fault+0x5d8/0x9c8 kernel: [<ffffffff8029e20c>] ? sys_newstat+0x19/0x31 kernel: [<ffffffff8031e0cb>] ? __up_write+0x21/0x10e kernel: [<ffffffff8020beca>] ? system_call_after_swapgs+0x8a/0x8f kernel: kernel: kernel: Code: 31 f6 48 89 df e8 5c 60 01 00 5b 31 c0 c3 55 48 8d af 98 fd ff ff 53 48 8d 45 70 48 89 fb 48 83 ec 08 48 39 87 08 fe ff ff 74 04 <0f> 0b eb fe 48 8d 7d 6c e8 b5 48 17 e0 8a 8b fb fd ff ff 80 f9 kernel: RIP [<ffffffffa02b5a35>] :jfs:jfs_destroy_inode+0x1d/0xda kernel: RSP <ffff810226821da8> kernel: ---[ end trace b55d66e67224e5f6 ]--- kernel: ------------[ cut here ]------------ kernel: WARNING: at kernel/exit.c:972 do_exit+0x3c/0x6a6() kernel: Modules linked in: ipt_REJECT xt_tcpudp nf_conntrack_ipv4 xt_state nf_conntrack iptable_filter ip_tables x_tables jfs nls_base loop snd_pcm snd_timer snd soundcore snd_page_alloc ipmi_si ipmi_msghandler psmouse pcspkr rng_core serio_raw hpilo container button i5000_edac edac_core shpchp pci_hotplug evdev ipv6 ext3 jbd mbcache ide_cd_mod cdrom usbhid hid ff_memless ata_generic libata dock ide_pci_generic sd_mod piix ide_core ehci_hcd bnx2 uhci_hcd mptsas mptscsih mptbase qla2xxx scsi_transport_sas firmware_class scsi_transport_fc scsi_tgt cciss scsi_mod thermal processor fan thermal_sys [last unloaded: scsi_wait_scan] kernel: Pid: 19944, comm: umount Tainted: G D 2.6.26-2-amd64 #1 kernel: kernel: Call Trace: kernel: [<ffffffff80234a2c>] warn_on_slowpath+0x51/0x7a kernel: [<ffffffff80228999>] enqueue_task+0x56/0x61 kernel: [<ffffffff80235481>] printk+0x4e/0x56 kernel: [<ffffffff802377a7>] do_exit+0x3c/0x6a6 kernel: [<ffffffff8020d380>] oops_begin+0x0/0x96 kernel: [<ffffffff8020e68d>] do_invalid_op+0x94/0x9e kernel: [<ffffffffa02b5a35>] :jfs:jfs_destroy_inode+0x1d/0xda kernel: [<ffffffff80272eb8>] find_get_pages+0x2f/0x6d kernel: [<ffffffff8042a599>] error_exit+0x0/0x60 kernel: [<ffffffffa02b5a18>] :jfs:jfs_destroy_inode+0x0/0xda kernel: [<ffffffffa02b5a35>] :jfs:jfs_destroy_inode+0x1d/0xda kernel: [<ffffffff80246210>] wake_up_bit+0x11/0x22 kernel: [<ffffffff802ad483>] dispose_list+0xbf/0xee kernel: [<ffffffff802ad764>] invalidate_inodes+0xb2/0xe7 kernel: [<ffffffff802ad77b>] invalidate_inodes+0xc9/0xe7 kernel: [<ffffffff8029caae>] generic_shutdown_super+0x39/0xee kernel: [<ffffffff8029cb70>] kill_block_super+0xd/0x1e kernel: [<ffffffff8029cc2c>] deactivate_super+0x5f/0x78 kernel: [<ffffffff802aff44>] sys_umount+0x2f9/0x353 kernel: [<ffffffff80221fbc>] do_page_fault+0x5d8/0x9c8 kernel: [<ffffffff8029e20c>] sys_newstat+0x19/0x31 kernel: [<ffffffff8031e0cb>] __up_write+0x21/0x10e kernel: [<ffffffff8020beca>] system_call_after_swapgs+0x8a/0x8f kernel: kernel: ---[ end trace b55d66e67224e5f6 ]---
2009/09/17
_ dvips -> ps2pdfwr 解決
前回の続き.
「log を良く見ましょう.」
Error: /invalidfileaccess in /findfont
って書いてあるじゃん!! 試しに gs -h ってしてみると..
$ gs -h ... Search path: . : /usr/share/ghostscript/CMap : /usr/share/ghostscript/8.70/Resource/Init : /usr/share/ghostscript/8.70/lib : /usr/share/ghostscript/8.70/Resource/Font : /usr/share/ghostscript/fonts : /var/lib/defoma/gs.d/dirs/fonts : /usr/share/cups/fonts : /usr/share/ghostscript/fonts : /usr/local/lib/ghostscript/fonts : /usr/share/fonts ...
使いたいフォントが Search path にありません...
(´・ω・`)
そんな訳で, 環境変数として
export GS_LIB=/usr/local/share/fonts
を設定したら, きちんと動作しました(上は zsh の設定).
IRC とか twitter とかで度々呟いてましたが, お騒がせしました.
(追記) さて, clean install した場合に設定するにはどうするのかな. /usr/share/fonts は gs の search path にあるから設定不要?
_ プレゼンテーション Zen
さらっと読めて良い感じ.
Garr Reynolds, ピアソン桐原, ¥4,680
こうして考えると「高橋メソッド」ってやっぱ凄いよなぁ...
_ LDAP -設定・管理・プログラミング-
業務に必要なので購入.
Gerald Carter, オーム社, ¥4,620
これまで必要になる機会が全くなかったので,触れずに過していたのだけれど, そうもいかなくなってきたので...
...PAM との連携, めんどくせー.
_ 金剛九尾
お買い物記録その2
…うーん.
まとまってるんだけど, 「さらっと」聴けてしまって, なんか物足りない. とりあえず以前みたいなメタルじゃないのは確か. 「火車の轍」の頃の荒々しさとか「夢幻→邪魅の抱擁」みたいなドキドキ感も無いし.
「魑魅魍魎」の時みたいなスルメアルバムなのを期待しつつちょっと聴きこんでみる.
_ Black Clouds and Silver Linings
お買い物記録その 1
ドリーム・シアター, ロードランナー・ジャパン, ¥1,840
毎度ながらその長さに圧倒される曲もあるわけですが非常に良い感じ. DISC2 のカバー集も十分楽しめた.
大満足
2009/09/21
_ 入門 Git
発売日(09/19)に三ノ宮のジュンク堂行ったら置いてなかった.
書籍検索には引っかかるのに無くて 店員さんに聞いてみたら「池袋店だけです. 連休明け入荷になります」と言われて...こういう時は東京が羨ましくなる. うん.
そうしたら今日, twitter で id:lurdan さんや okkez さんが呟いてるのを見て...
...というわけで, 仕事してんのに急遽大学から梅田ヨドバシカメラに走る. 21:10 の時点で残り 4 冊だった.私が購入したので, 梅田ヨドバシカメラには残り 3 冊です.
濱野 純(Junio C Hamano), 秀和システム, ¥3,980
先日購入した
Travis Swicegood, オーム社, ¥2,640
と比較しつつ熟読中(とはいえ木曜日まで一次中断なんだけれども)
しっかし書籍名は入門「Git」 と入門「git」か. ソフトウェアの呼称は「Git」, コマンドの呼称が「git」なのですが, その意味で使いわけているんだろうかね.
さて, 周囲の人間をぎっとぎとにできるんだろうか?
2009/09/27
_ Getting Git
09/25 に, 研究室界隈で Git を布教すべく,ちょっとシャベってみました.
結論から言うと失敗.
- 時間が圧倒的に足りなかった
- 実技編は二回目にするか, Git Inside を別の会にすべきだった.
- 対象者が不明瞭
- 初級者相手にするならGit Inside とか, delta とか DAG とか(多分)いらない
- CVS/Subversion 使用者の移行を考えるなら, 対応づけと「便利になるところ」をモット強調しないといけない
ダメダメでした. うーん...
実際に使っている人だけ, とかならまだ良いんだろうけれど.「CVS を使っている人向けのお話」とか「Subversion を使っている人向けのお話」とかの方が良いのかなぁ...
2009/09/28
_ Adobe Reader 9.1 on Debian unstable
Adobe Reader 9.1 (日本語版)を Debian unstable で使えるようになるまでのメモ.
latex-beamer で Jobs の Keynote スライド風のグラデーション背景を作ってみた訳ですが, evince で表示すると縞々表示になってしまって.
(´・ω・`)
多分, スクリーンに写した場合には気にならない縞々なんだろうけれど.
以下は Debian unstable, amd64 版の場合の話. i386 なら特に問題無いんじゃないかな(知らんけれど).嵌り所は, non-free なソフトウェアにありがちな「i386版しか提供されていません」って奴です.
毎度毎度の無保証です. ツッコミ修正大歓迎.
方法その1: chroot
...ヘタレです.
i386 の chroot 環境を作っておいて, そこに Adobe Reader を install する.chroot 環境については以前書いたけれど, 日本語では例えば
- Etch/Sidの上にSarge環境を作る方法…kmuto さんのドキュメント
- schroot を使って sid の下で lenny を飼う…私が以前書いたヤツ
なんかを参考に.
schroot で i386 の acroread を動かす wrapper を書いておいてごまかす.例えば
#!/bin/sh schroot -p -c lenny-i386 /usr/bin/acroread "$@" 1>/dev/null 2>&1
とか. これを PATH の通った所においておくと良いと思うよ
方法その 2: ia32-apt-get
amd64 の環境で i386 のライブラリを使うために ia32-apt-get というパッケージがあります. まだ開発途中なので, 使っていると色々嵌ると思いますが嵌るのが楽しいんですよねー.
ia32-apt-get
まず導入. のっけから ia32-libs とぶつかりますがおもむろに消します(自己責任で).
$ sudo aptitude install ia32-apt-get
debconf の出す質問で「Libraries」と「All」という選択肢が出ます.
これは 32bit 版のライブラリだけを使うのか, 32bit 版の全てのパッケージを使うのかって選択です. ここでは「Libraries」のみを install します.
続いて sources.list の設定です. /usr/share/ia32-apt-get/convert-all-sources.list を使って/etc/apt/sources.list を i386 版と amd64 版に分割します.現状 convert-all-sources.list は /etc/ia32-apt/sources.list を見ていて/etc/apt/sources.list を見てくれません.
ここでは /etc/ia32-apt/sources.list を /etc/apt/sources.list の symlink にします.
$ sudo -s # cd /etc/ia32-apt/ # rm sources.list # ln -s /etc/apt/sources.list .
その後で /etc/apt/sources.list を書きかえます. これまでの指定に加えて [arch=ARCH] という指定が使えるようになっています.例えば
deb [arch=amd64] http://ftp.jp.debian.org/debian/ sid main non-free contrib deb-src [arch=amd64] http://ftp.jp.debian.org/debian/ sid main non-free contrib
とかです. 上の例ではあんまり意味が無いですが apt-line で提供されているのが i386 版のみ, とかの場合には [arch=i386] とか書いておくと良いと思います.
その後で
$ sudo /usr/share/ia32-apt-get/convert-all-sources.list
とすると
$ ls -R /etc/ia32-apt/ /etc/ia32-apt: amd64/ i386/ sources.list@ sources.list.d/ /etc/ia32-apt/amd64: sources.list sources.list.d/ /etc/ia32-apt/amd64/sources.list.d: /etc/ia32-apt/i386: sources.list sources.list.d/ /etc/ia32-apt/i386/sources.list.d: /etc/ia32-apt/sources.list.d: ia32-apt-get.amd64.list ia32-apt-get.i386.list
と sources.list が i386, amd64 用にできます.最後に, 場合によっては i386 版の方が build が速いこともあるので, 半端な状態になって困らないようにするために pinning もしておくと良いと思います.
force-architecture で AdobeReader を install
dpkg -i に --force-architecture をつけると, ARCH の違うパッケージも導入できます. 動作保証はありませんが...
$ sudo dpkg -i --force-architecture AdbeRdr9.1.2-1_i386linux_jpn.deb
これで導入されたので動かしてみます.
$ /usr/bin/acroread /opt/Adobe/Reader9/Reader/intellinux/bin/acroread: error while loading shared libraries: libgdk_pixbuf_xlib-2.0.so.0: cannot open shared object file: No such file or directory
というわけで, libgdk_pixbuf_xlib-2.0.so.0 が無いので動作しません.libgdk_pixbuf_xlib-2.0.so.0 を提供している Debian パッケージは何かと言うと...
$ locate libgdk_pixbuf_xlib-2.0.so.0 /usr/lib/libgdk_pixbuf_xlib-2.0.so.0 /usr/lib/libgdk_pixbuf_xlib-2.0.so.0.1800.0 $ dlocate /usr/lib/libgdk_pixbuf_xlib-2.0.so.0 libgtk2.0-0:/usr/lib/libgdk_pixbuf_xlib-2.0.so.0.1800.0 libgtk2.0-0:/usr/lib/libgdk_pixbuf_xlib-2.0.so.0
というわけで, libgtk2.0-0 です. このi386版を導入します.
$ sudo -s # ia32-apt-get update # ia32-apt-get install ia32-libgtk2.0-0
パッケージ名の頭にある ia32-が肝です. ia32-apt-get を使ってi386 版のパッケージを導入する時には頭に ia32- をつけておきます.parsechangelog で warning が出ますが, とりあえず気にせずに導入しておきます.
同様の事をくりかえしましたが, PDF ファイルの表示に必要だったのは
- ia32-libgtk2.0-0
- ia32-libxml2
の二つ(とこれらが依存するライブラリ群)でした.
まとめ
amd64 な sid 環境で i386 版のパッケージしか提供されていない場合にどうするのか,について簡単に書きました.
手間はかかりますが, 動作が安心なのは chroot の作成だと思います. 手法としては枯れていますし…ia32-apt-get は, chroot ほど面倒ではないものの, まだ枯れていないので偶に嵌るかと思います. ですが, chroot 環境は特にいらないので多少楽かもしれません.
ちなみに現時点では acroread で日本語入力ができません./usr/lib32/gtk-2.0/2.10.0/immodule-files.d とかををゴニョゴニョすれば良いんだろう, とか思ってますがそんな気力はありませんので.
あと plugin (nppdf.so) を消しておかないと悲しくなりますよ. nspluginwrapper とか使って消しておくと良いかと思います.
追加
9.1 から, また日本語のゴシック体フォント同梱されなくなってますね.9.1 のフォントパックは
にあります.
なんだかなぁ... evince で綺麗にグラデーションが表示できれば問題無いんだが, 調べる気力がありません. むーん.