Debian Jigdo mini-HOWTO

Peter Jay Salzman

08.01.2004 версия 1.1

Аннотация

Загрузка ISO образов Debian всегда была тяжёлым, медленным и предельно не эффективным процессом. Jigdo - это новый инструмент для получения ISO образов Debian лёгким, быстрым и очень эффективным способом. В этом HOWTO объясняется, почему вы должны использовать jigdo, как она работает, и как получать и обновлять ISO образы Debian с помощью jigdo.

Jigdo не писалась специально для Debian. Утилиты jigdo можно применить к любому ISO и его загрузка станет такой же легкой, быстрой и эффективной как ISO с Debian. В этом HOWTO будет рассказано как это делается, но главным образом, мы сфокусируемся на загрузке ISO образов Debian.


Administrata

Авторство и права

Авторские права на этот документ принадлежат (c) 2001 Peter Jay Salzman, . Разрешается копировать, распространять и/или изменять этот документ на условиях Open Software License (OSL), версия 1.1, за исключением пунктов, оговоренных мной в следующем параграфе. Я ненавижу HOWTO, которые включают лицензию; это убийцы деревьев. Вы можете найти OSL здесь http://opensource.org/licenses/osl-1.1.txt.

Если вы хотите создать что-то своё на основе этого документа или опубликовать этот HOWTO в коммерческих целях, я был бы очень признателен, если бы вы сначала связались со мной. Это даст мне шанс предоставить вам самую последнюю версию. Также, я был бы благодарен за копию вашей работы или пиццу со шпинатом, чесноком, грибами, брынзой и артишоками.


Благодарности

Во-первых, я хотел бы поблагодарить автора jigdo Richard Atterer, просто за то, что он написал jigdo. Всякий, кто загружал ISO образы Debian другими способами знает почему. Однако, продолжим. Это HOWTO начиналось с нескольких веб страниц, где я делился опытом работы с jigdo. Ричард нашёл время, чтобы прислать мне по почте обширные исправления, пояснения и ответить на мои вопросы о jigdo. Он многократно перечитывал мою работу. Ричард --- это разработчик, который волнуется не только за свою работу, но и о людях которые используют её. Печально, что этого становится всё меньше в занятом мире, в котором мы живём. Спасибо, Ричард!

Также, мне бы хотелось поблагодарить Conrad Wood, Elcio Mello, Marcelo Ramos, Yufeng Wang и Tsukasa Yamaguchi за перевод этого mini-HOWTO. Мне приятно, что они нашли мои слова достойными своего времени и усилий. Спасибо, ребята!

Наконец, я бы хотел сказать спасибо Mark van Lent за слова поддержки и так необходимые исправления.


Комментарии и исправления

Я уделяю много внимания людям, использующим этот документ. Даже mini-HOWTO занимает много времени на написание и я бы не хотел вкладывать так много усилий во что-то, чего люди не поняли бы. Если у вас есть комментарии, исправления или предложения, даже к стилю изложения, не стесняйтесь писать мне. Всё время, пока я полностью не увяз в моей PhD диссертации и в книге, которую я пишу про отладку с помощью GDB/DDD для No Starch Press, я приложу все усилия, чтобы ответить на каждое письмо, которое я получу об этом mini-HOWTO.


Последняя версия и переводы

Немецкий:

Conrad Wood .

Португальский

Elcio Mello .

Испанский

Marcelo Ramos .

Китайский

Yufeng Wang . Доступен по адресу http://www.wangyf.com/linux/debian-jigdo-mini-howto.html.

Японский

Tsukasa Yamaguchi . Доступен по адресу http://www.linux.or.jp/JF/JFdocs/Debian-Jigdo.

Английская версия и все переводы доступны на моём веб сайте: http://www.dirac.org/linux/debian/jigdo. Если вам хочется перевести это mini-HOWTO на другой язык, свяжитесь со мной .

Стабильную английскую версию можно найти на The Linux Documentation Project: http://tldp.org/docs.html в разделе mini-HOWTO. Текущая рабочая версия доступна здесь http://www.dirac.org/linux/debian/jigdo.


Почему jigdo?

Как получить набор ISO образов Debian?

Если вы хотите иметь свой собственный набор CD Debian, то для его получения существует много способов. Один из них --- купить его у продавцов CD Debian. Это определённо стоит того, так как некоторые продавцы жертвуют деньги проекту Debian. Ваши пожертвования помогут обеспечить Debian долгую жизнь.

Другим путём получения набора CD Debian --- самому записать диски. Это влечёт за собой получение ISO образа и затем прожиг этого ISO образа на пустой CD. Когда jigdo не существовало, было два пути создания CD Debian:

  1. Загрузка полного ISO файла

  2. Использование pseudo-image kit (PIK)

Этот документ о более новом и лучшем способе получения ISO образов Debian --- утилите, которая называется jigdo. Фактически, PIK в настоящий момент официально заброшен и все дальнейшие ссылки на него были удалены из этого документа. Стандартным методом получения ISO образов Debian является jigdo.


Почему просто не загрузить файл ISO образа?

Есть зеркала, предлагающие загрузить Debian ISO по http и ftp. Проблема в том, что их не очень много и их каналы не могут выдержать всех кто хочет Debian ISO. Например, fsn.hu, как сообщают, полностью использует пропускную способность канала канала своего провайдера. Исходящий трафик достигает нескольких терабайт в месяц!

К тому же, Debian testing и unstable часто обновляются. Ваши ISO могут устареть в тот же день как вы их скачали, если только вы не нашли несколько подлый путь обновления их, типа монтирования ISO через устройство обратной связи (loopback) и использования rsync (чем PIK и занимался). Поэтому, если вы хотите иметь новейшие образы ISO, вы должны загружать новый набор образов ISO каждый день. Ясно, что это не тот путь которым бы вы хотели получать Debian ISO!

Даже stable ISO образы обновляются каждые несколько месяцев. То есть загрузка образов ISO даёт вам новейшие образы на несколько месяцев, и каждый раз когда выходит новая версия Debian stable, вам опять придётся пройти через болезненный процесс загрузки всего набора ISO. Это не очень хорошее времяпровождение и трата ресурсов зеркал.


Что такое Jigdo?

Jigdo (от "Jigsaw Download") был написан Richard Atterer и выпущен под лицензией GNU GPL. Это утилита, которая позволяет эффективно загружать и обновлять образ ISO. Любой образ ISO. Jigdo не привязан к Debian, однако для Debian он является официальным методом загрузки ISO образов.

Есть общее заблуждение, будь-то jigdo создаёт образы ISO --- это не так. Давайте в общих чертах обсудим, как jigdo позволяет вам получить образ ISO. Пусть Адам будет стороной, предлагающей образ ISO (возможно он является выпускающим релиз Debian). Пусть Бетти будет стороной, которая хочет загрузить образ ISO (возможно она пользователь Debian).

  1. Сначала Адам создаёт образ ISO, который можно записать на CD. Для создания образа ISO он может воспользоваться утилитой типа mkisofs или debian-cd. Также, для только что созданного образа ISO, он создаёт два файла: .jigdo и .template. Он выкладывает эти два файла для загрузки всем, кто хочет получить свой образ ISO.

  2. Затем Betty загружает файлы .jigdo и .template. Далее, с помощью jigdo-lite и этих двух файлов, она загружает ISO образ Адама.

Пакет jigdo состоит из двух утилит: jigdo-file и jigdo-lite. Jigdo-file была использована Адамом для создания файлов .template и .jigdo из образа ISO, который он хочет выложить для загрузки. Jigdo-lite была использована Betty для загрузки образа с помощью файлов .jigdo и .template. Если вы просто хотите загрузить Debian ISO, вам нужно использовать только jigdo-lite. Вы можете даже забыть о существовании jigdo-file.   :-)

Jigdo решает все проблемы, которые имеются у других методов получения образов ISO Debian:

  • Намного быстрее, чем загружать файл ISO образа.

  • В отличие от загрузки файла ISO образа, можно взять устаревший CD (или смонтировать устаревший ISO образ) и загрузить только те файлы, которые изменились на этом CD (или образе ISO) и создать новый обновлённый ISO. Это очень напоминает использование cvs для обновления исходного кода.

  • jigdo-lite работает через wget, который по умолчанию использует http для загрузки файлов. В отличие от rsync, http никогда не блокируется межсетевыми экранами (кроме тех случаев, где это не является причиной использования jigdo).

  • Jigdo очень трепетно относится к полосе пропускания серверов, предлагающих образы Debian. Если пользователи используют jigdo, то сервера смогут обрабатывать больше запросов загрузки образов Debian, по сравнению с другими методами получения.

Несомненно, jigdo является лучшим методом для получения ISO образов Debian.


Как работает Jigdo (не обязателен к прочтению)

Вам не обязательно читать эту часть, чтобы использовать jigdo, но он может помочь понять, как работает jigdo. Если вам не интересны подробности, просто пролистайте до Разд. Загрузка вашего первого образа (5 простых шагов), "Как пользоваться Jigdo".


Подготовка ISO для загрузки

CD образ --- это файловая система, обозначаемая как iso9660, но в этом документе мы будем с уверенностью говорить о CD образе как о большом файле (порядка 650МБ), "ISO образе", в котором содержатся файлы по определённым смещениям. Например, если CD содержит файл размером 567 байт с именем README, то в ISO образе содержимое README файла может располагаться между 20480000 и 20480567. Мы можем представить CD образ так:

                    --------------------------------------------------------
      ISO образ:    |xxxx| файл-0 |xx| файл-1 |xxx| файл-2 |x| файл-3 |xxxx|
                    --------------------------------------------------------
      

Области "x" в образе содержат информацию о каталогах, просто места заполненные нулями, имя диска, загрузочный блок и т.д.

При запуске jigdo-file передаётся два типа входной информации: полный CD образ (т.е. нужно, чтобы ISO был уже сделан) и список файлов, которые содержатся (или нет) в образе. Вот визуализация входной информации для jigdo-file:

                    --------------------------------------------------------
      ISO образ:    |xxxx| файл-0 |xx| файл-1 |xxx| файл-2 |x| файл-3 |xxxx|
                    --------------------------------------------------------

                         ----------  ----------              ----------    ----------
      Свободные файлы:   | файл-0 |  | файл-1 |              | файл-3 |    | файл-4 |
                         ----------  ----------              ----------    ----------
      

С помощью магии jigdo-file выясняет какие из свободных файлов содержатся в ISO образе и их смещения. В результате работы создаётся два файла: ".template" и ".jigdo".


Файл .template

Получив на входе ISO образ и список файлов, которые возможно находятся в ISO образе, jigdo-file генерирует файл .template для этого 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, md5-1 и так далее).

Данные, отмеченные символом "x" (информация о каталогах, место заполненное нулями и тому подобное) в ISO образе подвергаются сжатию и тоже записываются в файл .template. Наконец, любые файлы в ISO образе, которые отсутствуют в списке свободных файлов (например file-2) также подвергаются сжатию и записываются в файл .template. Они показаны символом "c".

Свободные файлы, отсутствующие в ISO образе (например file-4), игнорируются.


Файл .jigdo

Получив при запуске ISO образ и список свободных файлов, jigdo-file создаёт файл .jigdo для этого ISO образа. Файлы .jigdo для Debian сжимаются программой gzip, поэтому вам потребуется zcat или zless, чтобы посмотреть их. Вот так выглядит .jigdo файл после разжатия:

      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 просто описывает соответствие между контрольной суммой файла md5 из ISO образа и URL, откуда можно скачать этот файл. Есть и другие строки в файле .jigdo, и если вы полистаете его, вы увидите, что .jigdo файл похож на ".ini" файл. Это значит, что смысл каждого параметра заложен в названии, а также же они подробно описаны в документации к jigdo.

Формат, показанный выше, не совсем точно отображает то, что вы увидите в типичном файле .jigdo, но очень похоже. Если вы посмотрите в раздел [Servers] в конце файла .jigdo, вы явно увидите разницу между тем, что я показал выше и настоящим .jigdo файлом.


Загрузка образа

После того как вы с помощью jigdo-file создали файлы .jigdo и .template для ISO образа, любой с помощью jigdo-lite может скачать этот образ. jigdo-lite загружает все файлы Debian ISO с помощью wget, компонует их и на лету формирует копию первоначального ISO образа.


