Commit 85b41c7d by Kaarle Ritvanen Committed by Serge Hallyn

lxc-alpine: automatic repository selection

pick random server from mirror list use the latest stable release Signed-off-by: 's avatarKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> Signed-off-by: 's avatarSerge Hallyn <serge.hallyn@ubuntu.com>
parent 37cb98a2
...@@ -4,14 +4,33 @@ key_sha256sums="9c102bcc376af1498d549b77bdbfa815ae86faa1d2d82f040e616b18ef2df2d4 ...@@ -4,14 +4,33 @@ key_sha256sums="9c102bcc376af1498d549b77bdbfa815ae86faa1d2d82f040e616b18ef2df2d4
2adcf7ce224f476330b5360ca5edb92fd0bf91c92d83292ed028d7c4e26333ab alpine-devel@lists.alpinelinux.org-4d07755e.rsa.pub" 2adcf7ce224f476330b5360ca5edb92fd0bf91c92d83292ed028d7c4e26333ab alpine-devel@lists.alpinelinux.org-4d07755e.rsa.pub"
get_static_apk () { get_static_apk () {
wget="wget -q -O -"
pkglist=alpine-keys:apk-tools-static
auto_repo_dir=
if [ -z "$repository" ]; then
url=http://wiki.alpinelinux.org/cgi-bin/dl.cgi
echo -n "Determining the latest release... "
release=$($wget $url/.latest.$apk_arch.txt | \
cut -d " " -f 3 | cut -d / -f 1 | uniq)
if [ -z "$release" ]; then
echo failed
return 1
fi
echo $release
auto_repo_dir=$release/main
repository=$url/$auto_repo_dir
pkglist=$pkglist:alpine-mirrors
fi
rootfs="$1" rootfs="$1"
echo "Using static apk from $repository/$apk_arch" echo "Using static apk from $repository/$apk_arch"
wget="wget -q -O - $repository/$apk_arch" wget="$wget $repository/$apk_arch"
# parse APKINDEX to find the current versions # parse APKINDEX to find the current versions
static_pkgs=$($wget/APKINDEX.tar.gz | \ static_pkgs=$($wget/APKINDEX.tar.gz | \
tar -Oxz APKINDEX | \ tar -Oxz APKINDEX | \
awk -F: -v pkglist="alpine-keys:apk-tools-static" ' awk -F: -v pkglist=$pkglist '
BEGIN { split(pkglist,pkg) } BEGIN { split(pkglist,pkg) }
$0 != "" { f[$1] = $2 } $0 != "" { f[$1] = $2 }
$0 == "" { for (i in pkg) $0 == "" { for (i in pkg)
...@@ -41,6 +60,14 @@ get_static_apk () { ...@@ -41,6 +60,14 @@ get_static_apk () {
APK=$rootfs/sbin/apk.static APK=$rootfs/sbin/apk.static
openssl dgst -verify $rootfs/etc/apk/keys/$keyname \ openssl dgst -verify $rootfs/etc/apk/keys/$keyname \
-signature "$APK.SIGN.RSA.$keyname" "$APK" || return 1 -signature "$APK.SIGN.RSA.$keyname" "$APK" || return 1
if [ "$auto_repo_dir" ]; then
mirror_list=$rootfs/usr/share/alpine-mirrors/MIRRORS.txt
mirror_count=$(wc -l $mirror_list | cut -d " " -f 1)
repository=$(sed $(expr $RANDOM % $mirror_count + 1)\!d \
$mirror_list)$auto_repo_dir
echo "Selecting mirror $repository"
fi
} }
install_alpine() { install_alpine() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment