mirror of
https://gitlab.com/alliedmaldives/ops/podmanbuilder.git
synced 2025-02-22 17:32:12 +00:00
118 lines
2.7 KiB
Bash
118 lines
2.7 KiB
Bash
#!/bin/bash
|
|
|
|
cd /root/
|
|
|
|
apt update
|
|
apt upgrade -y
|
|
apt-get install --no-install-recommends -y \
|
|
btrfs-progs \
|
|
crun \
|
|
git \
|
|
golang-go \
|
|
go-md2man \
|
|
iptables \
|
|
libassuan-dev \
|
|
libbtrfs-dev \
|
|
libc6-dev \
|
|
libdevmapper-dev \
|
|
libglib2.0-dev \
|
|
libgpgme-dev \
|
|
libgpg-error-dev \
|
|
libprotobuf-dev \
|
|
libprotobuf-c-dev \
|
|
libseccomp-dev \
|
|
libselinux1-dev \
|
|
libsystemd-dev \
|
|
pkg-config \
|
|
uidmap
|
|
|
|
apt install --no-install-recommends -y jq wget curl make ca-certificates
|
|
|
|
|
|
|
|
VERSION=$(curl -s https://api.github.com/repos/containers/podman/releases/latest | jq '.name' -r)
|
|
export VERSION
|
|
|
|
git clone https://github.com/containers/podman.git podman-$VERSION
|
|
cd podman-$VERSION
|
|
git checkout tags/$VERSION
|
|
|
|
make ENABLE_BUILDTAGS="systemd" binaries
|
|
|
|
# copy the binaries to mounted build folder and go back to root home
|
|
cp -vr bin/ ../build
|
|
cd /root/
|
|
|
|
# remove v in version name
|
|
NVERSION=$(echo $VERSION | sed s/v//)
|
|
|
|
## PREPARE to package into .deb
|
|
mkdir -p podman-deb/DEBIAN
|
|
cat <<EOF > podman-deb/DEBIAN/control
|
|
Package: podman
|
|
Version: $NVERSION
|
|
Depends: libgpgme11
|
|
Section: base
|
|
Priority: optional
|
|
Architecture: amd64
|
|
Maintainer: Shiham Abdul Rahman <shihaam@shihaam.me>
|
|
Description: Podman container engine
|
|
Podman is a daemonless container engine for developing, managing, and running OCI Containers on your Linux System.
|
|
|
|
EOF
|
|
|
|
# CNI plugins
|
|
mkdir -p podman-deb/etc/containers/
|
|
curl -L -o podman-deb/etc/containers/registries.conf https://src.fedoraproject.org/rpms/containers-common/raw/main/f/registries.conf
|
|
curl -L -o podman-deb/etc/containers/policy.json https://src.fedoraproject.org/rpms/containers-common/raw/main/f/default-policy.json
|
|
|
|
|
|
# Systemd service and socket files
|
|
mkdir -p podman-deb/usr/lib/systemd/system/
|
|
|
|
cat <<EOF > podman-deb/usr/lib/systemd/system/podman.service
|
|
[Unit]
|
|
Description=Podman API Service
|
|
Requires=podman.socket
|
|
After=podman.socket
|
|
Documentation=man:podman-system-service(1)
|
|
StartLimitIntervalSec=0
|
|
|
|
[Service]
|
|
Delegate=true
|
|
Type=exec
|
|
KillMode=process
|
|
Environment=LOGGING="--log-level=info"
|
|
ExecStart=/usr/bin/podman $LOGGING system service
|
|
|
|
[Install]
|
|
WantedBy=default.target
|
|
|
|
EOF
|
|
|
|
cat <<EOF > podman-deb/usr/lib/systemd/system/podman.socket
|
|
[Unit]
|
|
Description=Podman API Socket
|
|
Documentation=man:podman-system-service(1)
|
|
|
|
[Socket]
|
|
ListenStream=%t/podman/podman.sock
|
|
SocketMode=0660
|
|
|
|
[Install]
|
|
WantedBy=sockets.target
|
|
|
|
EOF
|
|
|
|
# Copy the binaries
|
|
mkdir -p podman-deb/usr/local/bin
|
|
cp -v build/bin/podman podman-deb/usr/local/bin/
|
|
cp -v build/bin/podman-remote podman-deb/usr/local/bin/
|
|
cp -v build/bin/quadlet podman-deb/usr/local/bin/
|
|
cp -v build/bin/rootlessport podman-deb/usr/local/bin/
|
|
# ofc the permission
|
|
chmod 755 podman-deb/usr/local/bin/*
|
|
|
|
# Finally build the .deb
|
|
dpkg-deb --build podman-deb build
|