iso.xz の読み取り

TeX Live 2009 は、DVD イメージが xz で圧縮して配られています。 この中のファイルを読み取るには、なかなか難易度の高い操作を要求されるので、ここで説明してみます。

DVD イメージの入手

国内の CTAN ミラーから入手しましょう。 http://www.dnsbalance.ring.gr.jp/pub/text/CTAN/systems/texlive/Images/ のファイルを

wget -c http://www.dnsbalance.ring.gr.jp
/pub/text/CTAN/systems/texlive/Images/texlive2009-20091107.iso.xz
(本当は1行に続けて書く)

のようにしてダウンロードします。 wget には、ダウンロード再開の -c (--continue) オプションを付けるのがコツです。そして

md5sum texlive2009-20091107.iso.xz

として、チェックサム検査を行います。以下の値が得られれば正常です。

9fb85d281118c327bc5d86ce992c0765

展開に必要なディスクスペース

.tar.gz 形式であれば、gzip の圧縮解除も tar のファイル展開も、どちらもストリーミングで行えますので、 ディスク上に必要なスペースは、展開後のファイルのサイズだけでよいことになります。

ところが .iso.xz となりますと、 .xz 部分は .gz や .bz2 と同じくストリーミングで展開することができるのでよいのですが、 .iso 部分ではファイルに展開しないといけないようです。 ということで、ディスク上にはどうしても .iso を保存するためのスペースが必要です。 更に展開後のファイルのスペースが必要かどうかは、.iso をどうやって読み取るかに依存します。

ちなみに TeX Live 2009 DVD の場合、.iso.xz が 1.4GB, .iso が 2.9GB, 展開したファイルは 3.0B ほどの大きさになります。 どんなに節約しても 1.4GB + 2.9GB = 4.3GB は必要ということです。 更に TeX Live 2009 をハードディスクにインストールすると、そこで 2.0GB ほどのスペースが必要なので、 典型的には 1.4GB + 2.9GB + 2.0GB = 6.3GB も必要です。 最近のハードディスク事情を鑑みれば、ものすごい要求というわけではありませんが、 少し古いマシンだと厳しいかもしれません。

.xz の展開

.xz の展開にはいくつかの方法があります。 ここで使うツールは、.iso.xz を展開するだけでなく、 ptexlive の内部でも利用するので、 PATH の通ったところに標準のコマンド名で仕込む必要があります。

  • "xzdec" というコマンドの実行形式[extlink] が TeX Live と共に配られてるので、これをダウンロードして、 ファイル名から ".i386-linux" のような拡張子?を消して、実行権限をつけて利用します。
    xzdec < texlive2009-20091107.iso.xz > texlive2009-20091107.iso

    Unix 文化で育った人だと、実行ファイルを取ってくるなんて、 ウィルス仕込まれてるんじゃないだろうな、と心配になるかもしれません。 そういう意味では、若干の危険をはらんでいます。

  • XZ Utils というプログラムを利用します。 "xz -cd" コマンドや "unxz", "xzcat" といったコマンドが使えるでしょう。 "gzip -cd", "gunzip", "zcat" とそれぞれ対応する動作をします。 上記の "xzdec" も実はこのプログラム群の一部です。
  • p7zip というパッケージの "7za" というコマンドで展開できます。 ("7z" コマンドでも大丈夫です。) p7zip は OS 付属パッケージに入ってるかもしれませんし、 自分でソースを取ってきてコンパイルしてもいいでしょうが、 バージョンは 9.04 (2009-06-07公開) 以降とかなり新しいものが必要です。 以下は古くてエラーとなった例で、 「フォーマットが新しすぎる」のようなメッセージがどこにも出てないのでご注意を。
    % 7za e texlive2009-20091107.iso.xz
    
    7-Zip (A) 4.65  Copyright (c) 1999-2009 Igor Pavlov  2009-02-03
    p7zip Version 4.65 (locale=ja_JP.eucJP,Utf16=on,HugeFiles=on,1 CPU)
    
    Processing archive: texlive2009-20091107.iso.xz
    
    Error: Can not open file as archive

ISO の読み取り

ISO の中のファイルを読むには、いくつかの方法があります。

  • 一度 DVD-R に焼いてしまいます。 説明するまでもないでしょう。Windows 機でも作業できます*1。 焼いた後に ISO を消してしまえば、もっともディスクスペースを節約できます。
  • ISO ファイルのままマウントします。 OS ごとに操作方法が異なりますし、root 権限が必要かもしれません。 ディスクスペースは ISO の分だけでよいですし、待ち時間がありませんので、ちょっと試すのには一番楽です。
    • Linux
      mount -o loop /tmp/texlive2009-20091107.iso /your/mountpoint
    • Solaris 10 (←動作報告/19
      lofiadm -a /tmp/texlive2009-20091107.iso
      mount -F hsfs -r /dev/lofi/1 /your/mountpoint
    • OpenBSD (←動作報告/44
      vnconfig svnd0 /tmp/texlive2009-20091107.iso
      mount -t cd9660 /dev/svnd0c /your/mountpoint
  • ファイルに展開します。 p7zip パッケージの "7z" コマンドで、中のファイルを取り出すことができます*2が、 やはりバージョンの制約があって、4.36(2006年4月頃)以降が必要です。 コマンド名にも注意が必要で、前述の "7za" ではダメです。

    展開にも時間がかかりますし、ディスクスペースも余分に必要です。 root 権限が不要というのが最大の利点かもしれません。

    "7z" コマンドは、入手に少々注意が必要です。 OS 付属のパッケージでは p7zip-plugins のような、 別パッケージに入っていることもあります。 ソースを取ってきた場合は "make" ではコンパイルしてくれず、 "make 7z" とか "make all2" を実行しなければなりません。

リンク

XZ Utils をコンパイルする際の注意

xz-4.999.9beta を ./configure & make すると、リンク時に以下のようなエラーが出ることがあります。

../../src/liblzma/.libs/liblzma.a(liblzma_la-crc32_x86.o)(.text+0x11):
In function `lzma_crc32':
check/crc32_x86.S:121: undefined reference to `LZMA_CRC32_TABLE'
../../src/liblzma/.libs/liblzma.a(liblzma_la-crc64_x86.o)(.text+0x15):
In function `lzma_crc64':
check/crc64_x86.S:112: undefined reference to `LZMA_CRC64_TABLE'
collect2: ld returned 1 exit status

この場合は、

./configure --disable-assembler
make

とするとうまくいくようです。 (→http://mail-index.netbsd.org/pkgsrc-changes/2009/12/14/msg033618.html


*1 Windows 機だと,専用の焼込み用ソフトウェアが必要です。いまは ImgBurn[extlink] という性能のよい無料ツールがあります。
*2 Q&A:53162でご教示いただきました。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-01-20 (水) 11:02:30 (2619d)