Skip to content

Usage

Getting started

Add repository

Our repository is currently split into five components: desktop, dev, devops, secops, terminal.

curl -sSL https://raw.githubusercontent.com/upciti/wakemeops/main/assets/install_repository | sudo bash
curl -sSL https://raw.githubusercontent.com/upciti/wakemeops/main/assets/install_repository | sudo bash -s terminal
See script content1
install_repository
#!/usr/bin/env bash

set -e

if ! which gpg; then
  apt-get update -yq && apt-get install -yq --no-install-recommends gnupg2
fi

cat << EOF | gpg --dearmor > /etc/apt/trusted.gpg.d/wakemeops-keyring.gpg
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
3XB4C2E=
=K/j8
-----END PGP PUBLIC KEY BLOCK-----
EOF

cat <<EOF > /etc/apt/sources.list.d/wakemeops.list
deb http://deb.wakemeops.com/wakemeops/ stable ${@-"dev devops secops terminal desktop"}
EOF

apt-get update -yq

Once the repository is added to your system, update APT cache with:

sudo apt-get update

Install packages

You're good to go, the list of packages available on wakemeops is here.

To get you started, here are a few terminal goodies that you will probably enjoy:

sudo apt install xsv mergestat gomplate yq curlie

Basic usage

Repository priority

Dependending on your use case, you may want to lower the priority of the wakemeops repository to give packages from your distribution precedence over the ones from wakemeops. In other words, APT will always prefer a package from your distribution even if its version is lower than the one hosted by wakemeops.

curl -sSL https://raw.githubusercontent.com/upciti/wakemeops/main/assets/set_repository_priority | sudo bash -s 100
curl -sSL https://raw.githubusercontent.com/upciti/wakemeops/main/assets/set_repository_priority | sudo bash -s 900
See script content1
set_repository_priority
#!/usr/bin/env bash

set -e

mkdir -p /etc/apt/preferences.d/

cat <<EOF > /etc/apt/preferences.d/01wakemeops
Package: *
Pin: origin deb.wakemeops.com
Pin-Priority: ${@-"100"}
EOF

Info

On Debian/Ubuntu, the default priority for repositories is 500. apt-cache policy will show you the list of installed repositories alongside their priority.

List package versions

Use apt-cache madison to list available versions for a given package:

apt-cache madison kubectl
   kubectl | 1.23.1-1~ops2deb | http://deb.wakemeops.com stable/devops amd64 Packages
   kubectl | 1.23.0-1~ops2deb | http://deb.wakemeops.com stable/devops amd64 Packages
   kubectl | 1.22.4-2~ops2deb | http://deb.wakemeops.com stable/devops amd64 Packages
   kubectl | 1.22.3-1~ops2deb | http://deb.wakemeops.com stable/devops amd64 Packages
   kubectl | 1.22.2-1~ops2deb | http://deb.wakemeops.com stable/devops amd64 Packages

Pin down package versions

APT lets you select the version you wish to install with the following syntax:

sudo apt install <package name>=<version>

Using wildcards is supported:

sudo apt install "kubectl=1.22*"
sudo apt install "kubectl=1*"
sudo apt install "kubectl=1.23.1*"

Warning

We only keep the latest revision of each package, beware that pinning down the exact package version in a CI pipeline may eventually break. In a CI pipeline, you should always use a wildcard permissive enough to let APT use the latest package revision. The revision is the number after the last hyphen in a package version (example: 1.23.1-1~ops2deb). The revision is not part of the application version, it basically is an iteration of the Debian package. In Debian distributions reasons to bump the revision of a package include: packaging errors, backports of patches and security patches...

In short:

  • sudo apt-get install -yq kubectl=1.23.1*
  • sudo apt-get install -yq kubectl=1.23.1-1~ops2deb

Docker images

Image tags

We provide docker images based on Debian and Ubuntu that come pre-configured with WakeMeOps repository:

Info

WakeMeOps images are rebuilt every day from this Dockerfile to keep track of the latest changes - such as security fixes - in upstream images.

Write Dockerfiles

All docker images include a thin wrapper around apt-get install named install_packages. It adds retries and does the usual apt-get update followed by rm -r /var/lib/apt/lists /var/cache/apt/archives. This handy script comes from the bitnami minideb image.

See script content1
install_packages
# taken from https://github.com/bitnami/minideb/blob/master/mkimage
#!/bin/sh
set -e
set -u
export DEBIAN_FRONTEND=noninteractive
n=0
max=2
until [ $n -gt $max ]; do
    set +e
    (
      apt-get update -qq &&
      apt-get install -y --no-install-recommends "$@"
    )
    CODE=$?
    set -e
    if [ $CODE -eq 0 ]; then
        break
    fi
    if [ $n -eq $max ]; then
        exit $CODE
    fi
    echo "apt failed, retrying"
    n=$(($n + 1))
done
rm -r /var/lib/apt/lists /var/cache/apt/archives

You can leverage this script to write very short dockerfiles for your CI:

FROM wakemeops/debian:bullseye

RUN install_packages \
    helm=3.7.2* \
    kustomize=4.4.1* \
    kubectl=1.23.1*

USER 1001
FROM wakemeops/debian:latest

RUN install_packages helm kustomize kubectl

  1. The script content is inserted using the markdown extension pymdownx.snippets when the documentationis built in our CI. The actual content may differ.