Загрузка вашего первого образа (5 простых шагов)

Мы предполагаем, что вы начинаете с самого начала и не имеете никаких Debian ISO. Как только вы запишите свой набор ISO, то позже сможете использовать jigdo-lite для его обновления. Мы опишем обновление ваших ISO в следующем разделе.


Установка Jigdo

Во-первых, установите пакет jigdo-file:

      # apt-get install jigdo-file
			

Jigdo очень быстро разрабатывается. Исправление ошибок и улучшения происходят постоянно, поэтому если вы используете stable или testing, скачайте jigdo-file из unstable отсюда http://packages.debian.org/unstable/utils/jigdo-file.html. На 8 февраля 2003 года >здесь находится версия 0.6.9. Данная версия используется в примерах этого HOWTO.

Замечание для пользователей Woody: Версией jigdo-lite, поставляемой с Woody (выпуск 1), невозможно загрузить Sarge или Sid. Смотрите Разд. [10 Feb 2003]: Я не могу с помощью jigdo загрузить Sarge или Sid.. Исправленная версия jigdo 0.6.5 представлена в будущем выпуске r2.


Загрузка файлов .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.jigdo и sarge-i386-1.template соответственно.


Запуск jigdo-lite

Запустите jigdo-lite и укажите .jigdo файл образа, который хотите загрузить. Используя Woody в качестве примера:

      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: 
			

Если вы приостановите jigdo-lite с помощью cntrl-z (не делайте этого; я покажу, что получается) и посмотрите, что выдаётся по команде ls, то обнаружите в каталоге новый файл sarge-i386-1.jigdo.unpacked. Вы помните, что .jigdo сжаты программой gzip. Этот файл --- просто gunzip-нутая версия файла .jigdo.

Прямо сейчас, jigdo-lite говорит нам, что если мы имеем устаревшую версию первого CD sarge, то мы можем задать путь к этому CD. Вот так обновляются ISO образы (или загружаются незавершённые). Так как мы предполагали, что начинаем с нуля и не имеем Debian ISO, то сканировать нечего. Мы опишем это в Разд. Обновление образа, так что просто нажмите 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/]: 
			

jigdo-lite достаточна сообразительна, чтобы использовать тот же сервер-зеркало, которым пользуетесь вы при обновлении Debian (вы, наверно, заметили на последнем снимке экрана, что jigdo-lite заглянула в /etc/apt/sources.list), получая эту информацию из /etc/apt/sources.list. Если вы хотите использовать другой сервер-зеркало, вы можете указать его здесь следуя указаниям. Если это тот сервер-зеркало, которое вы хотите использовать, нажмите ENTER. Jigdo-lite затем сохранит эту настройку в файле ~/.jigdo-lite в вашем домашнем каталоге.

Далее, если в файле .jigdo есть ссылка на пакет, который должен быть загружен с Non-US сервера (сервера, территориально расположенного не в США), то jigdo-lite попросит вас ввести имя сервера-зеркала Debian Non-US. Показываемое сообщение (и ответ) будет очень похоже на диалог выбора сервера-зеркала из предыдущего параграфа (для non-non-US сервера-зеркала.   (-:  ).

      -----------------------------------------------------------------
      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. Однако, если образ, который вы хотите загрузить, не содержит Non-US программ, то вы не увидите этот диалог.

Если вы хотите изменить сервер-зеркало по умолчанию, то позже в любое время, вы можете изменить эти две строки:

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

в ~/.jigdo-lite.


Загрузка 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://linux.csua.berkeley.edu/debian/pool/main/p/pack/pack_3.10-1_i386.deb
          => `sarge-i386-1.iso.tmpdir/linux.csua.berkeley.edu/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
      

По экрану будет пролетать много сообщений; если вас это смущает, то смотрите Разд. Jigdo-lite показывает слишком много сообщений. Как заблокировать какую-то часть или все эти сообщения?. Пока jigdo-lite загружает пакеты, переключитесь в другую консоль (или откройте другой xterm) и запустите ls в каталоге, где вы запустили jigdo-lite. Теперь в этом каталоге уже 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/ содержит все пакеты Debian, уже загруженные jigdo. С определённой частотой файлы каталога переписываются в файл sarge-i386-1.iso.tmp, который является неполной версией требуемого ISO образа и каталог очищается. Заметим, что файл sarge-i386-1.iso.tmp не существует до первой очистки каталога sarge-i386-1.iso.tmpdir/.

jigdo-file-cache.db --- это файл Berekeley DB, содержащий контрольные суммы md5 всех файлов, прочитанных из каталога, который вы указали в Files to scan:. Этот файл описан в Разд. jigdo-file-cache.db.

Сейчас можно сесть поиграть немного в 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!   
			

Обновление образа

Возможно, вы прочли последний раздел, следовали инструкциям, записали свои только что созданные ISO файлы на CD и чуствуете себя сухо и комфортно. Рано или поздно, некоторые пакеты будут обновлены и тогда вы захотите подарить свои старые CD какому-нибудь новичку из вашего местного LUG, а себе записать набор обновлённых CD. Так как вы на правильном пути к становлению jigdo-гуру, мы не будем погружаться в мучительные детали, как мы это делали в последнем разделе.

Первый шаг --- загрузить .jigdo и .template файлы опять, но тех образов, которые вы хотите обновить. Вы можете удивиться, зачем нужно загружать их во второй раз. Причина проста: обновлённый образ, который вы хотите загрузить, изменился. Могли добавиться новые файлы или что-то удалиться, но даже если нет, любые обновлённые пакеты или файлы теперь имеют другую контрольную сумму, не ту, что записана в файлах .jigdo и .template, использованных при первой загрузке образов.

В данный момент вы или держите в руках устаревшие Debian CD или имеете ISO образы этих CD на жёстком диске. Пройдём по шагам через обновление ISO файла. Если вы имеете CD, вставьте его в CD привод и смонтируйте:

      $ mount /cdrom
	

Или же, если вы имеете ISO файл, который вам нужно обновить, смонтируйте его через устройство обратной связи (loop) (для этого вам нужно быть суперпользователем). Я обновляю свой образ Woody сразу после уведомления, что в 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) или смонтированного через устройство обратной связи (loop) ISO файла (если вы используете ISO файл). Я использую ISO файл, смонтированный в /mnt, поэтому я ввёл /mnt. Если вы обновляете CD, введите точку монтирования вашего CD, которой обычно является /cdrom. В любом случае, jigdo-lite просканирует ваш смонтированный каталог, определит какие файлы нужно обновить и использует файлы, которые не требуют обновления. Вы увидите что-то вроде этого:

      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 предполает, что мы знаем об этом.   :-)

Не стесняйтесь удалять или переименовать файл образа из-за того, что он смонтирован через устройство обратной связи (loop mounted). Внутри файловой системы используются индексные дескрипторы файлов (inodes), и даже если вы переместите или переименуете файл, индексный дескриптор файла останется прежним. Не беспокойтесь за файловую систему, смонтированную в /mnt. Удалением ISO файла вы не испортите смонтированную файловую систему. Индексный дескриптор файла будет освобождён, только когда счётчик ссылок на него станет равным нулю. Монтирование ISO образа увеличивает счётчик, поэтому файл будет удалён по-настоящему, только после того как вы выполните rm файл и размонтируете устройство обратной связи. Все люди, которые обновляют 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 в первый раз. Вы уже отвечали на эти вопросы раньше, но если вы точно не помните, вы можете перечитать Разд. Указание сервера-зеркала.

С этого момента, вы увидите магию jigdo-lite. Не правда ли, что всё оказалось легко?


Часто задаваемые вопросы

Вопросы, которые начинаются с даты, являются временными (то есть, эта проблема когда-нибудь исчезнет). Если вы видите, что ситуация с одним из временных вопросов изменилась, пожалуйста, свяжитесь со мной, чтобы я мог удалить вопрос из mini-HOWTO.


Как заставить 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_proxy и http_proxy, например в файле /etc/environment или ~/.bashrc.


Jigdo-lite завершилась с ошибкой. Я что, зря загружал все эти мегабайты?

Конечно, такого Не Должно Быть (Should Not Happen (tm)), но по различным причинам работа может завершиться в состоянии, когда большой файл ".iso.tmp" уже сгенерирован, а jigdo-lite испытывает проблемы, постоянно требуя от вас перезапустить загрузку. В этом случае можно попробовать несколько вариантов:

  • Просто перезапустите загрузку, нажав клавишу Return. Может быть, некоторые файлы не удалось загрузить из-за задержек или других временных ошибок --- в следующей попытке все пропущенные файлы загрузятся.

  • Используйте другой сервер-зеркало. Некоторые сервера-зеркала Debian слегка не синхронизированы. Может быть, другой сервер-зеркало всё ещё хранит файлы, удалённые с того, которое вы указали, или уже получил файлы, ещё отсутствующие на вашем сервере-зеркале.

  • Загрузите недостающие части образа с помощью rsync. Для начала вам нужно найти правильный URL rsync загружаемого образа: выберите сервер, предоставляющий доступ по rsync к образам stable или testing, и затем определите правильный путь и имя файла. Списки содержимого каталогов могут быть получены командой rsync rsync://cdimage.debian.org/debian-cd/.

    Затем, удалите расширение ".tmp" с временного файла jigdo-lite простым переименовыванием, и передайте удалённый URL и имя локального файла rsync: rsync rsync://server.org/path/binary-i386-1.iso binary-i386-1.iso. Вы можете использовать ключи rsync --verbose и --progress, чтобы получать сообщения о состоянии и --block-size=8192, чтобы увеличить скорость загрузки.

  • Если даже всё равно ничего не получилось, загруженные вами данные не потеряны. В Linux вы можете смонтировать файл .tmp через устройство обратной связи для доступа к пакетам, которые уже загружены, и использовать их для создания образа более нового файла jigdo (например, еженедельного "снимка"(snapshot) testing дистрибутива, если при неудачной загрузке, вы пытались получить другой такой "снимок"). Для этого выполните от имени суперпользователя(root) в каталоге с неудавшейся загрузкой следующую команду: mkdir mnt; mount -t iso9660 -o loop *.tmp mnt. Затем запустите загрузку из другого каталога и введите путь к каталогу mnt в приглашении "Files to scan".


[11 Aug 2002]: Почему нет переводов этого HOWTO в LDP?

У меня возникли проблемы, когда я предлагал переводы этого HOWTO не английским реадкторам LDP.

Немецкий редактор LDP, Marco Budde , отказался принять немецкий перевод, потому что он в формате Docbook, а не в Linuxdoc, хотя Docbook более предпочтительный язык SGML для LDP. Стыдно, что мы имеем людей в сообществе open source, который подрывают нас изнутри.

Португальский редактор LDP, Alfredo Carvalho , полностью проигнорировал моё предложение португальского перевода.

Если вам хотелось бы иметь документы на этих языках в LDP, напишите этим редакторам и попросите их стать более ответственными при приёме переводов. В данный момент, вы можете загрузить эти переводы с моего личного веб сайта, http://www.dirac.org/linux/debian/jigdo.


Jigdo долго загружает файлы, потому что для каждого файла wget отключается и затем подключается заново к FTP серверу. Можно это как-то ускорить?

Скорость загрузки можно увеличить, использовав сервер HTTP вместо FTP --- FTP не очень эффективный протокол при загрузке большого количества маленьких файлов. Также, вы можете обновить версию wget, так как последняя версия поддерживает постоянные HTTP соединения, что в результате может немного увеличить скорость.

К сожалению, даже постоянные HTTP соединения не дадут такой скорости как при загрузке одиночного ISO файла. Такой скорости можно достичь только с помощью HTTP конвейеризации - графический клиент GUI будет поддерживать конвейеризацию.


Что делать, если jigdo прервался?

Если ваша загрузка прервалась, всё что вам нужно, это просто запустить заново jigdo-lite и нажимать <ENTER>, отвечая на все вопросы. Jigdo-lite начнёт оттуда где остановился.


Моя загрузка jigdo не закончилась, потому что файл .jigdo испорчен. Когда я загружу новый исправленный файл .jigdo, мне придётся загружать всё по-новой?

Может оказаться, что файл .jigdo испорчен. Это бывает очень редко, но случается время от времени при смене выпуска Debian на testing или unstable.

Если вы выяснили, что загруженный файл .jigdo испорчен, то вам нужно загрузить новый файл .jigdo (когда появится исправленная версия), но вам не нужно загружать все данные ISO снова.

Вы можете использовать тот же трюк с монтированием через устройство обратной связи, какой мы проделывали, когда обновляли образ ISO. Разница в том, что нет завершённого .iso файла, но файл .iso.tmp тоже является образом ISO и может быть использован для завершения загрузки без перекачки уже загруженных данных. Просто смонтируйте файл .iso.tmp через устройство обратной связи в /mnt, и после перезапуска jigdo-lite с исправленным файлом .jigdo, укажите jigdo-lite сканировать /mnt. Не забудьте переименовать или переместить файл .iso.tmp, так чтобы не пересечься с jigdo-lite, когда она захочет создать новый файл .iso.tmp.


Можно ли использовать jigdo для загрузки образов DVD?

Конечно: процесс идентичен загрузке образов CD. Вам только нужно загрузить другие файлы .jigdo и .template для DVD вместо CD. Вы можете найти DVD файлы .jigdo и .template здесь http://www.debian.org/CD/jigdo-cd/.

Заметим, что для создания файлов DVD размера вам нужен Linux 2.4 или поздний. Под Windows, образы с DVD размером создать нельзя, потому что на данный момент библиотека C++ компилятора mingw gcc не имеет поддержки больших файлов.


Можно ли записать файл .iso.tmp на CD?

Спасибо Gordon Huff и David Anselmi, теперь мы знаем ответ "да, можно". Gordon даже нашёл хорошую причину так делать. Цитирую Gordon:

Мой друг с Win98 имеет *отличное* кабельное подключение к Интернету. Я пришёл к нему утром, запустил jigdo (даже не одно, на самом деле), и ушёл в магазин, купил киви, достал рождественские гирлянды и рождественскую ёлку, нарядил ёлку, заказал и разрезал пиццу и зажёг satellite dish.

Я ушёл от друга с несколькими iso.tmp на CDRW. Когда я пришёл домой, я закончил загрузку этих iso через модемное соединение.


Почему jigdo не работает? Он загружает несколько пакетов и удаляет их. Я знаю, что он не записал их в файл iso.tmp, его размер не изменился!

Jigdo прекрасно работает --- файл .iso.tmp изначально создаётся со своим конечным размером и заполняется нулями. Позже он по частям перезаписывается загруженными данными.

Вы можете убедиться, что jigdo работает по сообщениям "Found X of the Y files required by the template", которые появляются время от времени. Второе значение "Y" должно уменьшаться. Когда оно достигает нуля, загрузка завершается.


[10 Feb 2003]: Я не могу с помощью jigdo загрузить Sarge или Sid.

Если вы используете Potato или Woody: из-за изменений в jigdo, версия jigdo-lite, которая поставляется с Potato и Woody (r0 и r1), не может загружать образы Sarge и Sid. Пакеты jigdo-file из Sarge (0.7.0-2) и Sid (0.7.0-2) нормально загружают образы Sarge и Sid. Также, исправленная версия jigdo-file (0.6.5) была включена в Woody r2 и надеемся станет доступной с выходом r2. Однако, из-за исправленных ошибок и улучшений, лучше использовать jigdo-file из Sarge или Sid.

Если вы используете Sarge или Sid, то вам может потребоваться помощь. Поищите в архивах списка рассылки debian-cd, и если не решите проблему, то попросите помощи (Разд. Ресурсы).


Jigdo-lite показывает слишком много сообщений. Как заблокировать какую-то часть или все эти сообщения?

Jigdo-lite использует wget, а сообщений от wget может быть довольно много. Если вам это не нравится, то можно заставить wget выдавать меньше сообщений, добавив --non-verbose в параметр wgetOpts в вашем файле ~/.jigdo-lite. Если вы хотите, чтобы wget вообще ничего не выводил, используйте --quiet в параметре wgetOpts.


Можно ли использовать jigdo не на Linuх-платформах?

Конечно. Если вы заинтересованы в Potato или Woody под Microsoft Windows, старом SunOS, HP-UX и IRIX, вы можете использовать jigdo-easy. Смотрите Разд. jigdo-easy и Разд. Ресурсы.

Если вы хотите загрузить Potato, Woody, Sarge или Sid под Microsoft Windows, то jigdo-lite был перенесён на эту платформу и может быть загружен с главного сайта jigdo (Разд. Ресурсы).


Почему в MS Windows я получаю ошибку "No such file or directory"?

Может случиться, что под MS Windows, jigdo-lite загружает некоторые файлы, но затем не может прочесть их содержимое, что и приводит к сообщению об ошибке "No such file or directory".

Вероятно, это случается когда длина имён файлов, которые обрабатывает jigdo превышает определённую величину. Решение этой проблемы состоит в перемещении наполовину загруженного файла вверх по иерархии каталогов, ближе к вершине дерева каталогов устройства.


Почему в MS Windows мои образы не могут быть больше 2ГБ?

При создании DVD образов в Microsoft Windows с помощью jigdo-win, имейте в виду, что существует ограничение на размер файла в 2ГБ. Это происходит из-за библиотеки C++ компилятора mingw32, который используется для компиляции jigdo-win. Вероятно, библиотека не поддерживает большие файлы из-за недосмотра разработчиков. Это означает, что ограничение на размер файла в 2ГБ существует даже в NTFS.

Будем надеяться, что это ограничение будет устранено в следующей версии ming32.


Некоторые термины

jigdo-easy

Jigdo-easy от Anne Bezemer, это клон jigdo-lite, перенесённый на большее количество систем, включая Microsoft Windows, старые SunOS, HP-UX и IRIX). Также, его легче использовать, чем jigdo-lite, но из-за изменений сделанных в Jigdo, работает только с Potato и Woody. Jigdo-easy не может загружать Sarge и Sid. Смотрите Разд. Ресурсы и Разд. Можно ли использовать jigdo не на Linuх-платформах?.


Графический интерфейс

В данный момент ведётся работа над GTK+ интерфейсом к jigdo. Пока он ещё не полностью функционален, но рано или поздно станет доступен. Это будет графический клиент для Linux и Windows.


jigdo-file-cache.db

Кэш, содержащий контрольные md5 суммы файлов, используется в момент, когда вы указываете каталог в приглашении Files to scan:. Если jigdo-file сканирует тот же каталог во второй раз, сканирование проходит очень быстро.

Он полезен в следующем случае: rev0 обновляется до rev1. С rev1 CD образов, некоторые пакеты могут переместиться с CD n на CD n+1 или наоборот. Если у вас медленный канал (например модемный), то вы избежите загрузки этих файлов заново. По этой причине, при загрузке новой версии CD n, укажите jigdo-lite сканировать три CD n-1, n и n+1 (или даже все 8 CD, если вы хотите быть на 100% уверены).

Для обновления каждого из 8 образов CD, jigdo-lite нужно сканировать одни и те же CD несколько раз, но кэш в этом случае предотвратит многократное перечитывание всех данных этих CD.

Кэш намного более важен при генерации jigdo файлов, так как вам наверно не понравится, если jigdo-file будет перечитывать все 50ГБ с сервера-зеркала Debian для создания каждого jigdo файла.


Ресурсы

Здесь HOWTO подходит к концу, и я думаю, что нужно дать несколько ссылок и рекомендаций, чтобы вы узнали больше об утилитах jigdo и о том, как они работают.

http://atterer.net/jigdo

Это домашняя страница jigdo. Вы определённо должны посетить этот сайт; много информации о переносе на другие платформы, графические клиенты и всё на земле, имеющее отношение к jigdo.

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

Страница Debian по jigdo-easy (Разд. jigdo-easy).

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

Основная страница Debian по jigdo.

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

Если вы используете Potato или Woody, пожалуйста, обновите jigdo-file до версии 0.7.0-2, которая лежит в testing или unstable (Разд. [10 Feb 2003]: Я не могу с помощью jigdo загрузить Sarge или Sid.).

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

Вы можете использовать эту страницу в качестве поиска в архиве списка рассылки debian-cd.

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

Страница подписки на список рассылки debian-cd.