Yukiharu YABUKI の tDiary
このtDiaryを検索します。
2019-09-07 Debian work [長年日記]
_ [Debian] source only upload (cont'd)
承前 source only upload をやる理由と問題点、そして解決方法
- [Bits from the Release Team: ride like the wind, Bullseye!]の中で source only uploadについて言及している。see No binary maintainer uploads for bullseye
- [SourceOnlyUpload - Debian Wiki]上記でも理由を書いているが、こっちにも。また各ビルド方法でのsource only uploadについて記述がしてある。
- 対象とするrepoは、Yukiharu Yabuki / vim-voom · GitLabです。
で、困っていたのは、実作業を新しいマシンで行っていて、buildはできたものの、orig.tar.gzのtop directoryの名前が異なっていて、中身とサイズが合わないので、uploadしてもrejectされること。この問題は、XY problemという命名がされておりよくあることとのこと。で、解決策としては,prinstine-tar branchを切って、そこに pristine-tarが管理するorig.tar.gzを入れること。 - gbp-pristine-tar(1) — git-buildpackage — Debian testing — Debian Manpages
- [gbp-buildpackage(1) — git-buildpackage — Debian testing — Debian Manpages]
以下,具体的な作業例
(1) I had already downloaded original orig.tar.gz in /tmp/
like this.
(cd /tmp;wget http://deb.debian.org/debian/pool/main/v/vim-voom/vim-voom_5.3.orig.tar.gz)
(2) Do gbp pristine-tar commit:
$ gbp pristine-tar commit --upstream-tag=upstream/5.3 /tmp/vim-voom_5.3.orig.tar.gz gbp:info: Successfully committed pristine-tar data for version 5.3 of /tmp/vim-voom_5.3.orig.tar.gz
(3) I checked:
$ git switch pristine-tar Switched to branch 'pristine-tar' $ git branch master * pristine-tar upstream $ ls -la > total 8 > drwxr-xr-x 1 yabuki yabuki 122 Sep 6 16:37 . > drwxr-xr-x 1 yabuki yabuki 5216 Sep 6 11:36 .. > drwxr-xr-x 1 yabuki yabuki 182 Sep 6 16:37 .git > -rw-r--r-- 1 yabuki yabuki 1943 Sep 6 16:37 vim-voom_5.3.orig.tar.gz.delta > -rw-r--r-- 1 yabuki yabuki 41 Sep 6 16:37 vim-voom_5.3.orig.tar.gz.id
(4) then build it.
$ git switch master $ gbp buildpackage --git-pbuilder --git-pbuilder-options=--source-only-changes --git-tag --git-notify=auto
(5) check the result.
ls -la ../vim-voom* -rw-r--r-- 1 yabuki yabuki 5416 Sep 6 11:32 ../vim-voom_5.3-3.debian.tar.xz -rw-r--r-- 1 yabuki yabuki 1804 Sep 6 11:32 ../vim-voom_5.3-3.dsc -rw-r--r-- 1 yabuki yabuki 99560 Sep 6 11:32 ../vim-voom_5.3-3_all.deb -rw-r--r-- 1 yabuki yabuki 21173 Sep 6 11:32 ../vim-voom_5.3-3_amd64.build -rw-r--r-- 1 yabuki yabuki 5461 Sep 6 11:32 ../vim-voom_5.3-3_amd64.buildinfo -rw-r--r-- 1 yabuki yabuki 2458 Sep 6 11:32 ../vim-voom_5.3-3_amd64.changes -rw-r--r-- 1 yabuki yabuki 2142 Sep 6 11:35 ../vim-voom_5.3-3_source.changes -rw-r--r-- 1 yabuki yabuki 115841 Sep 6 11:23 ../vim-voom_5.3.orig.tar.gzI checked orig.tar.gz file size and contents. It seems ok.
upload準備
$ dput vim-voom vim-voom/ vim-voom_5.3-3_all.deb vim-voom_5.3-3_amd64.changes vim-voom_5.3-3.debian.tar.xz vim-voom_5.3-3_amd64.build vim-voom_5.3-3_source.changes vim-voom_5.3-3.dsc vim-voom_5.3-3_amd64.buildinfo vim-voom_5.3.orig.tar.gz $ dput vim-voom_5.3-3_source.changes Trying to upload package to ftp-master (ftp.upload.debian.org) Checking signature on .changes gpg: /home/yabuki/scm/git/debian/vim-voom_5.3-3_source.changes: error 58: gpgme_op_verify gpgme_op_verify: GPGME: No data $ dput vim-voom_5.3-3.dsc Not a .changes file. Please select a .changes file to upload. Tried to upload: vim-voom_5.3-3.dsc $ debsign vim-voom_5.3-3_source.changes The .buildinfo file is already signed. Would you like to use the current signature? [Yn] Leaving current signature unchanged. fixup_changes dsc vim-voom_5.3-3.dsc vim-voom_5.3-3_source.changes fixup_changes buildinfo vim-voom_5.3-3_amd64.buildinfo vim-voom_5.3-3_source.changes signfile changes vim-voom_5.3-3_source.changes Yukiharu YABUKISuccessfully signed changes file $ dput vim-voom_5.3-3_source.changes Trying to upload package to ftp-master (ftp.upload.debian.org) Checking signature on .changes gpg: /home/yabuki/scm/git/debian/vim-voom_5.3-3_source.changes: Valid signature from 71A802D0BCD1BC92 Checking signature on .dsc gpg: /home/yabuki/scm/git/debian/vim-voom_5.3-3.dsc: Valid signature from 71A802D0BCD1BC92 Uploading to ftp-master (via ftp to ftp.upload.debian.org): Uploading vim-voom_5.3-3.dsc: done. Uploading vim-voom_5.3-3.debian.tar.xz: done. Uploading vim-voom_5.3-3_amd64.buildinfo: done. Uploading vim-voom_5.3-3_source.changes: done. Successfully uploaded packages.
2019-09-06 Debian related video [長年日記]
_ [Debian] youtube video:What are Debian maintainer scripts?
Debian packageのメンテナースクリプトについて理解を深めたい場合や、技術英語について触れてみたい。場合は見てみると良いでしょう。
この動画は再生するとあなたのyoutubeアカウントに記録が残ります。
_ [Debian] fdpowermon
fdpowermon/fdpowermon at master · yoe/fdpowermon Thinkpadで、電池容量が一定以下になったら、suspendやaplayで音を出して状態を知りたいので、使っているが、上手く動かせていない。うーん。 ~/.config/fdpowermon/theme.plに下記を置いて実行している。
# Copy this file to ~/.config/fdpowermon/theme.pl. # # If you don't like the 'default' theme, define a new one by copying # /etc/fdpowermon/theme.cfg to ~/.config/fdpowermon/theme.cfg and # renaming/adjusting the 'default' theme there to something new. # Don't forget to replace "default" below with your new theme name. # # See the manpage fdpowermon(1) for full details on what you can do # here. # define a suspend action sub suspend { # /usr/bin/dbus-send --print-reply --system --dest=org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager.Suspend boolean:true system("/usr/bin/dbus-send --print-reply --system --dest=org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager.Suspend boolean:true"); } sub beep { system("/usr/bin/aplay /usr/share/games/wesnoth/1.14/sounds/bell.wav"); } # initialize our theme, from /etc/fdpowermon/theme.cfg or # ~/.config/fdpowermon/theme.cfg # my $theme = fdpowermon::theme::get_theme("mytheme"); my $theme = fdpowermon::theme::get_theme("default"); # on the discharge event for the lowest element in the list of steps (0 = first # in the index, "d" for discharge), call the "suspend" sub defined above $theme->set_event( 1, \&suspend, 'd' ); $theme->set_event( 2, \&beep, 'd' );
2019-09-05 working for Debian [長年日記]
_ [Debian] source only upload
souce only uploadするのに gbp + cowbuilderを使っている私は、debian wikiを参照して、--git-pbuider-options=--source-only-changesを設定した。いろいろとコミット済みだったので、--git-tagをつけた。 xzでuploadすると怒られたので、--git-commpression=gzipにして、オリジナルと同じ圧縮方式にした。--git-retagで再ビルドを指示した。gbp buildpackage --git-pbuilder --git-pbuilder-options=--source-only-changes --git-tag --git-notify=auto --git-compression=gzip --git-retagこれで、dputして accept されるといいな。って思った。こんな感じ。
drwxr-xr-x 1 yabuki yabuki 94 9月 5 15:50 vim-voom -rw-r--r-- 1 yabuki yabuki 5432 9月 5 18:10 vim-voom_5.3-3.debian.tar.xz -rw-r--r-- 1 yabuki yabuki 1804 9月 5 18:10 vim-voom_5.3-3.dsc -rw-r--r-- 1 yabuki yabuki 99568 9月 5 18:10 vim-voom_5.3-3_all.deb -rw-r--r-- 1 yabuki yabuki 21173 9月 5 18:10 vim-voom_5.3-3_amd64.build -rw-r--r-- 1 yabuki yabuki 5461 9月 5 18:10 vim-voom_5.3-3_amd64.buildinfo -rw-r--r-- 1 yabuki yabuki 2458 9月 5 18:10 vim-voom_5.3-3_amd64.changes -rw-r--r-- 1 yabuki yabuki 446 9月 5 18:17 vim-voom_5.3-3_amd64.ftp-master.upload -rw-r--r-- 1 yabuki yabuki 1227 9月 5 18:10 vim-voom_5.3-3_source.changes -rw-r--r-- 1 yabuki yabuki 115854 9月 5 18:00 vim-voom_5.3.orig.tar.gz
_ [Git] git push --all --tags
これは、ダメ。stack overflowの記事 をみて、cloneしてきた、.git/configに[remote "origin"] push = refs/heads/* push = refs/tags/*を書き込んで同じようにやった。
2019-08-29 肉の日 [長年日記]
_ [tDiary] emacs with tDiary-mode.el
なんだかんだと、長い間tDiaryをサボって来ました。https化の対応や、emacsでtdiary-mode.elを使わなくなって、不精ぐせがついてしまいました。最近、佐々木さんのメンテしている、tdiary-modeのgit repoを知って使わせてもらうことにしました。emacsのtls.el対応emacs gnutlsで、httpsでも安心。
Edit tdiary from Emacsで、ちょっと楽ができそうです。
_ 大雨
夏の豪雨に遭遇した。
2014-10-29 [長年日記]
_ [Awk] pdbを処理するプログラム、再び。
このエントリーはほぼ一人のために書いています。他の人で有用かどうかは分かりません。 PDB原子座標入力形式 バージョン 3.2 の形式を扱う awk のコード の続き 下記のようなデータを処理するawkのひな形ATOM 1534 O HOH D4175 -15.917 -2.349 -5.049 10.50 38.70 O ANISOU 1534 O HOH D4175 9613 1110 3981 739 -737 -411 O ATOM 1535 O HOH D4176 -22.395 -31.001 -14.913 11.00 42.50 O ANISOU 1535 O HOH D4176 2536 4368 9243 126 -371 -647 O任意の数字の4桁を3桁にしたいらしいので、awkのfunctionをつくっておいた。diminish_digitです。 以下、参考ソースコード。上記のデータをツッコンで実行し、エラーがないことは、Linuxで確認した。
#!/usr/bin/env awk -f # PDB data manipulator basics (awk version) # # This program give you skeleton of manipulating PDB data. # Enjoy! # # * How to use # $awk -f your.awk < input.data > output.data # # Author: Yukiharu YABUKI # License : GPL v3 # If you don't know GPL v3 license. # Please go to http://gplv3.fsf.org { # ATOMが先頭だったときの行処理 if ($1 ~ /^ATOM/){ # print $0 #Debug print # 何カラム目か分からないので、該当するカラムでやること if ($2 > 1000){ d = $2 - 1000; # 1000引くだけじゃないなら、functionを呼べ } # そのカラムでの出力処理 printf("%3d", d); # データを、そのままか加工して出す # 最後 改行して一行おわり printf("\n"); } # ANISOUが先頭だったときの行処理 if($1 ~ /^ANISOU/){ # print $0 #Debug print # 何カラム目か分からないので、該当するカラムでやること if ($2 > 1000){ d = diminish_digit($2); }else{ d = $2 - 10; # 10だけ引く } # そのカラムでの出力処理 printf("%3d", d); # データを、そのままか加工して出す # 最後 改行して一行おわり printf("\n"); } } # 桁を縮める function diminish_digit(d){ while(d > 999){ d = d - 1000; } return d; }
2014-07-08 ffmpegがなくなったという前に [長年日記]
_ [Debian] libav が ffmpeg から fork したので、avconv を使うようにした。
最近、ffmpegがsidにないと言う人をみたので、インターネット上に日本語の記事として書いておこうと思った。(もともとは、ubutsuでという話だったかは、記憶が定かでないので、自分が分かっている範囲だけ)
libavがffmpegからforkしたのは、ffmpegとlibavの背景事情 (http://cpplover.blogspot.jp/2012/03/ffmpeglibav.html)を読めば、情報としてとっかかりが得られると思う。
では、具体的にどうすればいいのか。Debian Projectで再度、ffmpegがITPされているようだが、次のリリース jessie に間に合うかどうかは、まだ分からない。間に合えば使い続けるという方法もある。が、間に合わなかったら?
Debian Multimediaのリポジトリを使う方法もあるが、私は、オススメしない。ライブラリの使い方でミスると思い通りに動かなくなる場合がある。オフィシャルじゃないしねえ。
では、どうするか。libav-tools パッケージに入っている、avconvコマンドが、あなたの欲しがっていた(いまは)ffmpegと同等の働きをします。コマンドラインも確認がいりますが、ffmpegからavconvへ、そのまま移行できました。私の場合。
$ avconv avconv version 10.2-6:10.2-1, Copyright (c) 2000-2014 the Libav developers built on Jun 28 2014 16:18:48 with gcc 4.9 (Debian 4.9.0-7) Hyper fast Audio and Video encoder usage: avconv [options] [[infile options] -i infile]... {[outfile options] outfile}...まあ、jessie/sidを使っている人は(たぶん、ubuntuなどの派生ディストリも)試してみてくださいな。
2014-05-07 [長年日記]
_ [Debian] memo my gbp workflow
workflow memo
- パッケージに更新を加える
gbp buildpackage --git-no-create-orig --git-ignore-new --git-pbuilder
- 変更点確認
- テスト
(cd ../;debsign *.changes)
- dput
- gbp buildpackage に --git-tag をつけて、タグを打つ
- git push して リモート・レポジトリへ反映する
- gbp dchを使うかどうか
- 使う:commit logからdebian/changelogを生成する。うっかりすると UNRELEASED になるからちゃんとオプションを指定すること。コミット粒度は細かめ? gbp dch しても debian/changelog が更新されるので別途コミットが必要です。
- 使わない: debian/changelog は自分で生成する
2014-05-02 [長年日記]
_ [tDiary] 次のtDiaryがでたら、やる手順
ruby 2.1.1 をwget で取ってくる。 tDiary 4.0.4 (フルセット)を wget でとってくる
ruby 2.1.1 を./configure --prefix=$HOME make
make test
で確認する。
.installed-list
で前バージョンがインストールしているのを消していく。
yabuki@aegis:~/src/tdiary/tdiary-3.0.1$ grep -Rni yabuki *.rb index.rb:1:#!/home/yabuki/bin/ruby update.rb:1:#!/home/yabuki/bin/ruby
- .htaccess を tdiary-v4.0.3/へコピー
- パーミッションの確認とshbangの書き換え
./src/tdiary/tdiary-3.0.1/images/*
をコピー- ./src/tdiary/tdiary-v4.0.3/に tdiary.conf を作る
- tdiary.confに@styleの設定をWikiからtDiaryへ変更する
- パーミッションは、www-dataが読み書きできるようにしておくこと
- index.rssなど作れないと困る
2014-05-01 [長年日記]
_ [tDiary] style
どこに、store しているかわからないが、tDiary 日付毎に、スタイルを保持しているようだ。新しいバージョンのデフォルトが Wiki スタイルになっていて、覚えている記法が、そのまま通らなくなり、ちょっと調べた。
Webでの書き込み画面で、本文という表示のとなりに、xxxxスタイルと表示されるので、わかる。
tdiary.conf で @style 変数に、スタイルを設定する。いまは書き換えて 'tDiary' に変更済み。これで、Emacsからも書き込みできるようになったかな。
この日のstyleをどうやったら、tDiary style に直せるかは、優先度が低いのでまた、そのうちに(というと、永遠になおさないかもしれないが)
2014-03-04 [長年日記]
_ [Debian] lvm is not available
自分のsidマシンが、"lvm is not available" というメッセージを出すようになり、起動しなくなった。
これから書くことは、上記のメッセージを出てから直すまでの話です。最初に、最小手順だけ書くと
- Debian rescue live image を使って、レスキュー・ディスクを作る
- 対象PCを rescue live image を使って立ち上げる。
-
lvdisplay
で状況を確認 - lvm がアクティブなら、
cryptsetup luksOpen
確認したlvmデバイス名 適当な名前 で、パスワードを入力して、暗号化を解く。 - 解いた暗号化ファイルシステムを、順番にmountしていく
- ネットワーク接続を確認
- chroot 自分が、ファイルシステムツリーを作った場所(/とした場所)
- システムの検査, 今回は
apt-get install lvm2
, とupdate-initramfs -u
- 再ブートして、確認。もちろん、usb memory stick などの起動メディアは抜いておく。Debian live rescue image は、ちゃんと警告してくれるので、メッセージを見逃さないなら大丈夫
原因
私の予想では、(1)何らかの理由(私の操作の依存関係か?)で lvm2 のパッケージが抜けて、linux-imageの更新かかかり、update-initramfs を作るときに、lvm を含めていなかった。kernel更新をしても、再起動させるタイミングで、即時チェックをしなかったので、発見が遅れた。noteパソコンを、運用していて、メモリーサスペンド最中に放電サイクルで、誤って全部放電させて、再起動をかけて、問題が発覚した。
レスキュー・ディスクの作成
live-imageでレスキュー・ディスクを作るには、(https://www.debian.org/CD/faq/#write-usb)を参考に、ddで、usb memory stick に作った。GUIが使える環境も魅力的ではあるが、今回は、復旧が目的なので、レスキューイメージを書き込んだ。usb 3.0 のポートと memory stick を使ったが、想定したよりは時間がかかった。これは、BSを4Mにしろと、助言がされるわけだ。
起動は、ThinkPad の青いボタンを押下して、BIOSメニューに入り、usb memory stick からbootするように設定する。
調査
ありがたいことに、家には複数台のPCがあり、片方で Google 検索を行い、片方の復旧を行った。(余談開始)こういうことで、成功体験があるから、何台もPCを所有してしまうのかもしれない。(余談終了) まずは、Debianの BTS とか漁ったが、もう closed しているものばかりで、その日の段階で、同じような目に会っている人はいなかった。
rescueで上げて、lvdisplay で確認すると、lvm は active になっているので、lvm の設定で躓いているのだろうと、推測。
とすると、lvm + 暗号化しているノートを手動で、暗号化を解いて、マウントする方法を確認する。(http://digitalvectorz.wordpress.com/tag/unknown-filesystem-type-crypto_luks/)を参考にしながら、/mnt を / と見立てて /boot や / をマウントしていく(ここは、ご自分のパーティションというか、lvmの構成というか、に依存します。)
復旧
準備のマウントが終わったら、localeの設定、ネットワーク接続を確認してから、chroot で /mnt を / として、システムの修復を行う。/sys や /proc はマウントされてないし、locale の設定内容によっては、Cへfaillback するかもしれない
apt-get install lvm2
で、lvmのパッケージを導入しておく。あとは、update-initramfs -u で、/boot/initrd.img を更新(lvmを含める) する。その後、exitでchrootを抜けて、reboot コマンドを実行、画面にusbメモリーなどを抜けといわれたら、抜いてから、エンターキーを押す
すると、無事に起動して、パスフレーズを聞いてくれるようになり、立ち上がるようになりました。ほっ。と一安心
2014-03-01 [長年日記]
_ [Gauche] Lisp/scheme 属の Gauche
apt-get install gauche-doc
で info は必ず入れよう。Gauche 自体のチュートリアルで、online ですぐに読めるのは見つけられなかった。schemeのチュートリアルで遊ぶのが良い
Gauche は、インタラクティブ・モードを持っている。が、編集機能は、今のところ予期したほど強力ではない。そのため、Emacsと協調して動かすのが良い。分業ですね。
設定方法は、info の gauche (ja) に書いてある。が、せっかちな人のために、引用する。
また、エンコーディングのことも書いてある。`gosh'をEmacs内部で走らせることをお勧めします。 EmacsはSchemeサブプロセスを操作するための豊富な機能を持っています。 次の行を`.emacs'に加えておくと、<M-x run-scheme> で Emacsのバッファ内で`gosh'が走ります。 (setq scheme-program-name "gosh -i")
2014-02-23 [長年日記]
_ 関西Debian勉強会 で systemd
TLをみていると、ぽこぽこと風邪で欠席されるかたがいて大変そうだったので、関西Debian勉強会の様子を見に行った。
開催はされていて一安心。Debian kFreeBSD をいれて苦労されている方がいたので少しお手伝い。日本語入力で、Debian の default である task-Japanese-desktop に入っている、uim の設定を続行してユーザで日本語入力を行える所まで確認した。
systemdの話題が、やはりホットであったので、自分の sid マシンを sysv-init から systemd-sysv を入れて、移行してみた。いろいろとドラスチックに変わるが、i3-wmで、ノートパソコンのlidを閉じるとメモリー・サスペンドするようになって幸せです。i3-wm を network-managerやhp-systrayともicon表示して便利に使えるようにしたし、暮らしていける気になってきた。i3-wm の要求リソースが低いのと、gnome-shellがメモリーを食いつぶしていたせいもあり、長時間稼働させていても、(プログラムの反応が機敏なため)ずっと楽しさが続く。
i3-wm で複数のディスプレイの実験をしていて、複数画面の設定をしたついでに、最近使っている、i3-wm の話を少しした。
2014-02-19 [長年日記]
_ graphviz の dot 言語みたいな感じで
コンサルな人が良く書きそうなパターンの図、例えば、こんな図を dot言語みたいに、テキストから生成する方法ってないのかな。
円が重なる図で日本語フォントがぶっ込めるのは、まだ見つけられていない
2014-02-11 [長年日記]
_ [Vim] Debian での vim の作法
いままで、Emacsだけで、vimは、ほぼ素で使ってきたが、いざ vim を設定しようと思うと、よくわからない部分がいっぱいある。例えば、~/.vimrc を作るのは良いとして、
$ locate markdown.vim /usr/share/vim/vim73/ftplugin/markdown.vim /usr/share/vim/vim73/syntax/markdown.vimのようなプラグインがある模様だが、拡張子が .markdown 以外に を利用していた時に、.md をシンタックス・ハイライトするのに、どうすればいいとか。何を読めばいいのかしら? とかね。
シンタックス・ハイライトの色も変えたくなるだろうし、フォントも変えたくなるに違いない。fixedの、いわゆる漢字の空白を可視化しているフォントをプログラミング時には使いたいから。
_ [Vim] help を日本語で見る
(https://code.google.com/p/vimdoc-ja/downloads/list)にvimの日本語helpがあるので、~/.vim/doc に展開して (scriptの方はべつの時に)
helptags ~/.vim/doc set helplang=ja,enを~/.vimへ追記する。参考にしたのは、(http://www.sougetu.net/archives/1170)でした。
2014-02-10 [長年日記]
_ [Emacs] dired-virtual-mode
- Dired Extra Version 2 User's Manual(http://sunsite.ualberta.ca/Documentation/Gnu/emacs-21.1/html_mono/dired-x.html)
- dired-virtual-mode を使うには、dired-x を M-x load-library する必要がある。必要に応じて、init.elや.emacsへ書いておく
$ apt-file search dired-x emacs23-common: /usr/share/emacs/23.4/lisp/dired-x.elc emacs23-common-non-dfsg: /usr/share/info/emacs-23/dired-x.gz emacs23-el: /usr/share/emacs/23.4/lisp/dired-x.el.gz emacs24-common-non-dfsg: /usr/share/info/emacs-24/dired-x.gz
2014-02-03 [長年日記]
_ MikuMikuPenguin を Debian GNU/Linux Wheezy で動かす(OpenGL 2.1)
3Dのモデルを動かすことができる。pmx と vmd の形式と呼ばれるファイルを読み込み、PMXViewer として動く。ライセンスは GPLv3 (https://github.com/sn0w75/MikuMikuPenguin) で開発が進んでいる。いまは、PMXViewer だけだが、libmmp を作って、利用されるのが直近の目標のようだ。
開発者は、かなり日本語が上手なアメリカ在住の人みたいで、英語はもちろん、日本語も堪能だ。が、3Dモデルの世界では用語も難しく(日本人でも関心がなければ、そのような語彙は身に付かないだろう)、C++のプログラミングだけでなく、ドキュメンテーションなどでも助力できる人もいるんじゃないかと思う。
以下は、ThinkPad X201s の上で、Debian GNU/Linux Wheezy で、MikuMikuPenguin の PMXViewer をコンパイルして動かすまでの話です。
ビルドどれをビルドするか、github の master は、OpenGL 3.0 以上を想定している。いまの README.md にはチェック方法を書いているので、そっちを参照してもらいたい。
buildをするのに、wheezy の下記のライブラリをインストールする。細かい所だと、抜けがあるかと思う。私は他の関係で automake, autotool など入れているから。
sudo apt-get install build-essential sudo apt-get install libglfw-dev sudo apt-get install libglew-dev sudo apt-get install libglm-dev sudo apt-get install libsoil-devで、libbulletdynamicsは、wheezy にはない。sidからソースパッケージを取ってきて、自分のマシンでrebuildする。buildd-depの解決はそんなに難しくない。下記参照。(ただし、クリーンな環境から試してないから抜けてる依存関係があるかもしれないが)deb-src をsidに向けて、apt-get source で、 bullet のソースコードを落として、再ビルドすればいい。
sudo apt-get install cmake freeglut3-dev libtinyxml-dev zlib1g-dev doxygen rdfind symlinks再ビルドすると、
yabuki@yelona:~/src/deb-package/i386/libbulletdynamics$ ls bullet-2.81-rev2613+dfsg2 bullet_2.81-rev2613+dfsg2-1.debian.tar.xz bullet_2.81-rev2613+dfsg2-1.dsc bullet_2.81-rev2613+dfsg2-1_i386.build bullet_2.81-rev2613+dfsg2-1_i386.changes bullet_2.81-rev2613+dfsg2.orig.tar.xz libbullet-dev_2.81-rev2613+dfsg2-1_i386.deb libbullet-doc_2.81-rev2613+dfsg2-1_all.deb libbullet-extras-dev_2.81-rev2613+dfsg2-1_i386.deb libbullet2.81-dbg_2.81-rev2613+dfsg2-1_i386.deb libbulletcollision2.81_2.81-rev2613+dfsg2-1_i386.deb libbulletdynamics2.81_2.81-rev2613+dfsg2-1_i386.deb libbulletfileloader2.81_2.81-rev2613+dfsg2-1_i386.deb libbulletsoftbody2.81_2.81-rev2613+dfsg2-1_i386.deb libbulletworldimporter2.81_2.81-rev2613+dfsg2-1_i386.deb libbulletxmlworldimporter2.81_2.81-rev2613+dfsg2-1_i386.deb libconvexdecomposition2.81_2.81-rev2613+dfsg2-1_i386.deb libgimpactutils2.81_2.81-rev2613+dfsg2-1_i386.deb libhacd2.81_2.81-rev2613+dfsg2-1_i386.deb liblinearmath2.81_2.81-rev2613+dfsg2-1_i386.debな感じで、パッケージができあがっているので
sudo dpkg -i libbulletdynamics2.81_2.81-rev2613+dfsg2-1_i386.deb libbulletcollision2.81_2.81-rev2613+dfsg2-1_i386.deb liblinearmath2.81_2.81-rev2613+dfsg2-1_i386.deb libbullet-dev_2.81-rev2613+dfsg2-1_i386.deb libbulletsoftbody2.81_2.81-rev2613+dfsg2-1_i386.deb上記のようにインストールする。後は
export CXXFLAGS="-fpermissive" autoreconf -i ./configure makeで、カレントディレクトリに、pmx という実行ファイルができてるはず。このバイナリーにデータを入力するといいのだが、Windowsな世界なので、漢字コードが違うファイル名でzipされているので、Ubuntuの unizp -O オプション(これは、ubuntuだけでなく、arch Linux でも、upstreamに還元せずに自前で保守されているようだ)を使って、圧縮ファイルを伸長するか、samba を使い、windowsでの伸長された内容を取ってくる。smbclientでもいいかと思う。
データ自体は、NicoNico系で取ってこれるとおもう。
$ ls -la 合計 18596 drwxr-xr-x 5 yabuki yabuki 4096 1月 31 03:51 . drwxr-xr-x 18 yabuki yabuki 4096 1月 29 13:19 .. drwxr-xr-x 14 yabuki yabuki 4096 2月 1 04:11 MikuMikuPenguin drwx------ 3 yabuki yabuki 4096 1月 28 22:13 Tda式初音ミク・アペンドVer1.00 -rw-r--r-- 1 yabuki yabuki 18216215 1月 28 22:12 Tda式初音ミク・アペンドVer1.00.zip drwx------ 2 yabuki yabuki 4096 1月 28 22:14 私の時間short -rw-r--r-- 1 yabuki yabuki 766184 1月 28 22:12 私の時間short.zip本当は、Debian GNU/Linux Sid ならもっと簡単
Debianの開発版である、Sidを使った方がもっと簡単なのだ。が、人によっては開発版で生活できない人もいる。ので、安定版のWheezyでやりましたが、自力で調べて問題解決できる人間なら、Debian Sidの方が話が早い。再ビルドもしなくていいし、ライブラリのバージョンも upstream とほぼ同じになる。
2013-12-12 [長年日記]
_ [Debian] 予は如何にしてless使いに成りしや
私は、これまで lv を愛用してきた。(1) 各種ファイルのエンコードを変換してくれる (2) gzip されたファイルを明示的に zcat することなく中身が見えた (3) less の 4文字より lv の2文字の方が楽という理由である。カラーにするには、lv -c
などすればよかったし、gitのページャーにも lv を使ってきた。
だが、最近 lv を使っているのは、どうなのか? という disり を聞いて、less の現状をチェックしなおしてみた。上記の(2)に該当することは、Debianの~/.bashrcの中に
# make less more friendly for non-text input files, see lesspipe(1) #[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"という行もあるし、青木さんの Debian referenceの「8.6 覚えるべき小さくて洒落たコマンド」に「8.6.1 Pager」として軽く言及がある。
上記の2行目の部分をコメントを外し、再ログインすれば、zcat を入力する手間は省ける。そして,,,lessを使うことで、次のエントリーが生きてくるのであった。他には
なども参考になると思う。_ [Debian] git diff-highlight
Debian GNU/Linux wheezy で, 下記の話を具体的にやるとどうなるって話を書いておきます。対象にしているのは、Debian GNU/Linux wheezy 7.3 です。以降のバージョンでもある程度は参考になるかと思いますが、無保証です。
Git に同梱されている contrib/diff-highlight を使います。
あとは README に書いてあることの引き写しですが、PATH の通ったディレクトリに置いて、~/.gitconfig に以下のように設定を書く。
[ 2013-11-26 Git の diff を美しく表示するために必要なたった 1 つの設定 #git より引用]
locateで捜すと
$ locate diff-highlight /usr/share/doc/git/contrib/diff-highlight /usr/share/doc/git/contrib/diff-highlight/README /usr/share/doc/git/contrib/diff-highlight/diff-highlightのように発見できます。Debianの場合、pathの通っている場所で、自分だけ使うのであれば ~/bin ディレクトリを作成すると良いでしょう。system wide に使いたい場合は、そのマシンのポリシーに従っておいてください。 Debian Package は /usr/local/以下は、利用しないので、自分や Debian パッケージのポリシーに沿ってないプログラムを扱わない限り壊されないので、考慮するのも良いでしょう
上記の文章で、READMEと呼んでいるのは、検索結果の2つ目になるので、英語ですが眺めておきましょう。良いことがあるかも知れません。
一つ気がかりなのは、gitのversion upがあっても、~/bin/のdiff-highlightは、ずっとそのままなので、定期的にcpしてくるか、ln -s とかするのも良いのかも知れませんね。良い方法があれば、愛のあるツッコミ欄をご利用ください。
2013-11-27 [長年日記]
_ [Debian] apt-build の置き土産
自分のマシンで、update-managerが、気に入らない挙動をするが、調べる時間を作らなかったのですが、我慢ができなくなり
W: Failed to fetch file:/var/cache/apt-build/repository/dists/apt-build/main/binary-i386/Packages File not foundや
W: file:/var/cache/apt-build/repository/dists/apt-build/main/binary-i386/Packages の取得に失敗しました ファイルが見つかりません E: いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視されるか、古いものが代わりに使われます。を、真面目に対処することにした。apt-get remove --purge apt-build で全部消したつもりだったが? apt-get remove だけだったのか、
yelona:/var/cache# vi /etc/apt/sources.list.d/ apt-build.listとなっており、まだ apt-build の設定を全部消してなかったわけです。消したらサッパリ。思い通り。誰かがエラーメッセージそのままぶっ込んで、検索するかもしれないので、こういうエントリーをつくっておきます。
2013-10-29 [長年日記]
_ [Debian] Debian GNU/Linux Wheezy (7.x) でのGW-USMicroN の認識
usb WifiのGW-USMicroNは、ubuntuなどでは挿したら認識するぞ。と雑誌の記事には書いてあったわけですが、Debian GNU/Linux Wheezy (7.x) では、カーネルモジュールが変わっていたり、設定の教え方が変わっていたりするので、以下のようにすれば動きます。
- #apt-get install firmware-ralink
- #modprobe rt2800usb
- #echo "2019 ed14" >> /sys/bus/usb/drivers/rt2800usb/new_id
途中を知りたいひとは、usbを挿した時のログやwiki.debian.orgを検索してみてください。rt2880usbモジュールは、カーネルバージョンが古いと別の記事にあるモジュールを使いますが、いまは、wheezy がstableなので、必要な人だけ調べてください
2013-10-28 [長年日記]
_ [Debian] git-buildpackage を始めるにあたってのチェックポイント
git-buildpackage (以下 gbp と略す)を使いはじめるにあたって、気になった点を列挙しておきます。
- gitで管理するわけですから、どのエンティティを外に出すか決めておく。個人のメールアドレスなのか debian.org のメールアドレスなのか。
- gbp import-dcs --download は便利だが、git config --global user.name および git config --global user.email の設定がしてなかったり、適切かどうかは事前にチェックしておくのが良い
- いったん、git repo ができてしまえば、git config user.name や git config user.email で運用できるので自分の好みのエンティティを使えばいい。
- 便利機能を使わないで、自分でリポジトリを作って、設定してから gbp import-dsc をすればいいのかもしれないが、まだ試してはいない
- githubでgbp の練習をしたいなら、github側でリポジトリを初期化するのではなく、gbp create-remote-repo --pristine-tar --remote-url-pattern=git@github.com:yabuki/xfireworks.git のように私はやってみた。ちなみに、--remote-url-pattern を指定しなかったら git.debian.org が暗黙の指定となる。
- --pristine-tar の指定は、ケースバイケースだが、gbp buildpackage はなかったら orig.tar.gz (圧縮方法は指定できる) を作るので、new upstream の時に上げた、オリジナルソースと異なるなら考える
- ちなみに、upstream からの変更点についてはダウンロードして変更したものは git が全て追跡しているので、upstream を起点とする連鎖は保持していると考えられるのではないか。なので新規パッケージを作るときに、upstream が指定するソースコードをダウンロードしているか?どうかが神経の使い所か。
- git tag -v deiban/1.0 などで検証できるってことは、やっぱりここまでの変更は私がやりました。ってのを明示して責任の所在をハッキリさせる意味なんだろうな。upstream/1.0 もこの内容で upstream からダウンロードして、私が展開しましたと。
- --git-bilderオプションは必要に応じて pbuilderや cowbuilder や qemubuilder を呼び出してビルドする。プログラムによって、異なるアーキテクチャもエミュレーションしてビルドをチェックできるようだから、一度は上記の環境設定と実行方法を学んでおくと良いかもしれない。
- ブランチレイアウトは、ドキュメントにもあるが、upstram-branch, debian-branch, (使うのなら)pristine-tar, stable, security, nmu, dfsg, backports, snapshot など自分の使い方を考えておくのがいいのではないか。gitだからあとからでもブランチは切れるが、練習しておかないといきなり本番投入は厳しいと思います。「思い通りに設定する方法」や「便利に使う設定」を見つけて設定する時間もありますし。
- debian/.gbp.conf は、チームならチームの方針が決まったものだけを設定するのが良さそうですね。ほかにも自分のユーザー設定やリポジトリだけに有効なgbp.confを置けるので、自分で試しながらgbp.confを練り込む感じなんでしょうか。
- gitでtagをgpg でサインする機能を提供しているが、ちゃんと事前に検証方法もドキュメントで調べておくこと。2.6 Git の基本 - タグのあたりですかね。
- --key-id=オプションは、設定ファイルに書いて安心する前に、コマンドラインで指定して、動作を確認してから。(0xは要らんかった)
2013-09-22 [長年日記]
_ [Debian] dgit
関西 Debian 勉強会に顔を出してきた。ALSAのお話を拝聴し、dgitのことを聞いていたら、Debian Developerでないと dgit は実行できないという。
それじゃあ、困るべなと。せめて実演するぐらいはガンバロウと。躓いていた点は、自分のアカウント名(yabuki)とDDのアカウント名(yyabuki)が違っていたこと。基本的に~/.ssh/config に
HOST *.debian.org USER yyabukiってのを追加しておけという、オチでした。
$ dgit clone etckeeper canonical suite name for unstable is sid fetching existing git history remote: Counting objects: 2693, done. remote: Compressing objects: 100% (809/809), done. Receiving objects: 7% (189/2693), 36.00 KiB | 56.00 KiB/s [snip!] Receiving objects: 99% (2667/2693), 292.00 KiB | 24.00 KiB/s Receiving objects: 100% (2693/2693), 292.00 KiB | 24.00 KiB/s Receiving objects: 100% (2693/2693), 327.28 KiB | 24.00 KiB/s, done. Resolving deltas: 100% (1859/1859), done. From git+ssh://git.debian.org/git/dgit-repos/repos/etckeeper * [new ref] refs/dgit/sid -> dgit/dgit/sid * [new tag] debian/1.9 -> debian/1.9 From git+ssh://git.debian.org/git/dgit-repos/repos/etckeeper * [new tag] debian/1.8 -> debian/1.8 downloading http://ftp.debian.org/debian//pool/main/e/etckeeper/etckeeper_1.9.dsc... last upload to archive specified git hash HEAD is now at def8d3a releasing package etckeeper version 1.9 dgit ok: ready for work in etckeeperってな感じ。branchは
$ git branch -a * dgit/sid remotes/dgit/dgit/sid
$ dgit fetch wheezy W: suite 'wheezy' not recognised. E: No valid suite given. no version available from the archive dgit: package etckeeper does not exist in suite wheezywheezy は用意されてなかっかった。まあこれからですね。
2013-09-21 [長年日記]
_ [Debian] perf in Wheezy
パフォーマンス測定ツールのperfですが、対応するパッケージが入っていないと
$ perf --version /usr/bin/perf: 24 行: exec: perf_3.2: 見つかりません E: linux-tools-3.2 is not installed.という、メッセージが出て、足りないパッケージを教えてくれます。
そこで、足りないパッケージを補うわけです。
$ sudo apt-get install linux-tools-3.2 [sudo] password for yabuki: パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の特別パッケージがインストールされます: libdw1 提案パッケージ: linux-doc-3.2 以下のパッケージが新たにインストールされます: libdw1 linux-tools-3.2 アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。 618 kB のアーカイブを取得する必要があります。 この操作後に追加で 1,509 kB のディスク容量が消費されます。 続行しますか [Y/n]? 取得:1 http://cdn.debian.or.jp/debian/ wheezy/main libdw1 i386 0.152-1+wheezy1 [217 kB] 取得:2 http://cdn.debian.or.jp/debian/ wheezy/main linux-tools-3.2 i386 3.2.17-1 [402 kB] 618 kB を 1秒 で取得しました (371 kB/s) 以前に未選択のパッケージ libdw1 を選択しています。 (データベースを読み込んでいます ... 現在 472298 個のファイルとディレクトリがインストールされています。) (.../libdw1_0.152-1+wheezy1_i386.deb から) libdw1 を展開しています... 以前に未選択のパッケージ linux-tools-3.2 を選択しています。 (.../linux-tools-3.2_3.2.17-1_i386.deb から) linux-tools-3.2 を展開しています... man-db のトリガを処理しています ... libdw1 (0.152-1+wheezy1) を設定しています ... linux-tools-3.2 (3.2.17-1) を設定しています ...という、風にインストールが進むわけです。
2013-09-03 [長年日記]
_ [Debian][Python] sitecustom.py
pythonで、システムワイドの設定を行う手の一つに sitecustom.py があるようだ。(see also (http://d.hatena.ne.jp/kakurasan/20101217/p1)
pythonの対話*1モードにおいて、ipythonのようなtab補完を効かせる設定(既出リンク)や、デフォルトエンコードを設定する(http://d.hatena.ne.jp/motie/20090615/sitecustomize20090615)などの設定*2は、もちろん手動でやってもいいが、Debian的には、Debconf でやるか、コマンドを作った方がいいのかしら?
import rlcompleter import readline readline.parse_and_bind ('tab: complete')
で、tab補完を有効にして
import sys sys.getdefaultencoding()
とすると、'ascii' 返ってくる。毎回プログラムで宣言するというスタイルを取るのも一理あるが、site wide で utf8 に変更してもいいよねえ?
2013-08-19 [長年日記]
_ [Debian] Wheezy における Eclipse の設定 --- 日本語メニュー(Pleiades)
apt-getかaptitudeなどのツールを使って、eclipseをdebで導入しておきます。次に、pleiadesパッケージも導入しておきましょう
そうしたら、ドキュメントの /usr/share/doc/pleiades/readme_pleiades.txt.gz は、lv などで呼んでおこう。あとではまりやすいことも、読んでおけば回避できます。-clean オプションの件とかね。
/var/lib/dpkg/info/pleiades.list の中を確認して、特に更新手段は本パッケージにはなさそうなので、手動でやる。
私の場合は、旧バージョンのeclipseで、オプションの書き換えをしていたのでvim /etc/eclipse.ini /etc/eclipse.ini.dpkg-old
として、:sn(画面分割), ^W w(ウィンドウ切り替え) と入力し、新しい設定ファイルに、下記のような設定にした。(Memory 16Gなので、既定値から少々大きくしている) スプラッシュは、pleiades のを使う設定にしている。
-startup plugins/org.eclipse.equinox.launcher_1.3.0.dist.jar --launcher.library plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.200.dist --launcher.XXMaxPermSize 256m --launcher.defaultAction openFile -vmargs -Xms128m -Xmx512m -Dorg.eclipse.equinox.p3.reconciler.dropins.directory=/usr/share/eclipse/dropins -javaagent:/usr/share/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
後は、pydevを別途インストールや、旧バージョンのメタファイル(私の場合は、.eclipse/org.eclipse.platform_3.5.0_155965261 以下ね。現在のは消すと寂しいことになるので要注意)を削除したり*1とお掃除などしておく。
ということで、スプラッシュが変化して、メニューが日本語になった、eclipseが使えるようになったわけです。
*1 最悪バックアップがあるから取り戻せるし
2013-08-16 [長年日記]
_ [Debian][LaTeX] Wheezy で TexLive 環境を作って、そこでのつれづれに書きとめる
ようやくメイン環境を、Debian GNU/Linux Wheezy の TexLive に乗り換えて、既存の(La)TeX環境から移行中、気がついていることをランダムにメモっておく
一番、嬉しいことは utf-8 で、LaTeX のソースコードを書いてコンパイルできる。ということだ。OSのエンコード環境そのままで、LaTeX のソースコードを書いて、Type Set できる。これは良い点があるが、既存のJISまたは、EUCコードで書いた LaTeX 資産を持っている人には、変換の手間や、変更箇所が多すぎて、変換するのに実際的でない人もいるだろう。私の場合、具体的には 履歴書を LaTeX で作成する rireki という LaTeX のソースコードを使っている。これは、もともと EUC-JP で使っていた。これを EUC-JP から UTF-8 に変換する*1のは、LaTeX ファイル 2行変更し、再コンパイルするのに、変更箇所をチェックして直すのに時間が掛かりそうだったので、platex --kanji=euc rireki.tex
で、再コンパイルし、dvipdfmx コマンドを使い、pdf に変換し、思い通りの結果になっていることを確認した。
slashbox.sty が、なくなっているのを、apt-file update && apt-file search slashbox.sty コマンドで確認した。どうしても必要なら、LaTeX のマクロライブラリを集積しているCTANからや、TeX FAQ の slashbox (http://www.tex.ac.uk/cgi-bin/texfaq2html?label=slashbox) などから取ってくるのが良さそうだ。
YaTeX(野鳥)で、どのエンコードを指定するのが良いかは、時間とのトレードオフだ。EUC-JPじゃなく、システムワイドのUTF-8に合わせるのが良いのだろうが、既存の文書もあり、悩み所である。
直接の関係は、薄いが Emacs の flyspell mode が、ja_JP がねーぞ。と怒るので ~/.aspell.conf に、lang en_US などとスペルチェッカーの言語を指定するのが良いというのは、(http://sky-y.hatenablog.jp/entry/20091229/1262106336)を参照した。"Error: No word lists can be found for the language "ja_JP""というエラーメッセージが、検索する時に助かりました。
pdfplatex
pdflatex というコマンドがある。が、TeXworks には、pdfplatex コマンドが存在しているようだ。2013年3月19日 (火) UbuntuやDebianのTeXworksを使いやすくするを読むと、UbuntuやDebianの環境でも 文字コードを決めうちして dvipdfmx を実行するスクリプトでエミュレーションするアイディアが書いてある。
kcc -c
で文字コードの推定をさせるともうちょいインテリジェントにできるのかも
*1 パッと考えただけでは、本体とstyファイルをutf8にしたらいいのかも知れないけど
2013-08-07 [長年日記]
_ akrさんのtb
akrさんの tb - manipulation tool for table: CSV, TSV, JSON, etc.が便利そうなのです。Rubyのgemですが、gem2debとか使えばいいのかなあ。
2013-08-06 [長年日記]
_ 自分の分析結果
遅まきながら、流行っていた自分の分析結果を貼り付けておきます。自分のようなタイプは、そのへんに溢れているのかと思いきや、出現頻度が2.356%とか書いてて、そういうものなの? ってな感じ。
2013-08-05 [長年日記]
_ 節電の実験レポート
外気温が35度の場合、こまめにエアコンを切るよりは付けっぱなしの方が節電できる。(http://www.kepco.co.jp/home/setsuden/eco2/jikken/01.html) 条件が変われば、分岐点は変わるが、いったん恒温を変えるとリカバリーが大変なのは覚えておくのがよい。
_ いくこ [酔った頭では意味わからんかったんですが今見たらすぐわかりました。なるほどなるほど。ありがとうございますです。]