Я хотел бы создать новый пакет 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 ; структура папок).
Ниже я предполагаю, что источник является открытым (например, скрипты Python), которые поэтому не привязаны ни к какой архитектуре (например, amd64 или i386), следовательно, «все». Если у вас есть источник C, вам нужно использовать Architecture: amd64 i386
в вашем исходном файле control
.
Это в конечном итоге станет серией отдельных пакетов PPA для панели запуска.
Что я предпочитаю (но, возможно, не смогу достичь ...), так это минимизировать упаковку - создайте серию пакетов из шаблона и отрегулируйте минимум (журнал изменений и т. Д. + Файл tar). [ 1144] blockquote>
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
.