DoudouLinux DoudouLinux

Дети любят такой компьютер!

Языки сайта [ar] [cs] [de] [en] [es] [fa] [fr] [it] [ms] [nl] [pt] [pt_br] [ro] [ru] [sr] [sr@latin] [th] [uk] [vi] [zh]

Как разобрать пакет Debian

Январь 2012

Все версии этой статьи: [English] [русский]

Некоторые программы используют множество файлов, и это делает огромными пакеты Debian, которые занимают немало дискового пространства. Нам известно два способа уменьшить потребление дискового пространства: удаление или ресэмплинг файлов. Первая альтернатива предполагает, что мы можем разбить пакет на маленькие подпакеты. Скоро вы убедитесь, это не так сложно как кажется :).

Получить исходный код

На первом шаге нужно извлечь исходный код пакета из репозитариев Debian. Это достигается очень удобной командой apt-get source [1]. Поскольку пакет исходного кода Debian создан из нескольких файлов, разумно создавать каталог для каждой программы:

$ mkdir <pkgname>
$ cd <pkgname>
$ apt-get source <pkgname>

Эти команды извлекут пакет исходного кода, затем скомпилируют исходный код программы, улучшенный разработчиками Debian. Каталог исходного кода должен быть назван <pkgname>-<version>, где version - обычно x.x или x.x.x, например, 3.2 или 5.2.4.

Довести пакет до ума

Разбить пакет Debian несложно. Сначала надо выяснить, в какой каталоге хранятся файлы данных пакета. Для этого надо либо открыть бинарный пакет Debian (сжатый архивный файл), либо скомпилировать пакет Debian, используя каталог исходного кода:

$ cd <pkgname>-<version>
$ dpkg-buildpackage

Эти команды создадут в каталоге debian/ подкаталог, который будет содержать все файлы бинарного пакета. Имя такого каталога обычно <pkgname>.

Теперь можно начать разбиение пакета. Принцип очень простой, в каталоге debian/:

  • создайте текстовые файлы с именами <pkgname>-<part>.install и файл с именем <pkgname>.install для главного пакета
  • измените файл control, который контролирует количество скомпилированных пакетов
  • измените файл changelog, чтобы указать, что это и есть измененный пакет

Подробности в следующих параграфах.

Файлы .install

Файлы <pkgname>-<part>.install содержат полный путь к файлам или каталогам, которые будут скопированы в под-пакет, по одному в строке. Например, основной пакет TBO содержит в своем файле tbo.install:

/usr/bin
/usr/share/tbo/icons
/usr/share/tbo/ui

в то время как обычный пакет данных tbo-common-data.install содержит:

/usr/share/applications
/usr/share/pixmaps
/usr/share/locale
/usr/share/tbo/tutorial.pdf
/usr/share/tbo/tut.tbo
/usr/share/tbo/icon.png

Файл control

Файл control включает информацию о зависимостях, оборудовании или описание. Надо включить несколько информационных блоков, чтобы добиться совпадения с файлами .install (один блок на файл). Конечно, зависимости могут потребовать специальной настройки для каждого под-пакета. Например, для TBO первые четыре инфоблока будут выглядеть так:

Package: tbo
Architecture: any
Depends: ${shlibs:Depends}, libgtk2.0-0, ${misc:Depends}, tbo-common-data, tbo-data-doodle-bubble
Recommends: tbo-data-accesories, tbo-data-arcadia, tbo-data-bubble, tbo-data-political, tbo-data-tbo
Suggests: tbo-data-dgm, tbo-data-doodle1, tbo-data-facilware, tbo-data-guadalinex, tbo-data-linuxhispano, tbo data-southpark
Description: Intuitive GNOME comic creator
 TBO is a simple and easy drag and drop comic creator. It uses a libray of SVG draws as input to make the comic frames.
 .
 This package provides the core program without SVG libraries. Libraries are installed by the packages named tbo-data-doodle-*.
 
Package: tbo-data-doodle-all
Architecture: all
Depends: tbo, tbo-data-accesories, tbo-data-arcadia, tbo-data-bubble, tbo-data-political, tbo-data-tbo, tbo-data-dgm, tbo-data-doodle1, tbo-data-facilware, tbo-data-guadalinex, tbo-data-linuxhispano, tbo-data-southpark
Description: Intuitive GNOME comic creator
 TBO is a simple and easy drag and drop comic creator. It uses a libray of SVG draws as input to make the comic frames.
 .
 This package is a meta package that will install all the TBO SVG libraries.

Package: tbo-common-data
Architecture: all
Depends: tbo
Description: Intuitive GNOME comic creator
 TBO is a simple and easy drag and drop comic creator. It uses a libray of SVG draws as input to make the comic frames.
 .
 This package provides the common data of the program, without any SVG libraries. Libraries are installed by the packages named tbo-data-doodle-*.

Package: tbo-data-doodle-accesories
Architecture: all
Depends: tbo
Description: Intuitive GNOME comic creator
 TBO is a simple and easy drag and drop comic creator. It uses a libray of SVG draws as input to make the comic frames.
 .
 This package provides the SVG library subset named accesories.
  • Обратите внимание, что первый инфоблок должен остаться неизменным, поскольку он касается пакета исходного кода, а не бинарного. Архитектура all указывает на пакет *_all.deb, который является архитектурно-зависимым, в то время как архитектура any говорит о том, что исходный код можно скомпилировать на любом оборудовании. В этом случае для i386 это будет пакет *_i386.deb, для amd64 - *_amd64.deb и так далее.

Файл changelog

В этом файле содержится сводка изменений пакетов и номер версии. Лучше всего менять номер версии, если что-то изменилось. Для DoudouLinux принято добавлять doudouN, где N — это номер, к официальному пакету версии. Например, пакет plymouth 0.8.3-20 станет plymouth 0.8.3-20doudou1. При этом в changelog добааляется следующая информация:

tbo (0.98~git20110321-0doudou2) unstable; urgency=low

  * Split package into core and data sets.

 -- Bob Author <bob.author@doudoulinux.org>  Sat, 19 Nov 2011 17:24:12 +0100

Вы должны писать корректную сводку изменений, которые произвели, а также указывать свое настоящее имяи адрес элкетронной почты ;).

Перекомпиляция пакета

Перекомпилировать бинарный пакет Debian довольно просто, для это служат следующие команды:

$ cd <pkgname>-<version>
$ dpkg-buildpackage

Обратите внимание, что эти команды создают и пакет исходного кода, и бинарный пакет. Пакет исходного кода — это файл *.dsc, который содержит ссылки на один или два других файла. Эти файлы - оригинальный исходный код программы, файл *.orig.tar.gz, и некие заплатки Debian, которые применяются к оригинальному исходному коду.

Сноски

[1] В файле @/etc/apt-/sources.list@ должны cодержаться объявленные репозитарии исходного кода. Эти репозитарии начинаются с deb-src.


identica logo facebook logo google+ logo

Географическое положение посетителя

DoudouLinux logo Debian logo TSPU logo Genesi logo Gandi logo Hosting Extreme logo Linux Jobs Reviewed by I love Free Software

Creative Commons Copyright © DoudouLinux.org team - Весь текст с данного сайта публикуется по условиям лицензии Creative Commons BY-SA

SPIP | squelette | Карта сайта| RSS и iCal RSS 2.0