Как создать пакет deb, который устанавливает серию файлов

Я хотел бы создать новый пакет deb для установки ряда файлов. Если это вообще возможно, я хотел бы распаковать папку, содержащую эти файлы, как часть установки в известную папку. В противном случае некоторые знания о том, как упаковать исходные папки и файлы, были бы очень полезны.

Вопрос - возможно ли это, и если да, то как?

Давайте приведем пример:

~/mypluginfolder/ содержит файлы x, y, подпапку с именем [ 116] и внутри этого другого файла под названием z.

Я хочу скопировать эту папку: tar -cvf myfiles.tar ~/mypluginfolder

Я предполагаю, что мой пакет debian будет выглядеть как

myfiles.tar.gz
myfiles+ppafoss_0.1-1/
   myfiles.tar
   DEBIAN
      changelog, compat, control, install, rules source

Можно ли как-нибудь распаковать myfiles.tar в известную папку например

/usr/share/rhythmbox/plugins/

Таким образом, конечный результат будет следующим:

/usr/share/rhythmbox/plugins/mypluginfolder
/usr/share/rhythmbox/plugins/mypluginfolder\x
/usr/share/rhythmbox/plugins/mypluginfolder\y
/usr/share/rhythmbox/plugins/mypluginfolder\abc\z

Если - если предположить, что панели запуска нужен источник, то запрашивается совет относительно того, куда я должен поместить исходные папки и файлы в структура пакета deb.


Это в конечном итоге станет серией отдельных пакетов PPA для панели запуска.

То, что я предпочитаю (но, возможно, не смогу достичь ...), это сводить упаковку к минимуму - создать серию пакетов из шаблона и отрегулировать минимум (changelog и т. Д. + Файл tar / file & amp ; структура папок).

23
задан 4 June 2012 в 18:38

1 ответ

Ниже я предполагаю, что источник является открытым (например, скрипты Python), которые поэтому не привязаны ни к какой архитектуре (например, amd64 или i386), следовательно, «все». Если у вас есть источник C, вам нужно использовать Architecture: amd64 i386 в вашем исходном файле control.


создание пакета, готового для Launchpad

Это в конечном итоге станет серией отдельных пакетов PPA для панели запуска.

Что я предпочитаю (но, возможно, не смогу достичь ...), так это минимизировать упаковку - создайте серию пакетов из шаблона и отрегулируйте минимум (журнал изменений и т. Д. + Файл tar). [ 1144]

Launchpad принимает только исходные пакеты, поэтому создайте rules, который устанавливает файлы в правильные места. Для удобства я буду использовать debhelper . Каталог с вашими файлами должен выглядеть следующим образом:

debian/changelog
debian/control
debian/rules
debian/compat
mypluginfolder/...

Файл debian/copyright также может быть полезен для информирования пользователей о лицензиях, связанных с пакетом. Я не думаю, что вам нужен скрипт postinst, так как вам нужно только извлечь некоторые файлы. compat должен содержать уровень совместимости с debhelper, скажем, «8». (см. страницу руководства debhelper для получения более подробной информации)

Файл changelog можно редактировать с помощью команды dch, доступной из пакета devscripts. rules (с использованием debhelper) должен содержать:

#!/usr/bin/make -f
%:
    dh $@
override_dh_install:
    dh_install mypluginfolder/ /usr/share/rhythmbox/plugins

Сделать его исполняемым с помощью chmod 755 debian/rules. Исходный пакет может быть собран с помощью debuild -S. Убедитесь, что вы находитесь в каталоге с именем <package-name>-<version>. Более подробную информацию о поведении override_ и команде dh можно найти на его странице руководства .

Руководство по новым сопровождающим Debian было очень ценным для меня, чтобы понять это, его рекомендуется прочитать. Пример упаковки можно найти на https://github.com/Bumblebee-Project/bumblebee-ppa .


создание пакета из существующего файлового дерева

dpkg-deb -b может использоваться для создания архивов из существующего файлового дерева. Сначала начните с создания каталога, который должен быть назван в честь вашего пакета. Я предполагаю, что вы хотите назвать его myplugin и поместить в /usr/share/rhythmbox/plugins/mypluginfolder. Кроме того, создайте каталог DEBIAN (в верхнем регистре!) Для хранения информации о пакете:

mkdir -p myplugin/usr/share/rhythmbox/plugins/mypluginfolder
mkdir myplugin/DEBIAN

Скопируйте файлы:

cp -r ~/mypluginsfolder myplugin/usr/share/rhythmbox/plugins

Далее вам понадобится называется control файл, расположенный в myplugin/DEBIAN/control, который описывает пакет. Содержимое такого файла приведено ниже:

Package: myplugin
Version: 1.0-1
Maintainer: You <whatever@contact.address>
Architecture: all
Description: plugins for Rhythmbox
 Longer description here
 .
 As you can see, new paragraph are split by a single dot,
 and lines have to be indented by one space.

Теперь вы можете при желании проверить содержимое вашего пакета. Следующая команда перечисляет содержимое записей файла и каталога в myplugin:

find myplugin -ls

Если вы удовлетворены, соберите пакет в текущем каталоге:

dpkg-deb -b myplugin .

Новый файл появится, названный как <package>_<version>_<architecture>.deb, который в этом примере myplugin_1.0-1_all.deb. Вы можете использовать программу less для просмотра файла. Например, less myplugin_1.0-1_all.deb.

0
ответ дан 4 June 2012 в 18:38

Другие вопросы по тегам:

Похожие вопросы: