Як створити метапакет, який автоматично встановлює інші пакети?


54

Мені б хотілося створити пакет, який не містить коду чи програм сам, а натомість встановлює на комп'ютер інші пакети, які існують у сховищах, як би це ubuntu-restricted-extrasне було?

Відповіді:


47

Метапакет, подібний до цього, може бути створений за допомогою інструменту, equivs який називається, що створить пакет із просто інформацією про залежність.

Спочатку створіть каталог:

mkdir my-metapackage
cd my-metapackage/

Тепер запустіть програму:

equivs-control ns-control

Він створить файл, який називається ns-control, відкриє цей файл у своєму текстовому редакторі. У створеному вами контрольному файлі повинні бути змінені його Dependsабо Recommendsрядки, що залежать від пакунків, які ви хочете встановити:

Section: misc
Priority: optional
Standards-Version: 3.9.1

Package: my-metapackage
Version: 1.0   
Depends: openssh-server, gedit
Description: This package installes an ssh server and a text editor
 The Long description of this package ends with a newline!

(Просто приклад, ви повинні включити більше інформації)

І нарешті, складіть пакунок, запустивши

equivs-build ns-control

Ваш пакунок знаходиться за адресою my-metapackage/my-metapackage_1.0_all.deb.

Якщо ви хочете , щоб також створити пакет джерела, то --fullпараметр може бути переданий equivs-build, наприклад equivs-build --full ns-control. Це використовуватиме debuild & також створювати .dsc & .tar.gz файли.

Щоб створити вихідний .changes файл, який ви можете завантажити в PPA, витягнути і скласти вихідний пакет за допомогою

dpkg-source -x my-metapackage_1.0.dsc
cd my-metapackage-1.0
debuild -S

Якщо Maintainer, який ви встановили в ns-control, відповідає вашому ключу GPG, він повинен створити та підписати файл my-metapackage_1.0_source.changes, щоб перейти до вашого PPA.


Велике спасибі Я, швидше за все, перевіряю це пізніше, але поки що інструкції спрацювали. :)
Thomas Ward

2
Це прекрасно працює!
Стефано Палацо

Дякую за відповідь, ajmitch, але саме тому, що я можу зазначити, що якщо у вас є ~/.devscriptsфайл і спеціально визначити інший ключ GPG, який слід використовувати у файлі devscripts, він перекриє процес dpkg / debuild і матиме його використовуйте специфічний ключ GPG, вказаний в .devscripts. Як і примітний момент останнього речення у вашій відповіді.
Thomas Ward

Я помітив, що розміщення пакетів Depends:робить встановлення хорошим, якщо і лише якщо вони є; він не встановлює їх, якщо вони не в моїй машині. Для їх встановлення я використовував Providesзамість цього, і це працює як шарм. Дивіться мій код (щойно змінив його): github.com/palladius/debian-packages/blob/master/…
Рікардо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.