Debian Jigdo 迷你 HOWTO

Peter Jay Salzman

2005-12-05 ver 1.8

摘要

获取 Debian ISO 镜像一直是一个痛苦、缓慢且极其低效的过程。Jigdo 是一种以简单、快速和非常高效的方式分发和获取 Debian ISO 镜像的工具。本 HOWTO 描述了您应该使用 jigdo 的原因,简要介绍了它的工作原理以及如何使用它来获取和更新 Debian ISO 镜像。

Jigdo 是一个非常通用的工具,并非专门针对 Debian ISO 镜像。jigdo 工具可以用于以与 Debian ISO 镜像相同简单、快速和高效的方式提供任何 ISO 镜像的下载。本 HOWTO 也将涵盖这一点,但我们将主要关注下载 Debian ISO 镜像。

/ www.dirac.org/p

根据 Open Software License 1.1 版发布。


目录
1. 管理信息
1.1. 作者和版权
1.2. 致谢
1.3. 意见和更正
1.4. 最新版本和翻译
2. 为什么使用 jigdo?
2.1. 如何获取 Debian ISO 镜像集?
2.2. 为什么不下载整个 ISO 镜像?
2.3. 什么是 Jigdo?
3. Jigdo 的工作原理(可选)
3.1. 准备 ISO 以供下载
3.2. .template 文件
3.3. .jigdo 文件
3.4. 下载镜像
4. 下载您的第一个镜像(5 个简单步骤)
4.1. 安装 Jigdo
4.2. 下载 .template 和 .jigdo 文件
4.3. 运行 jigdo-lite
4.4. 指定镜像
4.5. 下载 ISO
5. 更新您的镜像
6. 常见问题解答
6.1. 为什么 jidgo 会两次询问扫描现有文件?回答一次“是”就足够了吗?
6.2. Jigdo 在下载某些文件名时遇到问题。
6.3. 如何让 jigdo 使用我的代理?
6.4. Jigdo-lite 失败并出现错误 - 我是否白白下载了所有这些 MB?
6.5. [2002 年 8 月 11 日]:为什么本 HOWTO 的翻译版本不在 LDP 上?
6.6. 如果我的 jigdo 下载中断了该怎么办?
6.7. 我的 jigdo 下载无法完成,因为 .jigdo 文件已损坏。当我下载一个新的、修复后的 .jigdo 文件时,我需要重新下载所有数据吗?
6.8. 我可以使用 jigdo 下载 DVD 镜像吗?
6.9. 我可以将 .iso.tmp 文件刻录到 CD 吗?
6.10. Jigdo-lite 坏了!它下载软件包并删除它们。我知道它没有将它们写入 iso.tmp 文件,因为文件大小没有变化!
6.11. 我在让 jigdo-easy 工作时遇到问题。
6.12. 对于镜像更新,我希望 jigdo-lite 一次扫描 14 个循环挂载的镜像。我该怎么做?
6.13. Jigdo-lite 输出信息太多了。如何抑制它的一些或全部消息?
6.14. 我可以在 Linux 以外的平台上使用 jigdo 吗?
6.15. 在 MS Windows 上,为什么我会收到“No such file or directory”错误消息?
6.16. 在 MS Windows 上,为什么我的镜像无法增长到大于 2GB?
6.17. 在 MS Windows 上,jigdo-lite.bat 失败并显示错误消息“sh”未找到。
6.18. 我可以运行多个 jigdo-lite 实例来并行下载镜像吗?
6.19. 是否有可用的 GUI 界面?
7. 勘误
7.1. jigdo-easy
7.2. 关于扫描源的更多信息
7.3. jigdo-file-cache.db
7.4. 资源

1. 管理信息

1.1. 作者和版权

本文档版权 (c) 2001 Peter Jay Salzman,。 允许根据 Open Software License (OSL) 1.1 版的条款复制、分发和/或修改本文档。我讨厌包含许可证的 HOWTO;这会浪费树木。您可以在 https://open-source.org.cn/licenses/osl-1.1.txt 阅读 OSL。

如果您想创建衍生作品或出于商业目的发布本 HOWTO,如果您先联系我,我将不胜感激。这将使我有机会为您提供最新版本。我也很乐意收到一份您正在做的任何事情的副本,或者是一份菠菜、大蒜、蘑菇、羊乳酪和朝鲜蓟心的披萨。


1.2. 致谢

我要感谢 jigdo 的作者 Richard Atterer,仅仅是因为他编写了 jigdo。任何通过其他方式获得 Debian ISO 的人都知道为什么。本 HOWTO 最初是我写的一些关于我使用 jigdo 经验的网页。Richard 花时间给我发电子邮件,其中包含大量更正、澄清以及我关于 jigdo 的问题的答案。从那时起,他多次阅读我的作品。Richard 是一位开发者,他不仅关心自己的工作,也关心使用它的人。可悲的是,这在我们繁忙的世界中变得越来越少见。谢谢你,Richard!

我还要感谢 Conrad Wood、Elcio Mello、Marcelo Ramos、Yufeng Wang、Tsukasa Yamaguchi、Yuri KozlovOguz Yarimtepe 将本迷你 HOWTO 翻译成英语以外的语言。我很荣幸他们认为我的文字值得他们花费时间和精力。谢谢你们,伙计们!

最后,我要感谢 Mark van Lent、Gordon Huff、David Anselmi、Thierry CabuzelRussell L. HarrisJens Seidel 的友好话语和更正。


1.3. 意见和更正

我非常关心使用本文档的人。即使是迷你 HOWTO 也需要很长时间才能编写,如果人们不理解,我就不会投入这么多精力。如果您有意见、更正或建议,即使是关于写作风格的问题,请随时给我发电子邮件。只要我没有完全被我的博士论文和我正在为 No Starch Press 撰写的关于使用 GDB/DDD 调试代码的书籍所淹没,我就会尽力回复我收到的关于本迷你 HOWTO 的每封电子邮件。最新消息:我已经完成我的博士学位;现在我忙于找工作。有人需要聘请理论物理学家吗?


1.4. 最新版本和翻译

德语

Conrad Wood.

葡萄牙语

Elcio Mello。

西班牙语

Marcelo Ramos.

中文

Yufeng Wang

日语

Tsukasa Yamaguchi。 可在 http://www.linux.or.jp/JF/JFdocs/Debian-Jigdo 获取。

俄语

Yuri Kozlov。 可在 http://alioth.debian.org/project/showfiles.php?group_id=30279 获取。

土耳其语

Oguz Yarimtepe。 可在 http://docs.comu.edu.tr/howto/debian-jigdo.html 获取。

除了上面给出的 URL 之外,所有翻译版本(以及英文版)都可以在我的网站上找到:http://www.dirac.org/linux/debian/jigdo。如果您想将本迷你 HOWTO 翻译成另一种语言,请通过以下方式联系我.

本 HOWTO 的英文版也可以在 Linux 文档项目网站上找到:https://tldp.cn/docs.html


2. 为什么使用 jigdo?

2.1. 如何获取 Debian ISO 镜像集?

如果您想要一套 Debian CD,有很多方法可以获得它们。一种方法是从销售 Debian CD 的 供应商 处购买。这绝对有其优点,因为一些供应商会向 Debian 项目捐款。您的捐款有助于确保 Debian 长久存在。

获得一套 Debian CD 的另一种方法是刻录自己的光盘。这首先需要获取 ISO 镜像,然后将该 ISO 镜像刻录到空白 CD 中。在 jigdo 出现之前,有两种创建 Debian CD 的方法

  1. 下载整个 ISO

  2. 使用伪镜像工具包 (PIK)

本文档介绍了一种更新、更好的获取 Debian ISO 镜像的方法,即使用名为 jigdo 的工具。事实上,PIK 现在已正式停止使用,并且已从本文档中删除了所有进一步的引用。获取 Debian ISO 镜像的规范方法是使用 jigdo。


2.2. 为什么不下载整个 ISO 镜像?

有些镜像站点提供 Debian ISO 的 http 和 ftp 下载。问题是镜像站点非常少,它们的带宽无法支持所有想要 Debian ISO 的人。例如,据报道,fsn.hu 已使其提供商的连接饱和。每月的传出流量达到几 TB!

此外,Debian testing 和 unstable 经常更新。您的 ISO 镜像可能会在您下载的当天就过时,除非您找到一些巧妙的方法来更新它们,例如将 ISO 挂载在环回设备上并使用 rsync(PIK 就是这样做的)。因此,如果您想要最新的 ISO 镜像,您必须每天下载一套新的 ISO 镜像。显然,这不是您想要获取 Debian ISO 的方式!

即使您想下载 stable ISO 镜像,它们仍然每隔几个月就会更新。下载 ISO 镜像将为您提供几个月最新的镜像,但每次发布 Debian stable 的新修订版时,您都需要从头开始经历下载整个 ISO 集的痛苦过程。这不是对您的时间和镜像站点资源的良好利用。


2.3. 什么是 Jigdo?

Jigdo(代表“Jigsaw Download”,拼图下载)由 Richard Atterer 编写,并根据 GNU GPL 发布。它是一个允许高效下载和更新 ISO 镜像的工具。任何 ISO 镜像。Jigdo 并非 Debian 特有,但 Debian 已选择它作为下载 ISO 镜像的官方方法。

一个常见的误解是 jigdo 创建 ISO 镜像;事实并非如此。让我们讨论一下 jigdo 如何让您获得 ISO 镜像的整个过程。假设 Adam(Debian 发布经理)是提供 ISO 镜像的人。Betty(Debian 用户)是想要下载 ISO 镜像的人。

  1. Adam 首先创建一个适合刻录 CD 的 ISO 镜像。他可能会使用 mkisofsdebian-cd 等实用程序来创建 ISO 镜像。他还创建了两个与他新创建的镜像相关联的小文件:一个.jigdo文件和一个.template文件。他使这两个文件可供任何想要获取其 ISO 镜像的人下载。

  2. 然后 Betty 下载.jigdo.template文件。她使用 jigdo-lite 以及这两个文件来下载 Adam 的 ISO 镜像。

  3. 当 Debian 更新时,Adam 创建了 ISO 的新版本并生成了新的.jigdo.template文件。

  4. 当 Betty 想要更新她的 CD 时,她下载新的.jigdo.template文件并将它们与 jigdo-light 一起使用,以更新她的 ISO 镜像副本。这里重要的是,她只下载旧 ISO 和 Adam 新 ISO 之间的差异。她不必重新下载未更改的部分。

Jigdo 附带两个实用程序:jigdo-file(由 Adam 使用)创建.jigdo.template文件,以及 jigdo-lite(由 Betty 使用)使用这两个文件下载或更新 ISO。如果您只想获取/更新 Debian ISO,您只需使用 jigdo-lite。您可以忘记 jigdo-file 甚至存在。 :-)

Jigdo 解决了其他获取 Debian ISO 镜像的方法的所有问题

  • 它比下载整个 ISO 镜像快得多。

  • 与下载整个 ISO 镜像不同,它可以获取过时的 CD(或循环挂载的过时 ISO 镜像),下载自 CD(或 ISO 镜像)创建以来已更改的文件,并创建一个新的更新的 ISO。与您使用 cvs 更新源代码的方式非常相似。

  • jigdo-lite 使用 wget,默认情况下,wget 使用 http 传输文件。与 rsync 不同,http 永远不会被防火墙阻止(除非您不应该使用 jigdo 的防火墙背后)。

  • Jigdo 对提供 Debian 镜像的服务器的带宽非常友好。与使用其他方法获取 Debian 镜像相比,Debian 镜像站点可以处理更多使用 jigdo 下载 Debian 镜像的人的负载。

显然,jigdo 是获取 Debian ISO 镜像的最佳方法。


3. Jigdo 的工作原理(可选)

您不需要了解这些材料即可下载 Debian ISO,但它可能有助于揭开 jigdo 工作原理的神秘面纱。如果您对细节不感兴趣,只需快进到 第 4 节“如何使用 Jigdo”。


3.1. 准备 ISO 以供下载

CD 镜像是一个名为 iso9660 的文件系统,但对于本文讨论,我们可以安全地将 CD 镜像视为一个名为“ISO 镜像”的大文件(约 650MB),其中包含各种偏移量的文件。例如,如果 CD 包含一个名为 README 的 567 字节文件,则 ISO 镜像可能包含偏移量 20480000 和 20480567 之间的 README 文件内容。您可以将 CD 镜像可视化为

                    --------------------------------------------------------
      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 找出哪些松散文件包含在 ISO 镜像中以及它们在 ISO 文件中的偏移量。它输出两个文件:一个“.template”文件和一个“.jigdo”文件。


3.2. .template 文件

给定 ISO 镜像和一组可能在 ISO 镜像中也可能不在 ISO 镜像中的文件的输入,jigdo-file 会为该 ISO 镜像输出一个 .template 文件。以下是.template文件的外观

                    --------------------------------------------------------
      .template:    |xxxx| md5-0  |xx| md5-1  |xxx|cccccccc|x| md5-3  |xxxx|
                    --------------------------------------------------------
      

jigdo-file 发现文件file-0, file-1file-3包含在 ISO 镜像中。它删除了这些文件的内容,并用每个文件的 md5 校验和替换了它们(md5-0, md5-1,等等)。

ISO 镜像中的“x”数据(目录信息、零填充等)被压缩并写入 .template 文件。最后,ISO 镜像中未作为松散文件提供的任何文件(如file-2)也被压缩并写入 .template 文件。这在 .template 文件可视化中显示为“c”数据。

提供给 jigdo-file 但在 ISO 镜像中未找到的松散文件(如file-4)将被忽略。


3.3. .jigdo 文件

给定 ISO 镜像和一组可能在 ISO 镜像中也可能不在 ISO 镜像中的松散文件的输入,jigdo-file 会为该 ISO 镜像输出一个 .jigdo 文件。Debian .jigdo 文件是 gzipped 的,因此您需要使用 zcat 或 zless 查看它们。以下是 .jigdo 文件在 gunzip 解压缩后的外观

      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 文件只是提供 ISO 镜像中文件的 md5sum 与该文件的下载 URL 之间的映射。在.jigdo文件中还有一些其他内容,如果您仔细查看,您会发现.jigdo文件与“.ini”文件具有相同的格式。它应该是自我解释的,但如果您想要详细信息,请参阅 jigdo 文档。

上面显示的格式与您在典型的 .jigdo 文件中看到的格式不太一样,但非常相似。如果您查看 .jigdo 文件底部的 [Servers] 部分,您将确切地看到我上面显示的格式与实际.jigdo文件之间的区别。


3.4. 下载镜像

一旦您使用 jigdo-file 生成了.jigdo和 .template文件的 ISO 镜像,任何人都可以使用 jigdo-lite 下载该镜像。jigdo-lite 使用 wget 下载 Debian ISO 的所有文件,将它们组装起来,并动态形成原始 ISO 镜像的副本。


4. 下载您的第一个镜像(5 个简单步骤)

我们将假设您是从头开始,并且手头没有任何 Debian ISO。一旦您刻录了您的 ISO 集,您稍后可以使用 jigdo-lite 更新它们。我们将在下一节介绍更新您的 ISO。


4.1. 安装 Jigdo

首先安装 jigdo-file 软件包

      # apt-get install jigdo-file
      

Jigdo 正在积极开发中。错误修复和增强功能不断涌现,因此如果您使用的是 stable 或 testing,请从 unstable 下载 jigdo-file,网址为 http://packages.debian.org/unstable/utils/jigdo-file.html。截至 2005 年 11 月 28 日,版本为 0.7.2-2。


4.2. 下载 .template 和 .jigdo 文件

对于您要下载的每个 ISO 镜像,您都需要该镜像的 .jigdo 和 .template 文件。这两个文件都遵循相同的命名约定

      distro-arch-n.jigdo
      distro-arch-n.template
      

其中 distro 是发行版的名称(例如“sarge”),arch 是架构(例如“i386”),n 是磁盘编号(例如“1”)。

例如,sarge 有 8 个镜像,因此您需要下载 8 个 .jigdo 文件和 8 个 .template 文件。可以从 http://www.debian.org/CD/jigdo-cd/ 下载。第一个 .jigdo 和 .template 文件命名为sarge-i386-1.jigdosarge-i386-1.template分别。


4.3. 运行 jigdo-lite

