Commit 3a3ebe0b authored by Anton Midyukov's avatar Anton Midyukov

repo: add the ability to select a repository mirror (default http/alt)

Default changed from yandex to alt due to: https://bugzilla.altlinux.org/show_bug.cgi?id=41588#c1
parent 31afa367
......@@ -6,3 +6,11 @@
addons, updates или иных по мере необходимости.
Результат -- каталог ALTLinux/base/ для копирования в образ.
Дополнительно обрабатываемые переменные:
* REPO
** позволяет выбрать и включить зеркало репозитория
** не влияет ни на что, если вызывается цель use/repo/main
** значение: http/alt (по умолчанию) либо протокол/зеркало
** см. тж. /etc/apt/sources.list.d/, проверьте наличие нужного!
use/repo:
@$(call add_feature)
@$(call add,STAGE1_PACKAGES,gnupg)
@$(call try,REPO,rsync/alt)
@$(call xport,ROOTFS_MAIN)
@$(call xport,REPO)
use/repo/main:: sub/main use/repo; @:
......
#!/bin/sh
# enable online repos if possible, just quit if list is absent
repo_source='/etc/apt/sources.list.d/yandex.list'
# enable online repos if not use/repo/main
[ -z "$GLOBAL_ROOTFS_MAIN" ] || exit 0
[ -s "$repo_source" ] || exit 0
[ -n "$GLOBAL_REPO" ] || exit 0
PROTO="${GLOBAL_REPO%/*}" # http, ftp, rsync
case "$PROTO" in
http|ftp|rsync)
;;
*)
echo "Error: protocol $PROTO not supported" >&2
exit 1
;;
esac
MIRROR="${GLOBAL_REPO#*/}" # alt, heanet, kiev, yandex, ...
if [ -z "$MIRROR" ]; then
echo "Error: variable MIRROR is not set!!!" >&2
echo "Set REPO variable in the format: PROTO/MIRROR" >&2
echo "Example: http/yandex" >&2
exit 1
fi
repo_source="/etc/apt/sources.list.d/$MIRROR.list"
if [ ! -s "$repo_source" ]; then
echo "Error: $repo_source is not exist" >&2
exit 1
fi
# regexps from alterator-pkg (via installer-feature-online-repo)
prefix_re="[[:space:]]*rpm[[:space:]]\+\([^[:space:]]\+[[:space:]]\+\)\?"
host_re="http:\/\/\([^[:space:]]\+\)[[:space:]]\+"
host_re="${PROTO:-http}:\/\/\([^[:space:]]\+\)[[:space:]]\+"
updates_re="${prefix_re}${host_re}\([^[:space:]]\+\/\)\?"
sed -i "s/^#\($updates_re\)/\1/" "$repo_source"
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