A meta-package like this can be created with a tool called equivs
which will create a package with just dependency information.
First, create a directory:
mkdir my-metapackage
cd my-metapackage/
Now run the program:
equivs-control ns-control
It will create a file called ns-control
, open this file with your text editor.
The control file that you generate should have its Depends
or Recommends
lines modified to depend on the packages that you want installed:
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!
(Just an example, you should include more information)
And finally, build the package by running
equivs-build ns-control
Your package is located at my-metapackage/my-metapackage_1.0_all.deb
.
If you wish to also create a source package, the --full
option can be passed to equivs-build
, e.g. equivs-build --full ns-control
. This will use debuild & also create .dsc & .tar.gz files.
To create a source .changes file that you can upload to a PPA, extract & build the source package with
dpkg-source -x my-metapackage_1.0.dsc
cd my-metapackage-1.0
debuild -S
If the Maintainer that you set in ns-control matches your GPG key, it should build & sign the my-metapackage_1.0_source.changes file for you to dput to your PPA
Best Answer
For where you're actually providing the dependency, I'd use
checkinstall
to do the installation.checkinstall
basically replacesmake install
and generates a proper .deb package and then installs that. Not only does that allow you to remove or upgrade the package in a better way (when the time comes), it satisfies dependencies from other applications.The alternative is writing a little dummy package that doesn't provide any files but claims to provide whatever you want. The easiest way I can see is using an application called
equivs
:There's a third route that is easy but the potentially harmful: just install it from the standard repos and then replace its files with the ones you generate. Lock the version of the package so it won't get upgraded. This has the scope to go wrong so only do it if you can't
checkinstall
or otherwise fake the package first.