运行 jigdo-lite 并提供您要下载的镜像的.jigdo文件。以 Sarge 为例

      lucifer$ ls
      sarge-i386-1.jigdo  sarge-i386-1.template
      lucifer$ jigdo-lite sarge-i386-1.jigdo 
      
      Jigsaw Download "lite"
      Copyright 2001-2003 by Richard Atterer <jigdo@atterer.net>
      Getting mirror information from /etc/apt/sources.list
      
      -----------------------------------------------------------------
      Images offered by `sarge-i386-1.jigdo':
        1: 'Debian GNU/Linux testing "Sarge"
               - Official Snapshot i386 Binary-1 CD' (sarge-i386-1.iso)
      
      Further information about `sarge-i386-1.iso':
      Generated on Fri, 7 Feb 2003 20:31:28 -0700
      
      -----------------------------------------------------------------
      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 in 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 downloading
      the remaining files.
      Files to scan:
      

如果您使用 control+z 暂停了 jigdo-lite(不要这样做;我将告诉您您会看到什么)并查看 ls 的输出,您会在目录中找到一个名为sarge-i386-1.jigdo.unpacked的新文件。. 事实证明 .jigdo 文件是 gzip 压缩的。此文件只是.jigdo文件之间的区别。

的 gunzip 解压缩版本。现在,jigdo-lite 正在告诉我们,如果我们有 sarge 第一张 CD 的过时版本,我们应该提供 CD 的路径名。这就是您更新 ISO 镜像的方式(或完成您未完成的下载)。由于我们假设您是从头开始,并且还没有 Debian ISO,因此我们没有什么可以扫描的。我们将在 第 5 节 中介绍这一点,因此只需按 ENTER 即可。

另请参阅 第 7.2 节“关于扫描源的更多信息”。


4.4. 指定镜像

您将看到

      -----------------------------------------------------------------
      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/]: 
			

默认情况下,jigdo-lite 从您的/etc/apt/sources.list中提取镜像。如果您想使用不同的镜像,您可以在此处指定不同的镜像。如果您想使用此镜像,请按 ENTER。Jigdo-lite 然后将在您的主目录中写入一个.jigdo-lite文件。

接下来,如果您使用的.jigdo文件引用了一个需要从非美国服务器下载的软件包,jigdo-lite 将提示您输入 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 会将您的选择写入~/.jigdo-lite。但是,如果您即将下载的镜像不包含非美国软件,您将看不到此对话框。

如果您想在将来任何时候更改与 jigdo 一起使用的默认镜像,您可以修改~/.jigdo-lite:

      debianMirror='http://some-mirror-to-use/debian/'
      nonusMirror='http://some-other-mirror/debian-non-US/'
      

4.5. 下载 ISO

指定镜像后,jigdo-lite 将开始下载文件以组装 ISO 镜像

      Not downloading .template file - `sarge-i386-1.template' already present
      
      -----------------------------------------------------------------
      Merging parts from `file:' URIs, if any...
      Found 0 of the 826 files required by the template
      Will not create image or temporary file - try again with different input files
      --09:35:12--  http://mirror/debian/pool/main/p/pack/pack_3.10-1_i386.deb
          => `sarge-i386-1.iso.tmpdir/mirror/debian/pool/main/p/pack/pack_3.10-1_i386.deb
      Resolving linux.csua.berkeley.edu... done.
      Connecting to linux.csua.berkeley.edu[128.32.112.231]:80... connected.
      HTTP request sent, awaiting response... 200 OK
      Length: 1,911,624 [application/x-debian-package]
      
      19% [======>                              ] 378,304      149.87K/s    ETA 00:09
      

您的屏幕上会飞过很多消息;如果这让您感到困惑,请参阅 第 6.13 节。当 jigdo-lite 下载软件包时,切换到另一个控制台(或打开另一个 xterm)并在您运行 jigdo-lite 的目录中执行 ls。现在目录中应该有 6 个文件

  • sarge-i386-1.iso.list

  • sarge-i386-1.iso.tmp

  • jigdo-file-cache.db

  • sarge-i386-1.iso.tmpdir/

  • sarge-i386-1.jigdo

  • sarge-i386-1.jigdo.unpacked

  • sarge-i386-1.template

sarge-i386-1.iso.tmpdir/目录包含 jigdo-lite 下载的所有 Debian 软件包。目录会不时刷新,文件会写入到sarge-i386-1.iso.tmp,这是您想要的 ISO 镜像的临时不完整版本。请注意sarge-i386-1.iso.tmp在第一次sarge-i386-1.iso.tmpdir/刷新之前不会出现。

jigdo-file-cache.db是一个 Berekeley DB 文件,其中包含当您在“要扫描的文件”提示符下指定目录时读取的任何文件的 md5sum。它在 第 7.3 节 中描述。

此时,去玩一些 Quake III,因为这将需要一些时间(您可能想在另一台机器上玩,因为当 jigdo 将文件刷新到.iso.tmp文件时,磁盘密集度非常高)。在某个时候,下载将完成,您将看到

      FINISHED --13:32:58--
      Downloaded: 7,469,872 bytes in 9 files
      Found 9 of the 9 files required by the template                              
      Successfully created `sarge-i386-3.raw'
      
      -----------------------------------------------------------------
      Finished!
      The fact that you got this far is a strong indication that `sarge-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!   
			

5. 更新您的镜像

据推测,您已经阅读了上一节,按照说明进行操作,将新创建的 ISO 文件刻录到 CD 上,并且感觉温暖而舒适。迟早,某些软件包会得到更新,现在您想将旧 CD 捐赠给当地 LUG 安装节上的一些新手,并为自己刻录一套更新的 CD。既然您已经走上了成为 jigdo 大师的道路,我们就不会像上一节那样详细地介绍。

第一步是再次下载您要更新的镜像的 .jigdo 和 .template 文件。您可能想知道为什么需要第二次下载它们。原因是您要下载的更新镜像已更改。文件可能已被添加或删除,但即使没有,任何更新的软件包或文件都将与您首次下载镜像时使用的 .jigdo 和 .template 文件中列出的校验和不同。

此时,您要么手中拿着过时的 Debian CD,要么硬盘驱动器上有 CD 的过时 ISO 镜像。让我们逐步了解获取更新的 ISO 文件的步骤。如果您有 CD,请将其放入 CD 驱动器并挂载它

      $ mount /cdrom
	

另一方面,如果您有想要更新的 ISO 文件,请将其作为循环设备挂载(您可能需要 root 权限才能执行此操作)。以 Woody 为例

      # mount -o loop woody-i386-1.iso /mnt
	

现在运行 jigdo-lite,并将.jigdo文件作为参数。

      $ jigdo-lite woody-i386-1.jigdo 
      
      -----------------------------------------------------------------
      Jigsaw Download "lite"
      Copyright 2001-2002 by Richard Atterer <jigdo@atterer.net>
      Loading settings from `/home/p/.jigdo-lite'
      
      -----------------------------------------------------------------
      Images offered by `woody-i386-1.jigdo':
        1: Debian GNU/Linux 3.0 r0 Woody
             - Official i386 Binary-1 CD (debian-30r0-i386-binary-1.iso)
      
      Further information about `debian-30r0-i386-binary-1.iso':
      Generated on Thu, 18 Jul 2002 14:34:12 +0100
      
      -----------------------------------------------------------------
      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.  You found the secret message; you're a very careful
      reader.  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:
	

jigdo-lite 要求我们提供您挂载的 CD 的位置(如果您正在更新 CD)或您的循环挂载 ISO 文件(如果您正在使用 ISO 文件)。我正在使用循环挂载在/mnt上的 ISO 文件,所以我将输入/mnt。如果您正在更新 CD,请输入 CD 的挂载目录,很可能是/cdrom。在任何一种情况下,jigdo-lite 都会扫描您挂载的媒体目录,确定哪些文件需要更新,并重用不需要更新的文件。另请参阅 第 7.2 节“关于扫描源的更多信息”。

您可能会看到类似

      Files to scan: /mnt/other
      
      Not downloading .template file - `woody-i386-1.template' already present
      jigdo-file: Output file `debian-30r0-i386-binary-1.iso' already exists - delete
      it or use --force
      jigdo-file failed with code 3 - aborting.
	

发生了什么事?实际上,我想向您展示这一点,因为您迟早会遇到它。我正在更新 ISO 文件,但过时的镜像文件与我正在工作的目录相同。Jigdo-lite 想要生成一个名为woody-i386-1.iso的文件,但当前目录中已经有一个同名文件(过时的镜像)。Jigdo-lite 不想破坏该文件,因此它中止并让我知道我可以删除该文件或使用--force来覆盖该文件。您也可以重命名或移动该文件,但我猜 jigdo-lite 认为我们已经知道了这一点。 :-)

不要因为镜像文件是循环挂载的而不敢移动或重命名它。文件系统在底层使用 inode,即使您移动或重命名文件,inode 仍然保持不变。您不会损坏挂载在/mnt下的文件系统。至于删除 ISO 文件,也不会损坏挂载的文件系统。只有当 inode 的引用计数降至零时,才会取消分配文件的 inode。挂载 ISO 镜像会使引用计数增加,因此只有在您 rm 文件 umount 循环设备后,文件才会真正被删除。所有正在更新 CD 的人都不必担心这些。 :-)

我将 ISO 文件重命名为woody-i386-1.iso.old并再次运行 jigdo-lite。让我们再试一次

      $ jigdo-lite woody-i386-1.jigdo
      
      -----------------------------------------------------------------
      Jigsaw Download "lite"
      Copyright 2001-2002 by Richard Atterer <jigdo@atterer.net>
      Loading settings from `/home/p/.jigdo-lite'
      
      -----------------------------------------------------------------
      Images offered by `woody-i386-1.jigdo':
        1: Debian GNU/Linux 3.0 r0 Woody - Official i386 Binary-1 CD
             (debian-30r0-i386-binary-1.iso)

      Further information about `debian-30r0-i386-binary-1.iso':
      Generated on Thu, 18 Jul 2002 14:34:12 +0100
      
      -----------------------------------------------------------------
      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
      Not downloading .template file - `woody-i386-1.template' already present
      ...
      Found 1200 of the 1224 files required by the template                          
      ...

jigdo-lite 记得我想扫描/mnt并告诉我我可以键入1来扫描该目录或再次键入目录。由于我是一个固执的人,我再次键入目录的名称。

省略号表示一些快速变化的文本。第一个省略号是 jigdo-lite 正在扫描的文件动态列表。第二个省略号表示写入woody-i386-1.iso.tmp的进度。一旦 jigdo-lite 完成扫描文件并写入临时 ISO 文件,它会打印

      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: 
	

由于您通常没有除了循环挂载的 ISO 文件(或您的 CD)之外的其他文件扫描源,请按 ENTER。然后,Jigdo-lite 将询问您要使用的镜像,就像您第一次下载 ISO 时一样。您之前已经回答过这些问题,但如果您真的不记得了,您可能需要重新阅读 第 4.4 节

此时,您将看到 jigdo-lite 正在发挥其魔力。现在是不是很简单?


6. 常见问题解答

以日期开头的问答表示时间敏感问题(与临时情况相关的问题)。如果您看到其中一个问题并且知道临时情况已更改,请 联系我 并告知我,以便我可以从迷你 HOWTO 中删除该问题。


6.1. 为什么 jidgo 会两次询问扫描现有文件?回答一次“是”就足够了吗?

只要您输入要扫描的路径,它就会一直询问这个问题。想法是您可能想要扫描几张旧 CD,因此您可以将一张接一张地插入驱动器并保持提供路径“D:\”(或任何路径)。另请参阅 第 7.2 节“关于扫描源的更多信息”。


6.2. Jigdo 在下载某些文件名时遇到问题。

在 Windows 下下载 Debian 镜像时,jigdo-lite 似乎在下载以下一个或多个文件时遇到问题

      libbusiness-onlinepayment-bankofamerica-perl_xxx_all.deb
      libbusiness-onlinepayment-authorizenet-perl_xxx_all.deb
      libbusiness-onlinepayment-payconnect-perl_xxx_all.deb
      libmasonx-request-withapachesession-perl_xxx_all.deb
      libtemplate-plugin-calendar-simple-perl_xxx_all.deb
      

将 jigdo 下载目录向上移动尽可能多的目录,更靠近驱动器的根目录。

NTFS 文件系统对文件的路径名有 255 个字符的限制。当 jigdo-lite 从互联网下载文件时,它会在其下载目录中复制服务器目录结构。由于它们的名称非常长,因此上述 Debian 软件包可能会超出允许的路径长度,从而导致类似“无法写入 `[非常长的路径名]` (No such file or directory)".

之类的错误消息。有些人现在可能会想:为什么 jigdo-lite 使用 wget 的“--force-directories”开关,它会创建这些有问题的目录层次结构?

早期版本的 jigdo-lite 没有使用它,但后来有些人要求 jigdo-lite 始终使用“--continue”开关,以避免在您中断并重新启动 jigdo-lite 时半下载的 .deb 文件被忽略和删除。

很遗憾,事实证明这导致了一些问题:Debian 服务器在不同的目录下包含几个同名文件(例如“root.bin”),如果在下载过程中大致在正确的时间中断 jigdo-lite,则很可能会导致恢复的下载将数据附加到错误的半下载文件中,从而损坏该文件并导致整个 jigdo 下载失败。


6.3. 如何让 jigdo 使用我的代理?

编辑~/.jigdo-lite(或jigdo-lite-settings.txt,对于 Microsoft Windows 版本)到一个文本编辑器中,并找到以“wgetOpts”开头的行。 以下开关可以添加到该行

      -e ftp_proxy=http://LOCAL-PROXY:PORT/
      -e http_proxy=http://LOCAL-PROXY:PORT/
      --proxy-user=USER
      --proxy-passwd=PASSWORD
      

当然,请将正确的值替换为您的代理服务器。 只有当您的代理使用密码验证时,最后两个选项才是必要的。 这些开关需要添加到 wgetOpts 行的末尾,在最后的'字符之前。 所有选项必须在同一行上。

或者,在 Linux 下,您也可以设置ftp_proxyhttp_proxy环境变量,例如在文件/etc/environment~/.bashrc.


6.4. Jigdo-lite 失败并出现错误 - 我下载的所有 MB 都白费了吗?

如果 jigdo-file 在下载了 ISO 内容的相当大一部分后中止,您将拥有一个很大的“.iso.tmp”文件。 可以尝试几种方法来挽救您的下载

  • RETURN 键重新启动下载。 可能是由于超时或其他瞬时错误,某些文件无法下载。 尝试再次下载丢失的文件。

  • 尝试不同的镜像。 一些 Debian 镜像略有不同步 - 也许不同的镜像仍然保存着从您指定的镜像中删除的文件,或者它已经更新了您镜像中尚不存在的文件。 我遇到过很多次这种情况。

  • 使用 rsync 检索镜像的缺失部分。 首先,您需要找出您正在下载的镜像的正确 rsync URL:选择一个提供 rsync 访问 stabletesting 镜像的服务器,然后确定正确的路径和文件名。 可以使用类似 rsync rsync://cdimage.debian.org/debian-cd/ 的命令获取目录列表。

    接下来,通过重命名从 jigdo-lite 的临时文件中删除“.tmp”扩展名,并将远程 URL 和本地文件名都传递给 rsync:rsync rsync://server.org/path/binary-i386-1.iso binary-i386-1.iso 您可能想要使用 rsync 的--verbose--progress开关来获取状态消息,以及--block-size=8192来提高其速度。

  • 在 Linux 下,您可以循环挂载.tmp文件以访问已下载的软件包,并重用它们以从较新的 .jigdo 文件生成镜像。 为此,首先在损坏的下载目录中以 root 身份发出以下命令:mkdir mnt; mount -t iso9660 -o loop *.tmp mnt。 接下来,在不同的目录中启动新的下载,并在“Files to scan”提示符下输入 mnt 目录的路径。

    在 Microsoft Windows 下,您可以使用“虚拟驱动器”软件循环挂载临时 ISO 镜像来执行相同的操作。 Daemon toolsNero Image Drive 都非常流行。 另请参阅 http://tinyurl.com/c39zr 以获取更多选项。


6.5. [2002 年 8 月 11 日]:为什么本 HOWTO 的翻译没有在 LDP 上?

我一直在努力将本 HOWTO 的翻译提交给非英语 LDP 编辑。

德语 LDP 编辑,Marco Budde拒绝接受德语翻译,因为它是在 Docbook 而不是 Linuxdoc 中编写的,即使 Docbook 是 LDP 的首选 SGML 语言。 可悲的是,我们开源社区内部竟然有人会从内部破坏我们的社区。

葡萄牙语 LDP 编辑,Alfredo Carvalho,完全无视了我提交的葡萄牙语翻译。

如果您关心以这些语言提供 LDP 文档,我敦促您写信给这些编辑,要求他们对接受翻译文档更加负责。 目前,您可以从我的个人网站下载这些翻译,http://www.dirac.org/linux/debian/jigdo

Marco Budde,真可耻.

Alfredo Carvalho,真可耻.


6.6. 如果我的 jigdo 下载被中断了,我该怎么办?

如果您的下载被中断,您只需重新启动 jigdo-lite 并在所有问题提示处按 ENTER 键即可。 Jigdo-lite 将从中断的地方继续。


6.7. 我的 jigdo 下载无法完成,因为 .jigdo 文件已损坏。 当我下载新的、修复后的 .jigdo 文件时,我需要重新下载所有数据吗?

您可能会发现您下载的 .jigdo 文件已损坏。 这并不常见,但对于像 Debian testing 或 unstable 这样的移动目标,这种情况确实会偶尔发生。

如果您发现.jigdo已损坏,您需要下载一个新的 .jigdo 文件(当修复后的文件可用时),但您无需再次下载所有 ISO 数据。

您可以使用我们在更新 ISO 镜像时使用的相同循环挂载技巧。 区别在于,没有完成的 .iso 文件可以启动,但 .iso.tmp 文件也是 ISO 镜像,可以用于完成下载,而无需重新下载在损坏的 .jigdo 文件导致 jigdo-lite 停止之前下载的所有数据。 只需在/mnt上循环挂载 .iso.tmp 文件,当您使用修复后的 .jigdo 文件重新运行 jigdo-lite 时,告诉 jigdo-lite 扫描/mnt。 不要忘记重命名或移动 .iso.tmp 文件,以免它干扰 jigdo-lite,因为 jigdo-lite 会想要创建一个新的 .iso.tmp 文件。


6.8. 我可以使用 jigdo 下载 DVD 镜像吗?

当然可以; 该过程与下载 CD 镜像完全相同。 您唯一需要做的不同之处是下载 DVD 而不是 CD 的 .jigdo 和 .template 文件。 您可以在 http://www.debian.org/CD/jigdo-cd/ 找到 DVD .jigdo 和 .template 文件。

在 Linux 上,您需要 2.4 或更高版本的内核才能创建 DVD 大小的文件。

在 MS Windows 下,您需要使用jigdo-win-0.7.1a(2004 年 7 月 21 日发布)或更高版本才能创建 DVD 大小的镜像。 这是因为用于创建 MS Windows 可执行文件的编译器 Mingw32 的大文件支持中存在一个错误。 该错误已在该日期修复,并且jigdo-win-0.7.1a已发布。


6.9. 我可以将.iso.tmp文件刻录到 CD 吗?

感谢 Gordon Huff 和 David Anselmi,我们现在知道答案是“是的,您可以”。 但更重要的是,Gordon 给出了一个很好的理由,说明为什么您首先要这样做。 引用 Gordon 的话

我朋友的 Win98 有一个 *不错* 的有线连接。 我早上到达,启动 jigdo(实际上是多个),然后我们去商店,把猕猴桃植物绑回去,挂上圣诞彩灯和圣诞树,修剪树木,点一份披萨并分开,然后启动卫星天线。

我带着 CDRW 上的几个 iso.tmp 离开了朋友家。 当我回到家时,我使用未完成的 iso 来更新我在家里的 jigdo 设置,我家里的设置是拨号连接。


6.10. Jigdo-lite 坏了! 它下载软件包并删除它们。 我知道它没有将它们写入iso.tmp文件,因为文件大小没有变化!

Jigdo 工作正常 -.iso.tmp文件在开始时以其最终大小创建,但填充了零字节。 稍后,其中的一部分将被下载的数据覆盖。

您可以通过查看“找到模板所需的 Y 个文件中的 X 个文件”消息来判断 jigdo 是否正在取得进展,这些消息会不时打印出来。 第一个值“X”应该增加。 当X等于Y时,下载完成。


6.11. 我在让 jigdo-easy 工作时遇到问题。

请参阅 第 7.1 节


6.12. 对于镜像更新,我希望 jigdo-lite 一次扫描 14 个循环挂载的镜像。 我该怎么做?

更新 CD 镜像时,不断循环挂载和卸载镜像会很麻烦。 但是,默认情况下,Linux 内核仅支持八个循环设备,并且 jigdo-lite 的先前输入路径菜单只有五个条目。

要扫描多个循环挂载的镜像,您必须首先告诉 Linux 内核支持超过默认的八个设备。 这可以通过在加载模块时为模块提供“max_loop”参数来完成,例如使用命令行上的“modprobe loop max_loop=16”或通过将行“options loop max_loop=16”添加到/etc/modules.conf。 在 Debian 中,您必须将此行放入一个名为例如/etc/modutils/local-loop的文件中,然后运行 update-modules,因为对/etc/modules.conf的直接更改将被覆盖。

挂载各个镜像后,您可以将它们的挂载点的父目录传递给 jigdo-lite 进行扫描。 例如,如果镜像挂载在/mnt/myloopmounts/image1/等下,则传递“/mnt/myloopmounts”作为要扫描的路径。 如果传递父目录不方便,您还可以创建一个目录,并在其中填充指向挂载点的符号链接。


6.13. Jigdo-lite 太冗长了。 如何抑制其部分或全部消息?

Jigdo-lite 使用 wget,而 wget 的输出可能非常冗长。 如果这令人不安,您可以通过添加--non-verbose到您的wgetOpts文件中的~/.jigdo-lite开关来使 wget 更安静。 如果您希望 wget 不打印任何消息,请在--quiet开关中使用wgetOpts


6.14. 我可以在 Linux 以外的平台上使用 jigdo 吗?

当然可以。 如果您对 Microsoft Windows、旧版 SunOS、HP-UX 和 IRIX 下的 Potato 或 Woody 感兴趣,可以使用 jigdo-easy。 请参阅 第 7.1 节第 7.4 节

