.udeb (micro deb package) もApt風に依存関係ベースでダウンロードしたい
$ dpkg-deb -I partman-auto-lvm_39_all.udeb|grep Depends Depends: cdebconf-udeb, partman-base (>= 125), partman-auto (>= 84), partman-lvm (>= 72), di-utils (>= 1.66)
この partman-auto-lvm_39_all.udeb
は, http://packages.debian.org/ja/sid/debian-installer/partman-auto-lvm を見て
というURLを wget(1)
したものである.プログラマならこのURLから規則性を推理して「じゃあ依存関係にある partman-base
は
というディレクトリから適当なバージョンを取ってくればいいね!」と考えるはず.これに限っては合っており,私の欲しいものは
として手に入る.しかし cdebconf-udeb
はと言うと,なんと正しいURLが
なのだった... -udeb
がディレクトリ名から消えている.何なの... これじゃAptもどきに依存関係に沿って .udeb を一括ダウンロードするスクリプトが書けないじゃないか.(Contents-*.gz
には .udeb は載っていないので apt-cross(1)
改め xapt(1)
は使えない)
しょうがないので今は http://packages.debian.org/ のHTMLをスクレイピングする方針を考えている.そこの表示を司る元データが手に入ればいいんだが... 無い訳ないのに,くそー
追記: IRC #debian-boot
で尋ねたらCanonical社員のcjwatson氏に debian-installer
内の get-packages
というツール使うといいと教わった:
中を -o Apt::Architecture=ia64
と修正し,
$ cd debian-installer/build $ SECOPTS=--allow-unauthenticated util/get-packages udeb partman-auto-lvm partman-efi cdrom-core-modules nic-modules Using generated sources.list.udeb: deb copy:/tmp/debian-installer/build/ localudebs/ deb http://ftp.jp.debian.org/debian unstable main/debian-installer 無視 copy: localudebs/ InRelease 無視 copy: localudebs/ Release.gpg 無視 copy: localudebs/ Release エラー copy: localudebs/ Packages エラー copy: localudebs/ Packages エラー copy: localudebs/ Packages 取得:1 copy: localudebs/ Packages [20 B] 取得:2 http://ftp.jp.debian.org unstable InRelease [186 kB] 無視 http://ftp.jp.debian.org unstable InRelease 取得:3 http://ftp.jp.debian.org unstable/main/debian-installer ia64 Packages [51.4 kB] 無視 http://ftp.jp.debian.org unstable/main/debian-installer TranslationIndex 237 kB を 0秒 で取得しました (503 kB/s) パッケージリストを読み込んでいます... 完了 パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 Need to download: partman-auto-lvm partman-efi cdrom-core-moduules nic-modules パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 注意、'nic-modules' の代わりに 'nic-modules-2.6.37-2-itanium-di' を選択しています 注意、'cdrom-core-modules' の代わりに 'cdrom-core-modules-2.6.37-2-itanium-di' を選択しています 注意、'nic-modules' の代わりに 'nic-modules-2.6.37-2-itanium-di' を選択しています Installing kernel-image-2.6.37-2-itanium-di as 依存 of cdrom-core-modules-2.6.37-2-itanium-di Installing scsi-core-modules-2.6.37-2-itanium-di as 依存 of cdrom-core-modules-2.6.37-2-itanium-di (略 $ ls apt.udeb/cache/archives archdetect_1.86_ia64.udeb libuuid1-udeb_2.17.2-9.1_ia64.udeb cdebconf-udeb_0.154_ia64.udeb lvm2-udeb_2.02.84-3_ia64.udeb cdrom-core-modules-2.6.37-2-itanium-di_1.66_ia64.udeb md-modules-2.6.37-2-itanium-di_1.66_ia64.udeb core-modules-2.6.37-2-itanium-di_1.66_ia64.udeb nic-modules-2.6.37-2-itanium-di_1.66_ia64.udeb crc-modules-2.6.37-2-itanium-di_1.66_ia64.udeb nic-shared-modules-2.6.37-2-itanium-di_1.66_ia64.udeb di-utils-mapdevfs_1.82_ia64.udeb nls-core-modules-2.6.37-2-itanium-di_1.66_ia64.udeb di-utils_1.82_ia64.udeb ntfsprogs-udeb_2.0.0-1+b1_ia64.udeb disk-detect_1.86_ia64.udeb partial/ e2fsprogs-udeb_1.41.12-2_ia64.udeb partman-auto-lvm_39_ia64.udeb efi-modules-2.6.37-2-itanium-di_1.66_ia64.udeb partman-auto_97_ia64.udeb ext2-modules-2.6.37-2-itanium-di_1.66_ia64.udeb partman-base_149_ia64.udeb ext3-modules-2.6.37-2-itanium-di_1.66_ia64.udeb partman-basicfilesystems_69_ia64.udeb ext4-modules-2.6.37-2-itanium-di_1.66_ia64.udeb partman-basicmethods_47_ia64.udeb fat-modules-2.6.37-2-itanium-di_1.66_ia64.udeb partman-efi_23_ia64.udeb firewire-core-modules-2.6.37-2-itanium-di_1.66_ia64.udeb partman-ext3_63_ia64.udeb hw-detect_1.86_ia64.udeb partman-lvm_74_ia64.udeb ide-core-modules-2.6.37-2-itanium-di_1.66_ia64.udeb partman-partitioning_80_ia64.udeb ide-modules-2.6.37-2-itanium-di_1.66_ia64.udeb partman-target_72_ia64.udeb isofs-modules-2.6.37-2-itanium-di_1.66_ia64.udeb partman-utils_149_ia64.udeb kernel-image-2.6.37-2-itanium-di_1.66_ia64.udeb pciutils-udeb_1%3a3.1.7-8_ia64.udeb libblkid1-udeb_2.17.2-9.1_ia64.udeb rootskel_1.93_ia64.udeb libc6.1-udeb_2.11.2-13_ia64.udeb scsi-core-modules-2.6.37-2-itanium-di_1.66_ia64.udeb libdebian-installer4-udeb_0.78_ia64.udeb sn-modules-2.6.37-2-itanium-di_1.66_ia64.udeb libdevmapper1.02.1-udeb_2%3a1.02.63-3_ia64.udeb udev-udeb_166-1_ia64.udeb libparted0-udeb_2.3-5_ia64.udeb util-linux-udeb_2.17.2-9.1_ia64.udeb libtextwrap1-udeb_0.1-11_ia64.udeb zlib1g-udeb_1%3a1.2.3.4.dfsg-3_ia64.udeb $ mkdir -p /tmp/udebs $ for i in apt.udeb/cache/archives/*.udeb; do dpkg-deb -X $i /tmp/udebs; done (略 $ ls /tmp/udebs/lib/modules/2.6.37-2-itanium/kernel/drivers/ide delkin_cb.ko hpt366.ko ide-cd_mod.ko ide-core.ko ide-gd_mod.ko ide-generic.ko it8213.ko opti621.ko sgiioc4.ko tc86c001.ko trm290.ko
よしよし,これをUSBメモリに書き込んで((本当は jigdo-lite(1)
で作ったISOを展開して追加して depmod(1)
して mkisofs(1)
してCD-Rを焼き直すべきなんだろうけど,まだ .ko が足りないとかミスる可能性があるので焼きたくない.)),CD-RのDebian installerが(自分の立ち上げ元の!)CD-Rを認識できないタイミングでinsmodしまくれば後は色々進むだろう.USBメモリ (VFAT) が読めてATAPI CD-ROMドライブを認識できないとか,どんだけー って感じだが,ほんとIA-64は地獄だぜー