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

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

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

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

~/mypluginfolder/ содержит файлы x, yподпапка называется abc и внутри этого другого файла под названием 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 для панели запуска.

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

1 ответ

Решение

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


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

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

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

Панель запуска принимает только исходные пакеты, поэтому создайте 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

Далее вам понадобится так называемый контрольный файл, расположенный по адресу 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,

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