Как создать метапакет, который автоматически устанавливает другие пакеты?

Я хотел бы иметь возможность создавать пакет, который не содержит сам код или программы, но вместо этого устанавливает другие пакеты, которые существуют в репозиториях, на компьютер, вроде как ubuntu-restricted-extras пакет делает?

1 ответ

Решение

Подобный метапакет может быть создан с помощью инструмента под названием 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

Другие вопросы по тегам