如果您想在 Microsoft Windows 下下载 Potato、Woody、Sarge 或 Sid,jigdo-lite 已被移植到该平台,并且可以从 jigdo 主站点下载(第 7.4 节)。


6.15. 在 MS Windows 上,为什么我会收到“没有这样的文件或目录”错误消息?

您可能会发现,在 MS Windows 下,jigdo-lite 会下载一些文件,但随后无法读取它们的内容,这将产生“没有这样的文件或目录”错误消息。

似乎如果 jigdo 处理的文件名的长度超过某个限制,就会发生这种情况。 解决方法是将半完成的下载向上移动到目录层次结构中,更靠近驱动器的顶层目录。


6.16. 在 MS Windows 上,为什么我的镜像不会增长到大于 2GB?

您使用的是旧版本的 jigdo。 请升级到jigdo-win-0.7.1a或更高版本。 请参阅 第 6.8 节


6.17. 在 MS Windows 上,jigdo-lite.bat失败,并显示错误消息“sh”未找到。

这意味着PATH中的.bat文件中的命令失败。 由于某种原因,如果您使用类似“\\SomeServer\Files\jigdo”这样的路径在 Windows 网络共享上解压缩 jigdo,就会发生这种情况。 解决方案:使用“映射网络驱动器”(在资源管理器的“工具”菜单中)分配一个驱动器盘符,如“Z”,然后双击“.bat”内的Z:\jigdo”文件。 或者,一种解决方法是将jigdo-bin子目录中的所有内容向上移动到.bat文件所在的位置。


6.18. 我可以运行多个 jigdo-lite 实例来并行下载镜像吗?

当然可以。 但是,为了避免文件名冲突,您应该在各自独立的目录中运行每个 jigdo-lite 实例。 您可以根据需要启动任意多个实例,然后睡觉,当您醒来时,所有 ISO 镜像都将在您的硬盘驱动器上等待您。 请注意,jigdo-lite 是带宽和 CPU 密集型的,因此您不会希望在多个实例同时运行时使用计算机。


6.19. 是否有可用的 GUI 界面?

正在开发 jigdo 的 GTK+ 界面。 Linux 和 Microsoft Windows GUI 客户端都在计划中。 不幸的是,它已经完成了 80% 超过 1.5 年了,所以不要对其发布抱太大期望。


7. 勘误表

7.1. jigdo-easy

Anne Bezemer 的 Jigdo-easy 是 jigdo-lite 的一个分支,它可移植到更广泛的系统,包括 Microsoft Windows、旧版 SunOS、HP-UX 和 IRIX)。 它也比 jigdo-lite 更易于使用,但由于对 Jigdo 所做的更改,它仅适用于 Potato 和 Woody。 Jigdo-easy 将无法下载 Sarge 和 Sid。 请参阅 第 7.4 节第 6.14 节


7.2. 关于扫描源的更多信息

现在您知道,当 jigdo-lite 要求扫描文件时,您可以使用 3 个来源

  • 您希望更新的过时 CD 或 DVD 的挂载副本。

  • 您硬盘驱动器上过时的 ISO 镜像文件的循环挂载副本。

  • 临时.iso.tmp文件的循环挂载副本,当先前的 jigdo-lite 运行中止时。

正如 Jens Seidel 指出的那样,您应该用于扫描源的另一个相当巧妙的来源:您的 apt 缓存。 Apt 使用目录/var/cache/apt/archives进行缓存。 此目录中将存在许多 Debian 软件包,它们可以用作 jigdo-lite 的扫描源! 因此,当要求您提供要扫描的目录时,请务必也使用此目录。

如果您手动编辑~/.jigdo-lite文件,请注意,多个扫描目录以空格分隔,例如

      scanMenu='/var/cache/apt/archives/ /cdrom/'
      

7.3. jigdo-file-cache.db

当您在要扫描的文件提示符下提供目录时,缓存包含读取文件的 md5sum。 如果您让 jigdo-file 第二次扫描同一个目录,扫描将非常快。

这在以下情况下可能很有用:rev0 更新为 rev1。 对于 rev1 CD 镜像,某些软件包可能已从 CDn推送到 CDn+1,反之亦然。 如果您的链接特别慢(例如调制解调器),您会尝试避免再次下载这些软件包。 因此,在下载新版本的 CDn时,您会让 jigdo-lite 扫描三个 CDn-1, nn+1(甚至所有 8 个 CD,如果您想 100% 确定)。

如果您在更新 8 个 CD 镜像中的每一个时反复让 jigdo-lite 扫描相同的 CD,则缓存将防止多次读取 CD 上的所有数据。

生成 jigdo 文件时,缓存更为重要,因为您不希望 jigdo-file 为每个生成的 jigdo 文件读取您整个 50GB 的 Debian 镜像。


7.4. 资源

本 HOWTO 即将结束,但我想给您留下一些链接和参考资料,以了解有关 jigdo 工具及其工作原理的更多信息。

http://atterer.net/jigdo

这是 jigdo 主站点。 您绝对应该浏览此站点; 大量关于端口、GUI 客户端以及与 jigdo 相关的一切信息。

http://cdimage.debian.org/~costar/jigdo

jigdo-easy 的 Debian 页面(第 7.1 节)。

http://www.debian.org/CD/jigdo-cd

jigdo 的 Debian 主页面。

http://packages.debian.org/testing/utils/jigdo-file.html

Debian jigdo-file 软件包的官方网页。

http://lists.debian.org/search.html

您可以使用此页面搜索 debian-cd 邮件列表存档。

http://www.debian.org/MailingLists/subscribe

debian-cd 邮件列表的订阅页面。

https://lists.berlios.de/mailman/listinfo/jigdo-user

官方 Jigdo 邮件列表的订阅页面。