Benutzer-Werkzeuge

Webseiten-Werkzeuge


knowledge_base:linux:apt-repo

Dies ist eine alte Version des Dokuments!


Host an apt repo

Big thanks to https://earthly.dev/blog/creating-and-hosting-your-own-deb-packages-and-apt-repo/

Live system at pkg.julian-lemmerich.de/deb

sudo apt-get install -y dpkg-dev gpg

Start at Step 2, i already have built .deb packages

Basically:

~ is root of webserver, like pkg.julian-lemmerich.de

This Folder (~/deb/pool/main/) contains all the packages. Create subfolder for the packages for easier management. Like ./i/ical-relay/

Create Packages file

dpkg-scanpackages --arch amd64 pool/ > dists/stable/main/binary-amd64/Packages
cat dists/stable/main/binary-amd64/Packages | gzip -9 > dists/stable/main/binary-amd64/Packages.gz

Create release file with this script

generate_release.sh
#!/bin/sh
set -e
 
do_hash() {
    HASH_NAME=$1
    HASH_CMD=$2
    echo "${HASH_NAME}:"
    for f in $(find -type f); do
        f=$(echo $f | cut -c3-) # remove ./ prefix
        if [ "$f" = "Release" ]; then
            continue
        fi
        echo " $(${HASH_CMD} ${f}  | cut -d" " -f1) $(wc -c $f)"
    done
}
 
cat << EOF
Origin: Example Repository
Label: Example
Suite: stable
Codename: stable
Version: 1.0
Architectures: amd64 arm64 arm7
Components: main
Description: An example software repository
Date: $(date -Ru)
EOF
do_hash "MD5Sum" "md5sum"
do_hash "SHA1" "sha1sum"
do_hash "SHA256" "sha256sum"
cd ~/dists/stable
generate_release.sh > Release

I think the last two steps have to be repeated after every release.

Install repo

echo "deb [arch=amd64] http://pkg.julian-lemmerich.de/deb stable main" | tee /etc/apt/sources.list.d/jm-lemmi.list
apt-get update --allow-insecure-repositories
apt-get install ical-relay
/app/www/public/data/attic/knowledge_base/linux/apt-repo.1679086212.txt.gz · Zuletzt geändert: 2023/03/17 21:50 von julian.lemmerich