[l10n-russian CVS] repository-howto repository-howto.ru.xml,NONE,1.1

Yuri Kozlov debian-l10n-russian@lists.debian.org
Sun, 12 Jun 2005 04:41:55 +0000


Update of /cvsroot/l10n-russian/repository-howto
In directory haydn:/tmp/cvs-serv20707/repository-howto

Added Files:
	repository-howto.ru.xml 
Log Message:
initial cvs version

--- NEW FILE: repository-howto.ru.xml ---
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
     "http://docbook.org/xml/4.2/docbookx.dtd">
<article>
  <articleinfo>
    <title>HOWTO: репозиторий Debian</title>

    <author>
      <firstname>Aaron</firstname>
      <surname>Isotton</surname>
      <affiliation>
        <address><email>aaron@isotton.com</email></address>
      </affiliation>
    </author>

    <abstract>
      <para>В этом документе объясняется что такое репозиторий Debian и как его можно сделать самому.</para>
    </abstract>
  </articleinfo>
  
  <section id="intro">
    <title>Введение</title>

    <para>Репозиторий Debian &mdash; это набор пакетов Debian, размещённых в специальном дереве каталогов, в которых также есть несколько дополнительных файлов с индексами и контрольными суммами пакетов. Если пользователь добавит репозиторий в свой
      <filename>/etc/apt/sources.list</filename> файл, то он сможет легко просматривать и устанавливать пакеты из репозитория, так как будто пакеты хранятся в Debian.</para>

    <para>Репозиторий может быть доступен постоянно, а может и нет (например компакт-диск), хотя первый случай более распространён.</para>

    <para>Этот документ объясняет как работают репозитории Debian, как их создавать, и как их правильно добавлять в файл
      <filename>sources.list</filename> .</para>

    <para>Оригинал этого документа можно найти <ulink
        url="http://www.isotton.com/debian/docs/repository-howto/"/>.</para>

    <section id="copyright">
      <title>Авторские права и лицензия</title>

      <para>Авторские права на этот документ, <emphasis>Debian Repository HOWTO</emphasis>, принадлежат (c) 2002-2003
          <emphasis>Aaron Isotton</emphasis>. Разрешается копировать распространять и/или изменять этот документ согласно условиям GNU Free Documentation License, версия 1.1 или более поздней, опубликованной Фондом Свободного ПО (FSF); with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.</para>
    </section> <!-- copyright  -->

    <section id="feedback">
      <title>Обратная связь</title>

      <para>
        Присылайте ваши добавления, комментарии и критику по электронной почте: <email>aaron@isotton.com</email>.
      </para>
    </section> <!-- feedback -->
  </section> <!-- intro -->

  <section id="terms">
    <title>Термины, использованные в этом документе</title>

    <variablelist>
      <varlistentry>
        <term>дистрибутивы</term>

        <listitem><para>Есть три дистрибутива Debian:
          <emphasis>стабильный (stable)</emphasis>, <emphasis>тестируемый (testing)</emphasis>
          и <emphasis>нестабильный (unstable)</emphasis>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>индексные файлы</term>

        <listitem><para>Файлы <filename>Packages.gz</filename> и
            <filename>Sources.gz</filename> .</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </section>

  <section id="how-it-works">
    <title>Как работают репозитории</title>

    <para>Репозиторий состоит как минимум из одного каталога, в котором хранятся DEB пакеты и два специальных файла:
      <filename>Packages.gz</filename> для бинарных пакетов и
      <filename>Sources.gz</filename> для пакетов с исходными текстами.</para>

    <para>Если ваш репозиторий описан правильно в
      <filename>sources.list</filename> (об этом позже), то
      <command>apt-get</command> загрузит индексный файл
      <filename>Packages.gz</filename> для бинарных пакетов (ключевое слово <literal>deb</literal> ) и файл
      <filename>Sources.gz</filename>  для пакетов с исходными текстами (ключевое слово <literal>deb-src</literal> ).</para>

    <para><filename>Packages.gz</filename> содержит название, версию, размер, краткое и полное описание и зависимости для каждого пакета, плюс некоторую дополнительную информацию, которая нам не интересна. Вся эта информация читается (и используется) менеджерами пакетов Debian, например
      <command>dselect</command> или
      <command>aptitude</command>.</para>

    <para><filename>Sources.gz</filename> содержит название, версию и зависимости для сборки (пакеты, которые нужны для сборке программы) каждого пакета (плюс некоторую дополнительную информацию, которая нам опять не интересна). Эта информация используется <command>apt-get source</command> и подобными программами.</para>

    <para>Кроме этого может существовать необязательный файл <filename>Release</filename> , содержащий информацию о вашем репозитории, которая используется механизмом <emphasis>Фиксации</emphasis>, интересной вещи, но здесь это рассмотрено не будет. О фиксации вы можете прочитать в <ulink
      url="http://www.debian.org/doc/manuals/apt-howto/">APT HOWTO</ulink>.</para>

    <para>Таким образом, после настройки собственного репозитория, вы сможете получать список и устанавливать собственные пакеты вместе с пакетами из репозитория Debian; если вы обновите пакет в репозитории, то он обновится в системе когда пользователь запустит
      <command>apt-get upgrade</command>; кроме этого каждый пользователь сможет легко увидеть краткое описание и другую важную информацию о ваших пакетах.</para>

    <para>Кроме того, правильно созданные репозитории могут предложить различные пакеты для каждого поддерживаемого дистрибутива и для каждой (в данный момент одиннадцати) из поддерживаемых архитектур;
      <literal>apt</literal> автоматически загрузит правильный для машины пользователя пакет, пользователю не нужно обременять себя лишними знаниями обо всех этих архитектурах. Также можно сгрупировать собственные пакеты в компоненты, точно также как пакеты Debian подразделяются на <literal>main</literal>, <literal>non-free</literal> и
      <literal>contrib</literal>. Из-за этого, особенно если ваши программы могут работать на нескольких архитектурах, вы полюбите репозитории пакетов.</para>

  </section> <!-- how-it-works -->

  <section id="setting-up">
    <title>Настройка репозитория</title>

    <para>Существует два типа репозиториев: сложные, где пользователям нужно указывать не только путь к репозиторию, но и дистрибутив и нужные компоненты (если есть выбор, apt автоматически загрузит файл с нужной архитектурой), и простые, где пользователю нужно указать только полный путь (и apt не нужно выяснять подходят ли пакеты в данном случае). Первый тип, естестенно сложнее в настройке, но легче в использовании, и им нужно пользоваться всегда при сложных и/или кросплатформенных репозиториях; второй проще в настройке, но подходит только для маленьких или одноархитектурных репозиториев.</para>

    <para>Хотя это и не совсем правильно, но я буду называть первые
      <emphasis>Автоматические репозитории</emphasis> , а вторые
      <emphasis>Обычные репозитории</emphasis>.</para>
    <section>

      <title>Автоматические репозитории</title>

      <para>Структура каталогов автоматического репозитория с поддерживаемыми в Debian архитектурами и компонентами выглядит так:</para>

      <example id="debian-repository-example">
        <title>Стандартный репозиторий Debian</title>

      <screen>(корневой каталог репозитория) 
| 
+-dists
  | 
  |-stable
  | |-main
  | | |-binary-alpha 
  | | |-binary-arm
  | | |-binary-...
  | | +-source 
  | |-contrib
  | | |-binary-alpha 
  | | |-binary-arm
  | | |-binary-...
  | | +-source 
  | +-non-free
  |   |-binary-alpha
  |   |-binary-arm
  |   |-binary-...
  |   +-source
  |
  |-testing 
  | |-main
  | | |-binary-alpha 
  | | |-binary-arm
  | | |-binary-...
  | | +-source 
  | |-contrib
  | | |-binary-alpha 
  | | |-binary-arm
  | | |-binary-...
  | | +-source 
  | +-non-free
  |   |-binary-alpha
  |   |-binary-arm
  |   |-binary-...
  |   +-source
  |
  +-unstable 
    |-main
    | |-binary-alpha 
    | |-binary-arm
    | |-binary-...
    | +-source 
    |-contrib
    | |-binary-alpha 
    | |-binary-arm
    | |-binary-...
    | +-source 
    +-non-free
      |-binary-alpha
      |-binary-arm
      |-binary-...
      +-source</screen>

      </example>

      <para>Свободные пакеты лежат в каталоге <literal>main</literal>; несвободные в <literal>non-free</literal>, и свободные, зависящие от несвободных в
        <literal>contrib</literal>. В настоящий момент в Debian поддерживается 11 архитектур; большинство каталогов для них здесь для краткости не показаны.
      </para>

      <para>В каждом каталоге <filename>binary-*</filename> содержится файл
        <filename>Packages.gz</filename> и необязательный файл
        <filename>Release</filename> ; в каждом каталоге
        <filename>source</filename> содержится файл
        <filename>Sources.gz</filename> и необязательный файл
        <filename>Release</filename> . Заметьте, что
        <emphasis>сами пакеты</emphasis> располагаются не в том же каталоге что и индексные файлы, так как индексные файлы содержат пути к каждому пакету; фактически пакеты могут располагаться
        <emphasis>где угодно</emphasis> в репозитории. Это делает возможным создание <link
        linkend="pools">пулов</link>.</para>

      <para>Вы можете создавать любое число дистрибутивов и компонент и называть их как угодно; то, что показано в примере просто используется в Debian. Вы можете, например, создать дистрибутивы <literal>current</literal>
        и <literal>beta</literal> (вместо
        <literal>стабильный (stable)</literal>, <literal>тестируемый (testing)</literal> и
        <literal>нестабильный (unstable)</literal>), и компоненты
        <literal>foo</literal>, <literal>bar</literal>,
        <literal>baz</literal> и <literal>qux</literal> (вместо
        <literal>main</literal>, <literal>contrib</literal> и
        <literal>non-free</literal>).</para>

      <para>Хотя вы и можете использовать любые названия компонент, обычно лучше придерживаться стандартных названий Debian, так как их назначение уже понятно пользователям Debian.</para>

      </section>

    <section>

      <title>Обычные репозитории</title>

      <para>Обычные репозитории состоят из корневого каталога и нескольких нужных вам подкаталогов. Так как пользователям нужно указывать путь к корневому каталогу репозитория и относительный путь между корневым и каталогом с индексным файлом, вы можете создавать каталоги как угодно (даже положить всё в один корневой каталог; просто относительный путь в этом случае будет
        <quote><filename>/</filename></quote>).</para>

      <example id="trivial-example">
        <title>Обычный репозиторий с двумя подкаталогами</title>
        
        <screen>(корневой каталог репозитория)
|
|-binary
+-source</screen>
      </example>

    </section>

    <section>
      <title>Создание индексных файлов</title>

      <para><command>dpkg-scanpackages</command> создаёт файл
        <filename>Packages</filename> , а
        <command>dpkg-scansources</command> файл
        <filename>Sources</filename> .</para>

      <para>Результат обеих программ направляется в stdout (стандартный выходной поток); таким образом, для сжатия файлов вы можете использовать цепочку команд:
        <command>dpkg-scanpackages
        <replaceable>аргументы</replaceable> | gzip -9c &gt; Packages.gz</command>.</para>

      <para>Данные программы работают схожим образом; им передаётся два аргумента (на самом деле есть и другие, но они здесь не показаны; вы можете прочитать о них в страницах руководства); первым параметром указывается каталог с пакетами, а вторым файл <emphasis>override</emphasis>. Для простых репозиториев файл override не нужен, но всё равно этот аргумент является обязательным, поэтому мы просто передаём
        <literal>/dev/null</literal>.</para>

      <para><command>dpkg-scanpackages</command> сканирует
        <filename>.deb</filename> пакеты;
        <command>dpkg-scansources</command> сканирует
        <filename>.dsc</filename> файлы. Необходимо располагать файлы <filename>.orig.gz</filename>,
        <filename>.diff.gz</filename> и <filename>.dsc</filename>
        вместе. Файлы  <filename>.changes</filename> необязательны.</para>

      <para>Предположим, мы имеем обычный репозиторий, описанный в <xref linkend="trivial-example"/>. Чтобы создать для него два индексных файла нужно ввести:</para>
      
      <screen>$ cd my-repository
$ dpkg-scanpackages binary /dev/null | gzip -9c &gt; binary/Packages.gz
$ dpkg-scansources source /dev/null | gzip -9c &gt; source/Sources.gz</screen>

      <para>Если у вас сложный репозиторий, подобный <xref
          linkend="debian-repository-example"/>, то вам придётся писать несколько сценариев для автоматизации процесса.</para>

      <para>Также, вы можете воспользоваться параметром
        <replaceable>pathprefix</replaceable> для упрощения синтаксиса; читателю самому предлагается проделать это в качестве упражнения. (Это описано в страницах руководства).</para>
    </section>

    <section id="release">
      <!-- todo: Release should be between <filename> tags, but then
      xmltex won't compile it --> 
      <title>Создание файлов Release</title>

      <para>Если вы хотите позволить пользователям вашего репозитория использовать механизм
        <emphasis>Фиксации</emphasis> , то нужно создать файл <filename>Release</filename> в каждом каталоге, где есть индексный файл. (Подробные сведения о фиксации изложены в <ulink
        url="http://www.debian.org/doc/manuals/apt-howto/">APT HOWTO</ulink>).</para>

      <para>Файлы <filename>Release</filename> являются простыми маленькими текстовыми файлами следующего вида:</para>

      <screen>Archive: <replaceable>архив</replaceable>
Component: <replaceable>компонент</replaceable>
Origin: <replaceable>название вашей организации</replaceable>
Label: <replaceable>Debian репозиторий моей организации</replaceable>
Architecture: <replaceable>архитектура</replaceable></screen>

      <variablelist>
        <varlistentry>
          <term><literal>Archive</literal></term>

          <listitem>
            <para>Название дистрибутива Debian, к которому относятся пакеты в этом каталоге (или для которого предназначены), например <literal>стабильный (stable)</literal>,
              <literal>тестируемый (testing)</literal> или
              <literal>нестабильный (unstable)</literal>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><literal>Component</literal></term>

          <listitem>
            <para>Компонент, к которому относятся пакеты в каталоге, например <literal>main</literal>,
            <literal>non-free</literal>, или
            <literal>contrib</literal>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><literal>Origin</literal></term>

          <listitem>
            <para>Имя автора пакетов.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><literal>Label</literal></term>

          <listitem>
            <para>Любая информация относящаяся к пакетам или к репозиторию. Дайте волю воображению.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><literal>Architecture</literal></term>

          <listitem>
            <para>Архитектура машин, для которых собирались пакеты этого каталога, например <literal>i386</literal>,
              <literal>sparc</literal> или
              <literal>source</literal>.</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para>Очень важно указать правильные <literal>Archive</literal> и
        <literal>Architecture</literal> , так как они используются для фиксации. Остальные поля менее важны.</para>
    </section>

    <section id="pools">
      <title>Создание пулов</title>

      <para>При использовании автоматических репозиториев раскидывание пакетов по разным каталогам быстро приводит к неприятностям. Это также влечёт за собой напрасные траты места и пропускной способности сети, так как многие пакеты (например пакеты с документацией) относятся сразу ко всем архитектурам.</para>

      <para>В таких случаях возможным решением является
        <emphasis>пул</emphasis>. Пул &mdash; это дополнительный каталог внутри репозитория, содержащий <emphasis>все</emphasis>
        пакеты (двоичные пакеты для всех архитектур, дистрибутивов, компонент и все пакеты с исходными текстами). В совокупности с правильной комбинацией файлов override (которые не описаны в этом документе) и с помощью сценариев многих проблем удаётся избежать. Отличным примером репозитория с пулом является сам репозиторий Debian.</para>

      <para>Пулы полезны только для больших репозиториев; я пока ни одного не сделал и не думаю, что это понадобится в ближайшем будущем, и поэтому я не объясняю как его создавать. Если вы думаете, что такой раздел должен быть добавлен, напишите его и свяжитесь со мной.</para>

    </section>

    <section>
      <title>Инструменты</title>

      <para>Существуют различные инструменты для автоматизации и упрощения создания архивов Debian; здесь описаны наболее важные из них.</para>

      <para><command>apt-ftparchive</command> &mdash; используется для перемещения набора файлов пакетов Debian в надлежащую архивную иерархию, соответствующую официальному архиву Debian. Данная программа является частью пакета <literal>apt-utils</literal> .</para>

      <para><command>apt-move</command> &mdash; используется для перемещения набора файлов пакетов Debian в надлежащую архивную иерархию, соответствующую официальному архиву Debian.</para>

    </section>

  </section> <!-- setting-up -->

  <section id="using-a-repository">
    <title>Использование репозитория</title>

    <para>Использовать репозиторий очень просто, как именно зависит от типа созданного репозитория: бинарного или с исходными текстами, автоматического или обычного.</para>

    <para>Подключение каждого репозитория занимает одну строку в
      <filename>sources.list</filename>; для репозитория с бинарными пакетами используется команда
      <literal>deb</literal> , а для репозитория с исходными текстами команда
      <literal>deb-src</literal> .</para>

    <para>Каждая строка имеет следующий синтаксис:

      <screen>deb|deb-src <replaceable>uri</replaceable> <replaceable>дистрибутив</replaceable> [<replaceable>компонент1</replaceable>] [<replaceable>компонент2</replaceable>] [...]</screen>

      Файлы <replaceable>uri</replaceable> &mdash; это URI (унифицированный идентификатор ресурса), указывающий на корень репозитория, например,
      <literal>ftp://ftp.yoursite.com/debian</literal>,
      <literal>http://yoursite.com/debian</literal> или, для файлов на вашем жёстком диске,
      <literal>file::///home/joe/my-debian-repository</literal>. Последняя косая черта является необязательной.</para>

    <para>Для автоматических репозиториев вы должны указать дистрибутив и один или более компонент; дистрибутив не должен заканчиваться символом косой черты.</para>

    <example>
      <!-- todo: sources.list should be tagged as <filename>, but xmltex
      doesn't support that -->
      <title>Два автоматических репозитория из моего sources.list</title>

      <screen>deb ftp://sunsite.cnlab-switch.ch/mirror/debian/ unstable main contrib non-free
deb-src ftp://sunsite.cnlab-switch.ch/mirror/debian/ unstable main contrib non-free</screen>

      <para>Две показанные строки указывают на автоматический бинарный и репозиторий с исходными текстами имеющим корень
      <literal>ftp://sunsite.cnlab-switch.ch/mirror/debian/</literal>, дистрибутив <literal>нестабильный (unstable)</literal> и компоненты
      <literal>main</literal>, <literal>contrib</literal> и
      <literal>non-free</literal>.</para>
    </example>

    <para>Если репозиторий не автоматический, то параметр
      <emphasis>дистрибутив</emphasis> содержит относительный путь к индексным файлам и этот путь должен заканчиваться символом косой черты, а компоненты указываться не должны.</para>

    <example>
      <title>Два обычных репозитория из моего
      <filename>sources.list</filename></title>

      <screen>deb file:///home/aisotton/rep-exact binary/
deb-src file:///home/aisotton/rep-exact source/</screen>

      <para>Первая строка подключает бинарный репозиторий  <filename>/home/aisotton/rep-exact/binary</filename> , хранящийся на моей локальной машине; вторая строка подключает репозиторий с исходными текстами
        <filename>/home/aisotton/rep-exact/source</filename>.</para>
    </example>
  </section> <!-- using-a-repository -->

  <section>
    <title>Смотрите также</title>

    <itemizedlist>
      <listitem>
        <para>Файлы <command>apt-ftparchive</command>
        (документацию к пакету).</para>
      </listitem>

      <listitem>
        <para>Файлы <command>apt-get</command> (документацию к пакету) и документацию на <literal>apt</literal>.</para>
      </listitem>

      <listitem>
        <para>Файлы <command>apt-move</command> (документацию к пакету).</para>
      </listitem>

      <listitem>
        <para><ulink url="http://www.apt-get.org/"/> (много примеров существующих репозиториев)</para>
      </listitem>
        
      <listitem>
        <para>Файлы <ulink
            url="http://www.debian.org/doc/manuals/apt-howto/">APT HOWTO</ulink>.</para>
      </listitem>


      <listitem>
        <para>Файлы <command>dpkg-scanpackages</command>
          (документацию к пакету).</para>
      </listitem>

      <listitem>
        <para>Файлы <command>dpkg-scansources</command>
          (документацию к пакету).</para>
      </listitem>

      <listitem>
        <para>Файлы <literal>sources.list(5)</literal> (страницу руководства).</para>
      </listitem>
    </itemizedlist>

  </section>
</article>