Журнал LinuxFormat - перейти на главную

LXF119:DrBrown2

Материал из Linuxformat
Перейти к: навигация, поиск

Структура репозитория Debian

Debian/Ubuntu Недоумеваете, откуда берутся ваши Deb- пакеты? Давайте разберемся с устройством репозиториев.

Месяц назад мы говорили о Deb-файлах. Мы разобрались, что это единица упаковки ПО в Debian и в системах на базе Debian, вроде Ubuntu. Мы рассмотрели внутреннюю структуру Deb-файла и узнали, как создать свой собственный.

В этом месяце мы займемся репозиториями Debian. Репозиторий – это набор Deb- файлов, хранящихся в каталогах заданной структуры, и сопровождающий его файл индекса пакетов. Обычно к репозиториям открыт общий доступ (например, по HTTP), но они могут находиться и в файловой системе (например, репозитории, смонтированные по NFS с сервера, или репозитории на CD).

Пакеты в карманах

LXF119 45 1.jpg Строка из файла /etc/apt/sources.list. Эти части связывают карманы и компоненты с URL-адресами сервера. LXF119 45 2.jpg Структура репозитория Ubuntu. Менеджеры пакетов автоматически выбирают нужные файлы исходя из архитектуры, на которой работают LXF119 45 3.jpg Схема файловой системы репозитория Ubuntu. Показаны лишь некоторые каталоги.

В Ubuntu используется двухуровневое логическое группирование пакетов, которое напрямую отражается в структуре каталогов репозиториев. Каталоги верхнего уровня называются «карманами», хотя иногда о них говорят как о «дистрибутивах». В Ubuntu Hardy Heron карманы таковы:

  • hardy Это основной продукт – фиксированная версия на момент релиза Ubuntu и как раз то, что есть на вашем CD.
  • hardy-updates Обновления и исправления ошибок для релиза Hardy. Здесь вы не найдете новых версий приложений – это строго обновления к версиям, опубликованным на момент релиза.
  • hardy-security Тоже обновления, но связанные с безопасностью.
  • hardy-backports Новые версии уже выпущенных пакетов. Например, в этом репозитории есть Arts версии 1.5.10 (звуковая система Linux), тогда как в Hardy включен Arts версии 1.5.9. Данный карман поддерживается сообществом.

Если у вас другой дистрибутив Ubuntu, например, Intrepid Ibex, карманы будут называться так: intrepid, intrepid-security и т. д.

Под каждым из карманов лежит второй слой структуры. На нем ПО делится на 4 категории (компонента) на основе уровня поддержки пакета и лицензионных соглашений:

  • main Пакеты, полностью поддерживаемые Canonical; ими можно пользоваться свободно по свободным лицензиям. Для этих пакетов Canonical предоставляет обновления безопасности.
  • restricted Пакеты, поддерживаемые Canonical, но не доступные по свободным лицензиям, хотя обычно бесплатные. В эту категорию попадают проприетарные драйверы, выпускаемые производителями видеокарт в двоичном формате.
  • universe Открытые пакеты, поддерживаемые сообществом. Они не поддерживаются Canonical, и их нет на CD Ubuntu. Это самая большая категория.
  • multiverse У этих пакетов обычно ограниченные лицензии, и для их использования может потребоваться регистрация или оплата.

Для работы с этими репозиториями в Debian есть набор утилит, совместно известных как APT (Advanced Packaging Tool). Здесь мы не будем касаться APT – лучше посмотреть man-страницы apt-get и apt-cache. Расположение репозиториев задается в файле конфигурации APT /etc/apt/sources.list. Секции этого файла соответствуют структуре карманов и компонентов.

Структура репозитория

Структуру настоящего репозитория можно увидеть, открыв страницу http://ru.archive.ubuntu.com/ubuntu. Пройдя по ней ниже, вы увидите иерархию каталогов, которую я обрисовал. Левая часть схемы (в каталоге dists) отражает разбиение на карманы, компоненты и архитектуры, которое мы обсудили, но самих Deb-файлов здесь нет. Вместо них вы найдете файлы Packages.bz2. (Как раз они-то и извлекаются и кэшируются локально, когда вы выполняете команду sudo apt-get update.)

Собственно Deb-файлы находятся в каталоге pool, который разделен по компонентам (не по карманом или архитектурам). Чтобы сохранить структуру управляемой, есть еще один уровень каталогов a, b, c и т. д. Файлы Packages.bz2 связывают две ветви этой иерархии – имя пакета с именем файла в пуле. Репозитории с пулом позволяют избежать дублирования Deb-файлов, общих для нескольких архитектур или дистрибутивов. Похожую структуру можно увидеть на CD Ubuntu, правда, лишь для компонентов main и restricted.

Персональные инструменты
купить
подписаться
Яндекс.Метрика