It is possible, but you'll likely run in several issues. First, each package has it's own pre- and post-installation scripts and dependencies in the control file. Even if you make a package provide the contained packages using the Provides
field, future upgrades may ruin your God package:
- You install your God package which provides a lot packages
- One of the packages are being updated, like
libpango1.0-0
- If you upgrade that package, your God package will be removed. If there are any dependencies on it, apt-get has an unresolvable conflict.
So, it's better not to create a God package, but install each package separately. If you need to install software offline, see How can I install software or packages without Internet (offline)?
How to create a God package (not recommended):
- Create a temporary directory, e.g. "~/godpackage" and
cd
into it
- Extract each .deb file using
dpkg -x filename.deb .
- Extract the control, postrm, ..., files using
dpkg --control filename.deb tmpdeb
. A new directory will be created, named tmpdeb
. Adjust the control files like changing the name to avoid conflicts later. When done, move / merge the tmpdeb directory with the DEBIAN directory (create if needed). Repeat it for each deb file
- Go away from the directory:
cd ..
- Create the new debfile from
~/godpackage
and store the newly created .deb file in the current directory: dpkg-deb --build ~/godpackage .
ldconfig
in their postinst script, so that can easily be merged. It gets more difficult if a post-installation script depends on a configured package. Finally, it makes debugging much harder, if one action in the {pre,post}{rm,inst} scripts fail, it'll quit or lead to unexpected behavior. – Lekensteyn Aug 29 '11 at 09:57