p@dirac.org
Copyright ?2001 by Peter Jay Salzman
2002-07-19 v.0.9.50
2002-08-12
首先,我要感谢jigdo的作者Richard Atterer。任何使用过Debian PIK(或更差的)来下载整个Debian ISO文件的人都知道原因。然而,我要再次感谢Richard Atterer。这个HOWTO文章源于我写的一些有关使用jigdo的主页,Richard花费时间email给我大量的改正,澄清和回答了有关jigdo的问题。在更新这些网页和转化成HOWTO文件过程中,他多次阅读了我的作品。他显然是一个不仅关心自己作品,而且关心使用它的人们的开发人员。不幸的是,这种事情在我们生活的繁忙世界中正变得越来越少。谢谢Richard,继续这项杰出的工作。
这是中文版本。如果你想将这篇文章翻译成其它语言,请与我联系。<p@dirac.org>.
这篇文章并没有象我的另一篇HOWTO,“The Linux Gamers' HOWTO"一样,有一个真正的家。“The Linux Gamer's HOWTO"可以通过cvs从sourceforge.net上访问到或从linuxdoc.org以各种不同的格式得到。最新的版本可以从我的网站http://www.dirac.org/linux/debian/jigdo上得到。这篇Debian Jigdo HOWTO将很快提交到linuxdoc.org。当被提交后,它将成为最新版本的官方来源,同时这篇文章将被更新。
这个文档的版权(c)2002属于Peter Jay Salzman,<p@dirac.org>。 在GNU Free Documentation License(版本1.1)之下,允许进行拷贝、发布和/或修改,除我在下一段落所列出的规定以外。我讨厌包含版权声明的HOWTO文章,它是一个“树杀手”。你可以从http://www.gnu.org/copyleft/fdl.html处读到GNU FDL声明.
如果你想从此HOWTO文章创建一个延伸的作品或将其以商业目的发表,请先与我联系。这将给我一个提供给你最新版本的机会。 我将很感激能收到一份拷贝,不管它是你正在做的东西还是一个菠菜、大蒜、蘑菇、羊乳酪和洋蓟做成的心形比萨。
如果你想拥有自己的Debian CD,有很多种方法可以得到它们。一种方法是从销售Debian CD的供货商 那里购买,这种方法因有些供应商捐款给Debian项目而显得有点价值。你的捐献帮助Debian得以长时间存在。
另一种得到一套Debian CD的方法是自己炼录,这样必须首先获得一个ISO映象文件,然后将这个ISO映象文件炼录到一个空白的CD上。在有jigdo之前,有两种方法可以创建Debian CD:
下载完整的ISO文件。
使用PIK(pseudo-image)工具。
这篇文章是关于使用一种工具jidgo,以一种新的更好的方式获取Debian ISO映象文件。事实上,PIK已经过时了,新的规范的获取Debian ISO映象文件的方法是采用jigdo。
PIK解决了下载整个ISO映像文件的问题。快速的下载速度,和PIK使用rsync来更新ISO映像中只需要更新的部分,所以它是一种有效地保持最新ISO文件的方法。然而PIK仍存在一些严重的问题:
Jigdo(代表着“Jigsaw Download”),为Richard Atterer所写并且发布于GNU GPL条款之下。它是一个进行有效下载和更新ISO映像的工具。任何ISO映像。Jigdo不是Debian所特有的,然而Debian选择它作为下载ISO映像的指定方法。Jigdo工具包含两个工具:jigdo-file为下载准备一个ISO映像,而jigdo-lite用于下载jigdo-file所准备的ISO映像。
Jigdo不生成ISO映像。它只是简单地准备它们并下载它们。ISO映像需要预先制作,这通常由mkisofs或debian-cd完成。
Jigdo通过两种获取Debian ISO映像的方法来解决所有的问题:
更快地下载整个ISO映像。
不象下载整个ISO映像,它可以使一个过时的CD映像(或者一个loop安装的过时的ISO映像)只下载那些自从创建这个CD(或ISO映像)改动过的文件并创建一个更新过的ISO映像。与你使用cvs更新源代码非常相似。
jigdo-lite比PIK更容易使用。
显然,jigdo是获取Debian ISO映像的最佳方法。
你使用jigdo时不必了解这篇材料,但是它有助于揭开jigdo的秘密。如果你对这些细节不感兴趣,只需往前跳至第4部分,“如何使用Jigdo”。
jigdo拥有两个组成部分:
jigdo-file:为下载准备ISO文件(由提供ISO文件的人使用)
jigdo-lite:下载ISO文件(由下载ISO文件的人使用)
-------------------------------------------------------- ISO Image: |xxxx| file-0 |xx| file-1 |xxx| file-2 |x| file-3 |xxxx| -------------------------------------------------------- |
图形中的“x”区域包含了诸如目录信息,补零,磁盘名字,引导块等东西。
jigdo-file使用两个东西作为输入:一个完全的CD映像(所以ISO文件需要预先建好)和一些可能存在或可能不存在映像中的文件的集合。这是一个jigdo-file输入的图形:
-------------------------------------------------------- ISO Image: |xxxx| file-0 |xx| file-1 |xxx| file-2 |x| file-3 |xxxx| -------------------------------------------------------- ---------- ---------- ---------- ---------- Loose Files: | file-0 | | file-1 | | file-3 | | file-4 | ---------- ---------- ---------- ---------- |
通过魔法,jigdo-file找出loose文件中那些文件属于ISO 映像以及它们在ISO文件中的偏移量。它输出两个文件:一个“.template”文件和一个“.jigdo”文件。
给jigdo-file提供一个ISO映像和一些可能在或可能不在ISO映像中的文件作输入后,它为那个ISO映像文件输出了一个.template文件。这个文件看起来像下面的样子:
-------------------------------------------------------- .template: |xxxx| md5-0 |xx| md5-1 |xxx|cccccccc|x| md5-3 |xxxx| -------------------------------------------------------- |
jigdo-file发现 file-0, file-1 和file-3包含在ISO映像之中,它移去这些文件的内容代之以各个文件的md5校验和。
md5-0=http://somemirror.org/file-0 md5-1=http://somemirror.org/file-1 md5-2=http://somemirror.org/file-2 md5-3=http://somemirror.org/file-3 |
上面的显示的格式并不完全与你看到的典型的.jigdo文件相同,但已经非常相似。如果你看到.jigdo文件尾部的[Servers]节,就将看到上面所提供的.jigdo文件与实际.jigdo文件的差异了。
我们假设你正从头开始,手中没有任何Debian的ISO文件。一旦你生成自己的ISO文件集,以后就可以通过jigdo-lite更新它们。我们将在下一节谈谈如何更新你的ISO文件。
# apt-get install jigdo-file |
Jigdo仍处于继续开发之中。错误修正和改进是正常的, 所以当你正在使用stable或testing版本(应该是指Debian的版本)时,请从http://packages.debian.org/unstable/utils/jigdo-file.html处下载基于unstable版本的jigdo-file。直到2002年7月19日它的版本号是0.6.8-1。这是本文的例子所用的版本。
例如:Woody一共有8个映像文件,因此你需要下载8个.jigdo文件和8个.template文件。它们可以从http://www.debian.org/CD/jigdo-cd/处下载,名字为woody-i386-1.iso.jigdo,woody-i386-1.iso.template,..., 和 woody-i386-8.iso.template。
以你想下载的映像的.jigdo文件为参数运行jigdo-lite。 以Woody为例:
% jigdo-lite woody-i386-1.iso.jigdo |
----------------------------------------------------------------- Jigsaw Download "lite" Copyright 2001-2002 by Richard Atterer <jigdo@atterer.net> Getting mirror information from /etc/apt/sources.list ----------------------------------------------------------------- Images offered by `woody-i386-1.iso.jigdo': 1: woody-i386-1.iso ----------------------------------------------------------------- If you already have a previous version of the CD you are downloading, jigdo can re-use files on the old CD that are also present on the new image, and you do not need to download them again. Mount the old CD ROM and enter the path it is mounted under (e.g. `/mnt/cdrom'). Alternatively, just press enter if you want to start the download of any remaining files. Files to scan: |
如果你忘了将一个.jigdo文件作为参数传给jigdo-lite,它将会提示你输入一个。
现在,jigdo-lite正在告诉我们如果有一个过时的CD版本的话,给出那个CD的路径名。开始我们已假设你是从头开始并且没有任何Debian的ISO映像,所以我们不用进行扫描(我们将在第5节详细讨论这个问题)。现在只需按<ENTER>。
----------------------------------------------------------------- The jigdo file refers to files stored on Debian mirrors. Please choose a Debian mirror as follows: Either enter a complete URL pointing to a mirror (in the form `ftp://ftp.debian.org/debian/'), or enter any regular expression for searching through the list of mirrors (try a two-letter country code such as `de', or a country name like `United States', or a server name like `sunsite'): Debian mirror [http://linux.csua.berkeley.edu/debian//]: |
----------------------------------------------------------------- The jigdo file also refers to the Non-US section of the Debian archive. Please repeat the mirror selection for Non-US. Do not simply copy the URL you entered above; this does not work because the path on the servers differs! Debian non-US mirror [http://linux.csua.berkeley.edu/debian-non-US//]: |
并且jigdo-lite会将你的选择写到$HOME/.jigdo-lite文件中。然而,如果你要下载的映像文件不包含Non-US软件的话,你将不会看到这个对话框。
注意,你可以改变$HOME/.jigdo-lite文件中如下面的行来改变以后下载的默认的镜像站点:
debianMirror='http://some-mirror-to-use/debian/' nonusMirror='http://some-other-mirror/debian-non-US/' |
如果jigdo-lite不能找到与你所使用的.jigdo文件相对应的.template文件,它将试图从镜像站点上下载一个。 下面是当jigdo-lite不能找到.template文件时你将看到的情况:
Not downloading .template file - `woody-i386-1.iso.template' already present ----------------------------------------------------------------- Merging parts from `file:' URIs, if any... Found 0 of the 1224 files required by the template Will not create image or temporary file - try again with different input files --13:38:08-- http://linux.csua.berkeley.edu/debian/pool/main/b/bind9/ lwresd_9.2.1-2.woody.1_i386.deb => `lwresd_9.2.1-2.woody.1_i386.deb' Resolving linux.csua.berkeley.edu... done. Connecting to linux.csua.berkeley.edu[128.32.247.238]:80... connected. HTTP request sent, awaiting response... 200 OK Length: 157,318 [application/x-debian-package] 30% [==========> ] 47,418 113.22K/s ETA 00:00 ... |
woody-i386-1.iso.tmp不会马上就出现,它是ISO文件的临时版本,只是在写ISO文件时才出现。
我不知道jigdo-file-cache.db是干什么的,它是一个Berekeley DB文件。 tmp/ 是容纳下载的Debian包的目录。例如,当我在写这个的时候,它包括了:
$ ls tmp/ alsa-headers-0.5_0.5.12a-2_all.deb tkdiff_3.08-3_all.deb alsa-utils-0.4_0.4.1-9.1_i386.deb xfonts-intl-chinese-big_1.2-2.1_all.deb gnuserv_3.12.4-3_i386.deb xmanpages-ja_4.1.0.20011224-1_all.deb pilot-link_0.9.5.0-8_i386.deb xscreensaver_3.34-3_i386.deb smpeg-plaympeg_0.4.4-8_i386.deb |
这个目录中的文件时不时被写进woody-i386-1.iso.tmp并且目录被清空。
我不知道woody-i386-2.raw.list是干什么的,file报告它是一个二进制的文件。
此时,去玩一会Quake III游戏,因为整个过程需要一些时间(你可能想到另一台机器上玩游戏,因为当jigdo在装配ISO文件是非常消耗磁盘的)。过些时间,下载将结束,你将会看到:
FINISHED --13:32:58-- Downloaded: 7,469,872 bytes in 9 files Found 9 of the 9 files required by the template Successfully created `woody-i386-3.raw' ----------------------------------------------------------------- Finished! The fact that you got this far is a strong indication that `woody-i386-3.raw' was generated correctly. I will perform an additional, final check, which you can interrupt safely with Ctrl-C if you do not want to wait. OK: Checksums match, image is good! $ |
在这里,你手里可能拿着一个过时的Debian CD或者在你的硬盘上有那个过时CD的ISO映像。让我们逐步进行来获得一个更新的ISO文件。如果你有一个CD,将它放入你的光驱并安装它:
$ mount /cdrom |
另一方面,如果你有一个想进行更新的ISO文件,把它以loop方式安装(你可能需要成为root以完成这个工作)。由于注意到Woody刚得到了一些安全方面的更新,我将更新我的Woody映像:
# mount -o loop woody-i386-1.iso /mnt |
$ jigdo-lite woody-i386-1.iso.jigdo ----------------------------------------------------------------- Jigsaw Download "lite" Copyright 2001-2002 by Richard Atterer <jigdo@atterer.net> Loading settings from `/root/.jigdo-lite' ----------------------------------------------------------------- Images offered by `woody-i386-1.iso.jigdo': 1: woody-i386-1.iso - ----------------------------------------------------------------- If you already have a previous version of the image you are downloading, jigdo can re-use files on the old image that are also present on the new image, and you do not need to download them again. Mount the old CD ROM and enter the path it is mounted under (e.g. `/mnt/cdrom'). Alternatively, just press enter if you want to start the download of any remaining files. Files to scan: |
Files to scan: /mnt Downloading .template file --18:12:41-- http://woody-i386-1.iso.template/ => `index.html' jigdo-file: Output file `woody-i386-1.iso' already exists - delete it or use --force jigdo-file failed with code 3 - aborting. % |
我将ISO文件重命名为woody-i386-1.iso.old并再次运行jigdo-lite。让我们再试一下:
$ jigdo-lite woody-i386-1.iso.jigdo ----------------------------------------------------------------- Jigsaw Download "lite" Copyright 2001-2002 by Richard Atterer <jigdo@atterer.net> Loading settings from `/root/.jigdo-lite' ----------------------------------------------------------------- Images offered by `woody-i386-1.iso.jigdo': 1: woody-i386-1.iso - ----------------------------------------------------------------- If you already have a previous version of the image you are downloading, jigdo can re-use files on the old image that are also present on the new image, and you do not need to download them again. Mount the old CD ROM and enter the path it is mounted under (e.g. `/mnt/cdrom'). Alternatively, just press enter if you want to start the download of any remaining files. You can also enter a single digit from the list below to select the respective entry for scanning: 1: /mnt Files to scan: /mnt Downloading .template file --18:26:44-- http://woody-i386-1.iso.template/ => `index.html' Resolving woody-i386-1.iso.template... failed: Host not found. ... Found 1200 of the 1224 files required by the template ... |
jigdo-lite记住了我想要扫描/mnt并告诉我可以敲入1或再次输入该目录。我再次输入了目录的名字。
Copied input files to temporary file `woody-i386-1.iso.tmp' - repeat command and supply more files to continue ----------------------------------------------------------------- If you already have a previous version of the image you are downloading, jigdo can re-use files on the old image that are also present on the new image, and you do not need to download them again. Mount the old CD ROM and enter the path it is mounted under (e.g. `/mnt/cdrom'). Alternatively, just press enter if you want to start the download of any remaining files. You can also enter a single digit from the list below to select the respective entry for scanning: 1: /mnt Files to scan: |
因为通常你除了以loop安装的ISO文件(或者CD)外,没有另外的文件来源需要扫描,按<ENTER>。 Jigdo-lite将问你想使用哪一个镜像站点,就如你第一次下载ISO文件时它问的一样。你之前已经回答过这些问题,但如果你真的忘了,你可能要重新阅读第4.4节。
到这里时,你将看到jigdo-lite正在施展它的魔法。这不是很简单吗?
这个问题在http://debian.org/CD/jigdo-cd/上和jigdo-lite的tar压缩包中的README文件已有说明。
可以,并且它正如你所想的那样工作。以loop方式安装.tmp文件到/mnt目录下,重新运行jigdo-lite并当它问你想扫描哪个文件时将这个目录传给jigdo-lite。
绝对可以!过程与下载CD映像的过程是一样的。你所要区分的只是下载DVD的.jigdo文件和.template文件来替代CD的这两个文件。你可以从http://www.debian.org/CD/jigdo-cd/上找到DVD的.jigdo文件和.template文件。
我们还没有这样试过,但它应该是可能的。一个令人惊奇的讽刺之事是,jigdo的作者并没有一个CD刻录机(如果你想要捐赠一个,可以与他联系<atterer@debian.org> ?:-)?)。你将可能找到一些文件被“0”填充着。如果有人尝试这样做,请与我联系<p@dirac.org>并告诉我发生了什么事。
但更重要的是,为什么你要这样做??:-)