DAAP iTunes 10.5問題対応のQNAP用バイナリ

http://forum.qnap.com/viewtopic.php?f=182&t=48593&p=230860&hilit=itunes#p230860
qpkgで対応パッチ出した人がいた。
QNAPのパッケージ管理システムなんだけど、これってたぶんバイナリしか入ってないんだろうね。
qpkgって、どんな構造なんだろう。

kinneko@BuildSV:~$ mkdir its105daap
kinneko@BuildSV:~$ cd its105daap/
kinneko@BuildSV:~/its105daap$ wget http://dl.dropbox.com/u/7535410/QNAP/Firefly_svn-1696-3_x86.qpkg
kinneko@BuildSV:~/its105daap$ wget http://dl.dropbox.com/u/7535410/QNAP/Firefly_svn-1696-3_arm-x19.qpkg
kinneko@BuildSV:~/its105daap$ file ./*
./Firefly_svn-1696-3_arm-x19.qpkg: POSIX shell script text executable
./Firefly_svn-1696-3_x86.qpkg:     POSIX shell script text executable

あら。
でも、開いてみると、バイナリとのハイブリッドだね。
頭に実行シェルがあって、ddでバイナリ取り出すようになっている。
ddでオフセット位置固定なので、お手軽に直接頭を書き換えるわけにもいかない。
こんな感じ。

/bin/echo "Install QNAP package on TS-NAS..."
/bin/grep "/mnt/HDA_ROOT" /proc/mounts >/dev/null 2>&1 || exit 1arch_ok || wrong_arch
_EXTRACT_DIR="/mnt/HDA_ROOT/update_pkg/tmp"
/bin/mkdir -p $_EXTRACT_DIR || exit 1
script_len=1038
/bin/dd if=${0} bs=$script_len skip=1 | /bin/tar -xO | /bin/tar -xzv -C $_EXTRAC
T_DIR || exit 1
offset=$(/usr/bin/expr $script_len + 10240)
/bin/dd if=${0} bs=$offset skip=1 | /bin/cat | /bin/dd bs=1024 count=5033 of=$_EXTRACT_DIR/data.tar.gz || exit 1
offset=$(/usr/bin/expr $offset + 5153751)
( cd $_EXTRACT_DIR && /bin/sh qinstall.sh || echo "Installation Abort." )

手動でやってみる。

kinneko@BuildSV:~/its105daap$ dd if=Firefly_svn-1696-3_x86.qpkg bs=1038 skip=1 | /bin/tar -xO | /bin/tar -xzv -C ./
./
./package_routines
./qpkg.cfg
./qinstall.sh
kinneko@BuildSV:~/its105daap$ /bin/dd if=Firefly_svn-1696-3_x86.qpkg bs=11278 skip=1 | /bin/cat | /bin/dd bs=1024 count=5033 of=./data.tar.gz
456+1 records in
456+1 records out
5153851 bytes (5.2 MB) copied, 0.0183812 s, 280 MB/s
5033+0 records in
5033+0 records out
5153792 bytes (5.2 MB) copied, 0.0185663 s, 278 MB/s

data.tar.gzを展開してみたけど、バイナリ入ってただけだった。