Как создать пакет 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
,