This repository hosts code, builds, and deploys a container that comes with software necessary for creating system packages.
Specifically, the container contains the following:
- FPM - used to build packages such as rpms, debs, OSX packages, etc
- rpmbuild - use to build rpm packages (used by FPM for it, too)
- dpkg-deb - used to create deb packages
- choco - used to create choco/nupkg packages
This section describes how to install Podman and pull container images.
The instructions in this section assume Brew is your package manager.
- Install Podman -
brew install podman
- Initialize a Podman
machine
, a qemu VM which runs Podman locally -podman machine init
- Start the
machine
that was downloaded and/or started in the last step -podman machine start
Linux (w/ numerous distros) and Windows install instructions can be found here
Images can be pulled using the podman pull
command. For example, the following command pulls manypacks
from one of the Docker repositories:
podman pull bsmirks/manypacks
After pulling a container, you can list it and some basic info like the container ID with:
podman image ls
Start a shell inside of the container with:
podman run -it <container_id> /bin/bash
Manypacks
utilizes FPM, dpkg-deb, and choco to allow for creating a few different kinds of packages. Along those lines, this section serves to list what the container can and can't do.
Can:
- Create rpms for
yum
andzypper
based operating systems - Create debs for
apt
based operating systems - Create
.nupkg
packages forchoco
based operationg systems (Windows) - Create OSX packages for MacOS
Can't:
- Sign your packages (this is being explored)
This section provides helpful links and information for the software included in the container.
dpkg-deb
is a Debian package archive (.deb) manipulation tool. It is included in the container in order to create debs for apt
based systems.
fpm
makes it easy and quick to build packages such as rpms, debs, OSX packages, etc.
- FPM tutorial on DigitalOcean
- RPM maintainer guide
choco
is a package manager for Windows systems and includes tooling for creating .nupkg
packages that you can install on Windows systems.
There are a few different tags available providing a couple of different options to assist in making the images as minimalistic as possible for different use cases. All of these run on Debian 10.
The tags below work for Docker registries as well as the GitHub Container registry, ghcr.io
if you so desire.
manypacks:latest
provides all of the tools listed abovemanypacks:choco
provides onlychoco
if just making choco/nupkg's is your goalmanypacks:no-choco
provides everything except forchoco
if you just want to create packages for Linux
Contributing synopsis:
- Make a fork of this repo
- Make your proposed changes in your fork
- Submit a PR to this repository, comparing your fork to the upstream
- Once a PR is merged, GitHub Actions will build the
manypacks
image and its tags to Docker registries and the GitHub Container Repository (ghcr.io)