平衡点
2009/02/20
_ Debian パッケージ作成環境の構築
先日, 念願の 64bit 環境を手に入れたので, 野良パッケージ作成様の環境を構築した. 母艦は Core2Quad の Debian GNU/Linux 5.0(lenny), amd64. ここに amd64,i386 の pbuild 環境を構築する. 作成する野良パッケージは, 主に地球流体電脳倶楽部 で公開しているソフトウェア群.本家に上げたいのだけれども, ライセンスの確認(あんまり問題無さそう)とFortran コンパイラの問題ので, とりあえずは保留.
必要なソフトウェアの導入
クリーンな依存関係の test/clean な build 環境を提供するためのパッケージとして,Debian にはpbuilder がある. これを導入する. で, pbuilder では環境を固めた base.tgz を展開し chroot しているのだけれど, これを少し高速化するためのパッケージとしてcowdancer がある.これらを導入する.
環境構築
cowbuilder の設定
以下に書く内容は非常に ad hoc. 今ドキュメントを眺めてみると, もうちょっと賢いやりかたはある.
64bit 版(amd64)の base.cow を作成する. ここでは /var/cache/pbuilder/lenny-amd64.cow に置くことにする.
$ sudo cowbuilder --create \ --distribution lenny \ --basepath /var/cache/pbuilder/lenny-amd64.cow
32bit 版(x86)の base cow は /var/cache/pbuilder/lenny-i386.cow に作成
$ sudo cowbuilder --create \ --distribution lenny \ --basepath /var/cache/pbuilder/lenny-i386.cow \ --debootstrapopts --arch --debootstrapopts i386
初期設定として, それぞれに電脳サーバの apt-line と GPG Key を追加しておく.
$ sudo -s # HOME=/root cowbuilder --login --save-after-login
login できるのだけれども base system しか無いので vi が無い.面倒なので cowbuilder がハードリンクを貼った先(/var/cache/pbuilder/build/pid.cow) を修正する
追加した apt-line は電脳サーバの apt-line と localhost の apt-line.最初は deb file:// としていたのだけれども, pbuilder/cowbuilder は chroot しているので親のファイルが見えない. しょうがないから localhost 閲覧限定で httpd(apache) を上げて, そこから取得することにする.
追加した apt-line は以下の通り.
# GPG key: AEE995F4 deb ftp://www.gfd-dennou.org/arch/cc-env/debian-dennou/ lenny/ deb-src http://www.gfd-dennou.org/arch/cc-env/debian-dennou/ lenny/ deb http://localhost/debian/ ./ deb-src http://localhost/debian/ ./
あとは GPG key の追加. これは cowbuilder で login した shell で apt-key を実行して追加する.
apache の設定
pbuilder/cowbuilder から参照できるようにlocal に httpd を立ち上げて, 作成したパッケージが apt で取得できるようにする.その後で /etc/apache2/sites-available/pbuild を作成して以下の内容を追記.
$ sudo aptitude install apache2 $ cat /etc/apache2/sites-available/pbuild <VirtualHost *:80> Alias /pbuild/ "/var/cache/pbuilder/result/" <Directory "/var/cache/pbuilder/result/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost> $ sudo a2ensite pbuild
これで pbuilder/cowbuilder の chroot 環境でもhttp://localhost/pbuild が見えるようになる.
スクリプトの準備
パッケージの構築には以下のスクリプトを使用(( .pbuildrc で設定できる項目もあるけど )).
電脳サーバではパッケージを pool スタイルで管理していない((パッケージ名のディレクトリに置いてある))ので, パッケージ名のディレクトリを作成し, そこに結果を置くことにする.
あと, 作成したパッケージを apt で http://localhost/pbuild から取得できるように作成したパッケージを/var/cache/pbuilder/result/ にハードリンクして, apt-ftparchive を実行している(mkaptline, 実体は apt-ftparchive + 鍵署名).
# source: bash #!/bin/bash set -e PWD=$(pwd) DENNOU_PKG_NAME=`echo $@ | awk -F_ '{print $1}'` RESULTDIR=$HOME/pbuild/result/$DENNOU_PKG_NAME [ -d $RESULTDIR ] || mkdir -p $RESULTDIR DISTLIST=$(ls -d /var/cache/pbuilder/*.cow) CONFIG=$DENNOU_PKG_NAME.pbuilderrc cat << EOF > $HOME/pbuild/$CONFIG BUILDRESULT=$RESULTDIR/ EOF for CHROOTDIR in $DISTLIST do ARCH=$(basename $(basename $CHROOTDIR | cut -d'-' -f2) .cow) sudo cowbuilder --update --basepath $CHROOTDIR sudo cowbuilder --build \ --basepath $CHROOTDIR \ --configfile $CONFIG \ --debootstrapopts --arch \ --debootstrapopts $ARCH $@ done sudo ln $RESULTDIR/* /var/cache/pbuilder/result/ rm -f $HOME/pbuild/$CONFIG $HOME/bin/mkaptline
結果
そんな訳で電脳 Ruby 謹製品 Debian Packageの更新は終了. 今迄amd64 のパッケージは人に頼んでいたのだけれど, それもできるようになった.
あとは spml に必要なライブラリ ですか...
うーん. gfortran がきちんと動くようになってくれれば, 本家に入れられるのに...
2022/02/20
_ Wanderlust での HTML メール表示
HTMLメール自体は諸悪の根源だと思うので滅んで欲しいと常々思っているのだけれど,
outlook なんかが送ってくる multipart の text/plain が無駄な改行が多過ぎて読み辛くてかなわんので
渋々 HTML を表示させていたりする(あと, text で済む内容なのに「HTML 表示を有効にして下さい」とか強制してくるアレやコレもあるよね, 的な).
普段遣いの MUA は Wanderlust なので, text/html の表示には mime-w3m
を使っていた.
で, 昔の記憶が定かではない or 記憶違いなのか
まあ, 必要に応じて html リンクを踏まねばならない事はままあるので, どうやってたのかジタバタしてみたり.
結果として eww
で表示する様に切り替えてた.
昔何にハマったのか, 殆ど覚えていない鳥頭. まあ, 何かハマったら, また考えよう.
eww の設定は以下
;; リンクを簡単に辿る(Hit-a-Hint) のために =ace-link= も入れておく
;; - my:d:tmp は $HOME/.cache/emacs 以下.
(leaf eww
:preface
(unless (file-directory-p (expand-file-name "eww" my:d:tmp))
(make-directory (expand-file-name "eww" my:d:tmp)))
:init
(leaf ace-link :ensure t)
(leaf shr
:custom
((shr-use-colors . nil)
(shr-use-fonts . nil)
(shr-image-animate . nil)
(shr-width . 72)
(shr-max-width . 72)
)
)
:bind (("<f2>" . eww)
(:eww-mode-map
("r" . eww-reload)
("o" . eww)
("&" . eww-browse-with-external-browser)
("b" . eww-back-url)
("]" . eww-next-url)
("[" . eww-previous-url)
("g" . eww-top-url)
("h" . backward-char)
("j" . next-line)
("C-n" . next-line)
("k" . previous-line)
("C-p" . previous-line)
("l" . forward-char)
("/" . isearch-forward)
("?" . isearch-backward)
("n" . isearch-next)
("N" . isearch-previous)
("f" . ace-link-eww))
)
:custom
`((eww-bookmarks-directory
. ,(expand-file-name "eww" my:d:tmp))
(eww-search-prefix
. "https://www.google.com/search?&gws_rd=cr&complete=0&pws=0&tbs=li:1&q="))
:config
(ace-link-setup-default)
)
Wanderlust の html 表示は以下
(setq mime-view-text/html-previewer 'shr
mime-setup-enable-inline-html 'shr
mime-view-type-subtype-score-alist '(((text . plain) . 0)
((text . html) . 1)))
ま, とりあえずは快適になったので良しとする.
2025/02/20
_ Thinkpad X13 Gen5 を購入した.
今日届いた. とはいえ, 内蔵 SSD を換装する予定なので, 火入れはまだしていない. ここ2年ぐらい, メインマシンが WSL2 環境だったので酷く辛かったが, さて, どうなるかな?