Я хочу создать файл DEB вручную. Я хотел бы просто предоставить папку, которая содержит данные для установки, и скрипт, который будет выполнен после установки.
Это возможно?
Я хочу создать файл DEB вручную. Я хотел бы просто предоставить папку, которая содержит данные для установки, и скрипт, который будет выполнен после установки.
Это возможно?
Ответы:
Я рекомендую сделать пакет с исходным кодом. Установите build-essential , debhelper , dh-make . Перейдите в каталог, в котором находятся файлы, которые вы хотите установить (имя каталога должно иметь форму $PACKAGE-$VERSION
, например, myapp-4.2-1
для вашей первой попытки упаковки Myapp V4.2), и запустите dh_make --createorig
. Ответь на вопросы. Debhelper создаст базовую инфраструктуру, необходимую для сборки пакета, сгенерировав файлы в подкаталоге, называемые debian
как некоторые обязательные файлы, так и шаблоны для необязательных файлов. Вам может понадобиться изменить некоторые из этих файлов:
debian/rules
чтобы собрать то, что требует сборки, и установите файлы в нужном месте. Если вам просто нужно скопировать некоторые файлы, а не компилировать что-либо, просто отредактируйте файл, debian/install
чтобы указать, какие файлы должны быть установлены и куда.debian/copyright
чтобы добавить информацию о лицензии вашего пакета и информацию о том, где можно получить последнюю версию (если применимо).debian/changelog
чтобы удалить ссылку на ITP (это актуально, только если вы работаете над проектом Debian). Переименовать debian/postinst.ex
в debian/postinst
и добавить свои команды после установки там. Если вы позже обновите свой пакет, запустите, debchange -i
чтобы добавить запись в журнал изменений или отредактируйте файл в Emacs (с установленным dpkg-dev-el ).Запустите dpkg-buildpackage -rfakeroot -us -uc
сборку .deb
пакета (удалите, -us -uc
если хотите подписать пакет с помощью ключа PGP).
Если вы решите создать двоичный пакет напрямую, не собирая его из исходного пакета, что не очень легко, потому что инструментов для облегчения процесса не так много, вам понадобится некоторое базовое знакомство с форматом пакетов deb. Это описано в Руководстве по политике Debian , в частности гл. 3 (формат бинарных пакетов) , гл. 5 (контрольные файлы) , гл. 6 (сценарии установки) и приложение B (манипулирование двоичным пакетом) .
Вы должны убедиться, что ваш пакет устанавливает ожидаемые файлы /usr/share/doc/copyright
(содержащие лицензию на содержимое пакета, а также где найти последнюю версию пакета) и /usr/share/doc/changelog.Debian.gz
(содержащие журнал изменений пакета deb). Они вам не нужны, если вы собираетесь использовать пакет только внутри компании, но лучше иметь их.
Если у вас есть инструменты Debian, используйте dpkg-deb
для создания пакета. В каталог, содержащий данные для установки, добавьте каталог, называемый DEBIAN
на верхнем уровне, содержащий управляющие файлы и сценарии сопровождающего.
$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42
Если у вас нет инструментов Debian, создайте архив файлов, которые вы хотите упаковать data.tar.gz
, с отдельным архивом контрольных файлов control.tar.gz
(без подкаталогов) и текстовым файлом debian-binary
с текстом 2.0
.
cd mypackage-42
tar czf ../data.tar.gz [a-z]*
cd DEBIAN
tar czf ../../control.tar.gz *
cd ../..
echo 2.0 > debian-binary
ar r mypackage-42.deb debian-binary control.tar.gz data.tar.gz
Вы должны по крайней мере, управляющий файл с полями Package
, Maintainer
, Priority
, Architecture
, Installed-Size
, Version
, и любые необходимые декларации зависимостей.
Сценарий, который будет выполнен после установки, вызывается postinst
. Обязательно сделайте его исполняемым. Это идет рядом control
.
Если у вас уже есть бинарный пакет из другого дистрибутива, вы можете использовать Alien для его конвертации.
dch -i
.
ar
делает то tar
, чего нет?
dh_make --createorig
вы используете, вам нужно export DEBEMAIL="me@example.com"
и export DEBFULLNAME="Firstname Lastname"
заранее.
Прежде всего вам нужно создать папку сборки и архив ваших файлов: tar czvf data.tar.gz files
Затем в папке сборки вы должны создать управляющий файл с некоторыми полезными данными:
Package: xxxxxx
Version: 0.0.1
Section: user/hidden
Priority: optional
Architecture: armel
Installed-Size: `du -ks usr|cut -f 1`
Maintainer: Your Name <xxx@xxx.xx>
Description: This is optional, but creates warnings if left out
Затем вы можете независимо добавлять сценарии оболочки preinst, postint, prerm и postrm для управления поведением файлов до установки и после установки, а также до и после удаления файла .deb, а затем вы можете создать управляющий архив с помощью tar: tar czvf control.tar.gz control preinst postinst prerm postrm
Тогда вам нужен DEBiAN двоичный файл: echo 2.0 > debian-binary
. В вашей папке сборки у вас должны быть следующие файлы: debian-binary
control.tar.gz
и data.tar.gz
.
Наконец, вам нужен ar
пакет для создания файла .deb:ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
этого стоит подчеркнуть, что порядок важен: контроль должен предшествовать данным.
Я делаю много пакетов, и сделать полный пакет не является тривиальным вопросом. Положительным моментом является то, что файлы и скрипты работают намного меньше. Вы можете создать такой пакет очень просто с помощью инструмента, известного как debreate .
Debreate - это действительно простой графический интерфейс для простого создания пакетов DEB. Вы можете просто указать, какие файлы, куда они идут, и если / что должно выполняться после / предустановки / удаления. Раньше я делал все свои пакеты стандартным способом, но после того, как я начал использовать этот инструмент, я вернусь только тогда, когда это необходимо.
См. Вики Debian по упаковке , возможно equivs
(см. Ссылку) уже удовлетворяет вашим требованиям.
Страница Википедии о deb
формате файла также содержит много полезных ссылок.
Познакомился с Zimbra 7 в Debian, используя его пакеты Ubuntu. (Я упрямый, мне нравится Debian> bUbuntu, несмотря на то, что Zimbra выпускается только для Ubuntu.) Не уверен, как я работал над этим раньше, я уверен, что мне не нужно было делать это, когда я устанавливал это ранее!
mkdir new
for i in *.deb
do echo `date`: working on $i
ar x $i
cd control
rm * 2> /dev/null
tar -xzpvf ../control.tar.gz
tr "_" "-" < control > control2
mv -v control2 control
tar -czpvf ../control.tar.gz .
cd ..
ar r new/$i debian-binary control.tar.gz data.tar.gz
done
rm -rf debian-binary control.tar.gz data.tar.gz control
Все ваши новые файлы .deb будут в new/
.
Примечание : это было на сжатие - dpkg на wheezy теперь имеет --force-bad-version.
Для быстрого создания пакетов вы можете воспользоваться программой checkinstall. Он выполняет установку программы, наблюдает за изменениями и создает пакет deb или rpm.
$ apt-get install build-essential dh-make debhelper devscripts
$ wget http://nmap.org/dist/nmap-LAST.tar.bz2
$ tar xf nmap-LAST.tar.bz2
$ cd nmap-LAST
$ dh_make -s -e youremail@site.org -f ../nmap-LAST.tar.bz2
$ apt-get install libgtk2.0-dev flex bison libpcap0.8-dev \
libpcre3-dev binutils-dev python-all-dev
$ dpkg-buildpackage