Skip to content

Instantly share code, notes, and snippets.

@kuoruan
Last active January 7, 2020 08:25
Show Gist options
  • Save kuoruan/7b804379eeb600893119aa8fd1c2613a to your computer and use it in GitHub Desktop.
Save kuoruan/7b804379eeb600893119aa8fd1c2613a to your computer and use it in GitHub Desktop.
OpenWrt Custom OPKG Repository

opkg-make-index

#!/bin/sh

set -e

pkg_dir=$1

if [ -z "$pkg_dir" ] || [ ! -d "$pkg_dir" ]; then
        echo "Usage: opkg-make-index <package_directory>" >&2
        exit 1
fi

ipk_files="$(find $pkg_dir -name '*.ipk' | sort)"

if [ -n "$ipk_files" ] ; then
        for pkg in $ipk_files ; do
                pkg_name="$(basename $pkg)"
                name="$(echo $pkg_name | cut -d'_' -f1)"

                if [ "$name" = "kernel" ] || [ "$name" = "libc" ] ; then
                        continue
                fi

                echo "Generating index for package $pkg" >&2

                file_size="$(stat -L -c%s $pkg)"
                sha256sum="$(sha256sum $pkg | cut -d' ' -f1)"

                tar -xzOf "$pkg" ./control.tar.gz | \
                        tar -xzOf - ./control | \
                        sed "s/^Description:/Filename: ${pkg_name}\nSize: ${file_size}\nSHA256sum: ${sha256sum}\nDescription:/"
                echo
        done
else
        echo
fi

Make index

opkg-make-index.sh . 2>&1 > Packages.manifest
grep -vE '^(Maintainer|LicenseFiles|Source|SourceName|Require)' Packages.manifest > Packages
gzip -9nc Packages > Packages.gz

Sign Packages index

  • Generate a new keypair
usign -G -s privite.key -p public.key -c "Comment for key"
  • Sign Packages file
usign -S -m Packages -s private.key
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment