Подтвердить что ты не робот

Как файлы *.dsc связаны с файлами *.deb и исходного кода

Без системы упаковки у нас есть (A) исходный код, который можно перевести/скомпилировать в (B) двоичный код.

В случае пакетов debian/ubuntu у нас есть (1) исходный код, (2) исходный пакет - dsc и (3) двоичный пакет - deb. Как получается, что (2) исходный пакет связан с (1) и (3)? Зачем нам это нужно? И, самый важный вопрос: каков рабочий процесс, генерирующий (2) и (3) из (1)?

4b9b3361

Ответ 1

Рабочий процесс обычно выглядит примерно так:

  • Кто-то, не связанный с Debian, пишет некоторый исходный код и размещает его как пакет в Интернете, например splint-3.1.2.tar.gz
  • Кто-то из Debian загружает исходный код и записывает

    • Набор патч файлов для создания исходного кода на Debian и соответствия директивам Debian. Run

      curl -s 'http://archive.ubuntu.com/ubuntu/pool/universe/s/splint/splint_3.1.2.dfsg1-2.diff.gz' | gunzip -dc | less
      

      чтобы увидеть это для примера пакета.

    • A текстовый файл метаданных, описывающий пакет - это файл .dsc и debian/control. "DSC" является аббревиатурой для Source Source Control.
  • Пакеты Binary .deb создаются для каждой архитектуры из исходного исходного кода исходного кода с использованием примененных патчей, зависящих от Debian. Вот такой файл. Debian Binary Package Building HOWTO объясняет формат этих файлов и способы их проверки.

Файл .dsc не используется для логики сборки, он больше подходит для метаданных. Однако многие инструменты на этом пути требуют этого. Например, поле Build-Depends: используется для установки необходимых зависимостей сборки.

Ответ 2

На самом деле это намного сложнее. Идея пакетов Debian состоит в том, что они содержат всю информацию, необходимую для создания страницы. Обычно исходный код модифицируется для включения каталога debian, который включает в себя файл control, описывающий зависимости этого пакета и других пакетов, с которыми он взаимодействует (например, разбивает, заменяет, предоставляет виртуальный пакет). Файл rules объясняет, как создать и установить пакет. Существуют также описания того, как упаковываться, поскольку один исходный пакет может стать множеством двоичных пакетов (например, foo-utils, libfoo0, libfoo-dev). debuild действительно читает эту информацию, выполняет компиляцию и создает двоичные пакеты. Тонкость: если foo использует libbar-dev, я, возможно, не знаю/не знаю, какую версию бинарного пакета libbar я использую. pbuilder запускает debuild в чистой среде, поэтому нет возможности компилировать файлы, которые вы явно не указали.

Подробнее см. Руководство для новых пользователей Debian.