README
======

Process Description
-------------------

The idea for this project was built upon the concept created for the
link:https://crux.nu/Main/PortGuidelines[Crux Ports] system.

Pkgimg extends upon this process by enabling the combination of port builds
into a single port output directory. The intent of this is to build filesystem
tarball overlays that contain everything needed to run a given application on
any Linux system (though other operating systems are not explicitly precluded).

The process looks something like...

* pkgimg.sh <manifest.txt>
  * Create composite fakeroot
  * foreach ${port} in ${manifest}
    * pkgmk.sh ${port}
    * rsync ${port} fakeroot to composite fakeroot
    * Cleanup port-specific fakeroot
* Create tarball from composite fakeroot

At its top, the final tarball should contain a directory structure that roughly
matches the top level of a Linux filesystem (eg: usr, lib, etc, etc) or the
system the tarball will be deployed to. Underneath each of these directories
will be each port's installed files.

With a composite port tarball built, it can be transferred to a number of
systems and subsequently installed by simply extracting the contents of the
tarball at the top of each of the destination system's root filesystem.


Why?
----

The author has spent a sizeable amount of time in what is often referred to as
the "DevOps" industry. He was very unsatisfied by speed, reliability, ease of
auditing, ease of reproduction, and ease of backup provided by the typical set
of DevOps deployment tools.

Portimg was created to remedy this by producing composite immutable software
images for the purpose of easily, quickly, and consistently deploying and
backing out deployments to servers. While this process may not meet every need
of flexibility, it is very reliable and very simple.

