Last active
January 26, 2017 18:42
-
-
Save gertvdijk/e7ff8e4fe8687ba39a5d0051b6ba0c14 to your computer and use it in GitHub Desktop.
Create rkt package for Debian/Ubuntu using checkinstall
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Based on https://github.com/coreos/rkt/blob/v1.15.0/scripts/install-rkt.sh | |
# | |
# Pre-requirement: install the packages: | |
# - ca-certificates | |
# - curl | |
# - gnupg2 | |
# - bash-completion | |
# - checkinstall | |
# - wget | |
# | |
# Suggestion: sudo apt-get install -y --no-install-recommends ca-certificates curl gnupg2 bash-completion checkinstall wget | |
# | |
# Then run this script as a normal user. In the final step, checkinstall will create the package in the location as shown in the output. Install as follows: | |
# sudo dpkg -i /path/to/the.deb | |
set -e | |
set -o pipefail | |
set -x | |
cd $(mktemp -d) | |
version="1.15.0" | |
export DEBIAN_FRONTEND=noninteractive | |
curl -sSL https://coreos.com/dist/pubkeys/app-signing-pubkey.gpg | gpg2 --import - | |
key=$(gpg2 --with-colons --keyid-format LONG -k [email protected] | egrep ^pub | cut -d ':' -f5) | |
wget --progress=bar:force https://github.com/coreos/rkt/releases/download/v"${version}"/rkt-v"${version}".tar.gz | |
wget --progress=bar:force https://github.com/coreos/rkt/releases/download/v"${version}"/rkt-v"${version}".tar.gz.asc | |
gpg2 --trusted-key "${key}" --verify-files *.asc | |
tar xvzf rkt-v"${version}".tar.gz | |
cat <<EOF >install-pak | |
#!/bin/bash | |
# abort/fail on any error | |
set -e | |
# fix mkdir issues with checkinstall and fstrans | |
for dir in /usr/lib/rkt/stage1-images/\\ | |
/usr/share/man/man1/\\ | |
/usr/share/bash-completion/completions/\\ | |
/usr/lib/tmpfiles.d/\\ | |
/usr/lib/systemd/system/ | |
do | |
mkdir -p \$dir 2>/dev/null || : | |
done | |
for flavor in fly coreos kvm; do | |
install -Dm644 rkt-v${version}/stage1-\${flavor}.aci /usr/lib/rkt/stage1-images/stage1-\${flavor}.aci | |
done | |
install -Dm755 rkt-v${version}/rkt /usr/bin/rkt | |
for f in rkt-v${version}/manpages/*; do | |
install -Dm644 "\${f}" "/usr/share/man/man1/\$(basename \$f)" | |
done | |
install -Dm644 rkt-v${version}/bash_completion/rkt.bash /usr/share/bash-completion/completions/rkt | |
install -Dm644 rkt-v${version}/init/systemd/tmpfiles.d/rkt.conf /usr/lib/tmpfiles.d/rkt.conf | |
for unit in rkt-gc.{timer,service} rkt-metadata.{socket,service}; do | |
install -Dm644 rkt-v${version}/init/systemd/\$unit /usr/lib/systemd/system/\$unit | |
done | |
EOF | |
chmod +x install-pak | |
cat <<EOF >preinstall-pak | |
#!/bin/sh | |
groupadd --force --system rkt-admin | |
groupadd --force --system rkt | |
EOF | |
chmod +x preinstall-pak | |
cp rkt-v"${version}"/scripts/setup-data-dir.sh postinstall-pak | |
chmod +x postinstall-pak | |
cat <<EOF >>postinstall-pak | |
systemctl daemon-reload | |
systemd-tmpfiles --create /usr/lib/tmpfiles.d/rkt.conf | |
EOF | |
checkinstall -y --pkgname=rkt --pkgversion="${version}" --install=no --fstrans=yes ./install-pak |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment