Как создать файл DEB вручную?

Если бы экран и устройства ввода данных (клавиатура и мышь или сенсорная панель) заморозились, то первое место для запуска путем взгляда было бы в /var/log/Xorg.0.log (предполагающий, что Xorg работает на первом сервере дисплея).

Если бы это не приводит ни к каким непосредственным подсказкам, следующие журналы, которые проверят, были бы /var/log/messages.log и /var/log/dmesg.log.

Если Вы не можете найти что-нибудь в журналах, и замораживание происходит с любой частотой, Вам можно было бы рекомендовать проверить Вашу память с утилитой как memtest86 +.

47
29.01.2012, 12:51
8 ответов

Создание исходного пакета

Моя рекомендация состоит в том, чтобы сделать исходный пакет. Существенная для сборки установка, debhelper, горячекатаный - делает. Изменитесь на каталог, где файлы, которые Вы хотите установить, (имя каталога должно иметь форму $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, в особенности ch. 3 (формат двоичных пакетов), ch. 5 (управляют файлами), ch. 6 (сценарии установки) и приложение B (двоичное управление пакетом).

Вы удостоверяетесь, что Ваш пакет устанавливает ожидаемые файлы /usr/share/doc/copyright (содержащий лицензию содержания пакета, а также где найти последнюю версию пакета), и /usr/share/doc/changelog.Debian.gz (содержащий журнал изменений deb пакета). Вам не нужны они, если Вы только собираетесь использовать внутренний пакет, но лучше иметь их.

На Debian и производных

Если Вы имеете инструменты 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.

Преобразование двоичного пакета от другого формата

Если у Вас уже есть двоичный пакет от другого распределения, можно использовать чуждый для преобразования его.

57
27.01.2020, 19:34
  • 1
    IMO это - копия с моего anwser? Что Вы думаете? –  Gigamegs 31.01.2012, 03:51
  • 2
    Ответ предполагает, что OP знает, как использовать emacs. emacs действительно необходим здесь? Для редактирования журналов изменений я думаю, что можно использовать dch -i. –  Faheem Mitha 31.01.2012, 06:27
  • 3
    Что ar выполнение этого tar не? –  mmstick 20.06.2016, 20:00
  • 4
    @mmstick Это - другой формат. Я не знаю, почему разработчики deb формата приняли решение использовать площадь здесь. –  Gilles 'SO- stop being evil' 20.06.2016, 20:06

Прежде всего необходимо создать папку сборки и архив файлов: 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

10
27.01.2020, 19:34
  • 1
    О ar -r xxx.deb debian-binary control.tar.gz data.tar.gz могло стоить, чтобы подчеркнуть, что порядок важен: управление должно произойти перед данными. –  Hibou57 25.09.2017, 07:16
  • 2
    @Bytemain, вершина проголосовавшие взгляды ответа действительно частично на основе текста, но он добавляет детали к нему, и это лучше читаемый. последовательность мы можем скопировать/вставить, делает его особенно более солидным. –  mariotomo 02.03.2018, 21:50

Я делаю много пакетов, и сделать, полный не является тривиальным вопросом. На положительной ноте файлы и сценарии являются намного меньшим количеством работы. Можно создать такой пакет, очень просто, с инструментом, известным как debreate.

Debreate является действительно простой GUI, для того, чтобы просто создать простые пакеты DEB. Можно просто указать, какие файлы, куда они идут, и если/какой должен выполниться на установке/удалении сообщения/пред. Я раньше просто делал все мои пакеты стандартный путь, но после того, как я начал использовать этот инструмент, я только возвращусь при необходимости.

3
27.01.2020, 19:34

Посмотрите Wiki Debian на Упаковке, возможно equivs (см. ссылку), уже удовлетворяет Ваши требования.

Страница Википедии на deb формат файла также включает много полезных ссылок.

2
27.01.2020, 19:34
$ 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
-4
27.01.2020, 19:34

Разберитесь с этим с помощью 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 / .

Примечание : это было на squeeze - dpkg на wheezy теперь имеет --force-bad-version.

1
27.01.2020, 19:34

Для быстрой создания пакетов вы можете пользовательскую программу CheckInstAll. Это делает установку программы, изменений в часах - и создать его пакет DEB или RPM.

1
27.01.2020, 19:34

Вы можете использовать Alien для преобразования Slackware tgz в формат.deb. Пакеты Slackware безумно просты в том смысле, что они на самом деле не делают ничего большего, чем то, о чем просил OP, а именно: копируют некоторые файлы и запускают скрипт. Это позволит сэкономить на создании контрольного файла и так далее, потому что Alien сгенерирует его.

mkdir pkg
pushd pkg
mkdir -p usr/local/bin install
touch usr/local/bin/xxx   # <--- something to install
touch install/slack-desc   # <---- optional description
cp <<script>> install/doinst.sh  # <---- your post-install
tar zcvf../xxx-1-x86_64-1.tgz *
popd
alien --to-deb --scripts xxx-1-x86_64-1.tgz

Если вы не знакомы с форматом пакета Slackware, обратите внимание, что ваш установочный каталог в архиве не будет установлен в цель, и если вы хотите.deb, который делает обновить файлы в /install это, вероятно, не сработает!

0
04.12.2020, 16:44

Теги

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