Як створити файл DEB вручну?


46

Я хочу створити файл DEB вручну. Я хотів би просто надати папку, яка містить дані для встановлення, та сценарій, який слід виконати після встановлення.

Чи можливо це?


Не дуже хороша відповідь ви вибираєте?
Gigamegs

@David, насправді я зробив це з "dpkg-deb", це набагато простіше, тому я вибрав Gilles, перерахувавши файли в папці пакунків, дайте мені чітке уявлення про файл, який потрібно розмістити там. Тому я думаю, що його відповідь краща ..
ромашка

Я також перерахував усі файли в пакеті.
Gigamegs

11
@David Я маю на увазі, стверджувати, що його відповідь є похідною - це одне, але "не дуже хороша відповідь"? Відповідь Жиля - відмінна; не має значення, чи була ваша відповідь першою, його набагато повніше. І немає нічого поганого в тому, щоб прийняти існуючу відповідь і розширити її; це гарна річ
Майкл Мрозек

Відповіді:


57

Створення вихідного пакету

Моя рекомендація - зробити вихідний пакет. Установка збірки замінних , debhelper , дк-грим . Перейдіть до каталогу, де є файли, які ви хочете встановити (ім'я каталогу має бути такої форми $PACKAGE-$VERSION, наприклад myapp-4.2-1для вашої першої спроби упаковки Myapp V4.2), і запустіть dh_make --createorig. Дайте відповіді на запитання. Debhelper створить основну інфраструктуру, необхідну для складання пакету, генеруючи файли у підкаталозі, який називається debian, як деякими обов'язковими файлами, так і шаблонами для необов'язкових файлів. Можливо, вам доведеться змінити деякі з цих файлів:

  • Редагуйте, debian/rulesщоб створити те, що потрібно для створення та встановлення файлів у потрібному місці. Якщо вам потрібно просто скопіювати деякі файли, а не збирати речі, просто відредагуйте файл, debian/installщоб вказати, які саме файли потрібно встановити, де.
  • Редагуйте, debian/copyrightщоб додати інформацію про ліцензію вашого пакета та інформацію про те, де можна отримати останню версію (якщо це стосується).
  • Відредагуйте, debian/changelogщоб видалити посилання на ІТП (це актуально лише якщо ви працюєте над проектом Debian). Перейменувати debian/postinst.exв debian/postinstі додати свої команди після установки там. Якщо ви згодом оновите пакет, запустіть, debchange -iщоб додати запис змін або редагуйте файл у Emacs (із встановленим dpkg-dev-el ).

Запустіть, dpkg-buildpackage -rfakeroot -us -ucщоб скласти .debпакунок (видаліть, -us -ucякщо ви хочете підписати пакет своїм PGP-ключем).

Оформлення двійкового пакету безпосередньо

Якщо ви вирішили скласти бінарний пакет безпосередньо, не будуючи його з вихідного пакету, що не дуже просто, оскільки не так багато інструментів для полегшення процесу, вам знадобиться кілька основних ознайомлень з форматом деб-пакетів. Це описано в Посібнику з політики Debian , зокрема, гл. 3 (формат бінарних пакетів) , гол. 5 (файли управління) , гол. 6 (сценарії встановлення) та додаток B (маніпулювання бінарним пакетом) .

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

Про 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.

Перетворення двійкового пакету з іншого формату

Якщо у вас вже є двійковий пакет з іншого дистрибутива, ви можете використовувати чужорідний для його перетворення.


3
ІМО, це копія з мого ковбаса? Що ти думаєш?
Gigamegs

1
Відповідь передбачає, що ОП знає, як використовувати emacs. Чи дійсно тут потрібні emacs? Для редагування журналів змін я думаю, що це можна використовувати dch -i.
Faheem Mitha

Що arробиш, що tarні?
mmstick

@mmstick Це інший формат. Я не знаю, чому дизайнери деб-формату вирішили використовувати тут ар.
Жиль "ТАК - перестань бути злим"

1
Якщо ви хочете змінити ім'я та адресу електронної пошти , що dh_make --createorigвикористовує, що вам потрібно export DEBEMAIL="me@example.com"і export DEBFULLNAME="Firstname Lastname"заздалегідь.
Райан

10

Спочатку потрібно створити папку збірки та архів своїх файлів: 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


1
З цього приводу ar -r xxx.deb debian-binary control.tar.gz data.tar.gzварто наголосити, що важливо порядок: контроль повинен надходити до даних.
Hibou57

@Bytemain, відповідь, що голосує вгорі, справді частково базується на вашому тексті, але додає до нього деталі, і це краще читається. послідовність, яку ми можемо копіювати / вставляти, робить це особливо красивішим.
mariotomo

3

Я роблю багато пакетів, і робити повний - це не дрібниця. З позитивної уваги, файли та сценарії працюють набагато менше. Ви можете створити такий пакет дуже просто за допомогою інструменту, відомого як повторне створення .

Debreate - це дійсно простий графічний інтерфейс для простого створення простих пакетів DEB. Ви можете просто вказати, які файли, куди вони йдуть, і якщо / що слід виконати після публікації / попередньої установки / видалення. Раніше я робив всі свої пакунки стандартним способом, але після того, як я почав користуватися цим інструментом, я повернуся лише тоді, коли це буде потрібно.



1

З цим зіткнувся із 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-версія зараз.


1

Для швидкого створення пакетів можна користувачеві перевірити програму. Він робить інсталяцію програми, спостерігає за змінами - і створює пакет deb або rpm для неї.


Це здається чудовим варіантом для відстеження пакунків, які ви повинні встановити з джерела. Чи можете ви запропонувати більше деталей? Наприклад, під час встановлення ви можете змінювати посилання, видаляти файли, редагувати конфігураційні файли, додавати демони і т. Д. ... наскільки студенти перевіряють і відміняють ці зміни? Чи можете ви легко змінити його вихід, щоб додати скрипти до prerm та postrm?
AatG

подивіться на wiki.debian.org/CheckInstall Якщо ви хочете змінити речі під час встановлення - найпростіший спосіб - це змінити Makefile, щоб змінити розділ встановлення. prerm / postrm - я не знайшов способу змінити його. Це просто для невеликих програм, щоб дозволити просту видалення.
undefine

-4
$ 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.