From fb22f8a250f5881aab78e296071dfdefba028442 Mon Sep 17 00:00:00 2001 From: Endial Fang Date: Fri, 4 Aug 2023 12:02:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=B7=A5=E5=85=B7=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- prebuilds/usr/sbin/download_pkg | 97 ++++++++++++++++---------------- prebuilds/usr/sbin/install_pkg | 42 +++++++------- prebuilds/usr/sbin/select_source | 1 + 3 files changed, 70 insertions(+), 70 deletions(-) diff --git a/prebuilds/usr/sbin/download_pkg b/prebuilds/usr/sbin/download_pkg index 9738ee5..af47846 100755 --- a/prebuilds/usr/sbin/download_pkg +++ b/prebuilds/usr/sbin/download_pkg @@ -1,35 +1,34 @@ #!/bin/bash -# Ver: 1.0 by Endial Fang (endial@126.com) +# Ver: 1.1 by Endial Fang (endial@126.com) # # shell 执行参数,分别为 -e(命令执行错误则退出脚本) -u(变量未定义则报错) -x(打印实际待执行的命令行) set -eux -. /usr/local/scripts/liblog.sh print_usage() { - LOG "Usage: download_pkg \"\" [OPTIONS]" - LOG "" - LOG "Download and install Third-Part packages" - LOG "" - LOG "Commands:" - LOG " download Download a package." - LOG " install Download and install a package." - LOG " unpack Download and unpack a package." - LOG "" - LOG "Options:" - LOG " -g, --checkpgp Package release bucket." - LOG " -s, --checksum SHA256 verification checksum." - LOG " -h, --help Show this help message and exit." - LOG "" - LOG "PACKAGE-NAME: Name with extern name" - LOG "URLS: String with URL list" - LOG "" - LOG "Examples:" - LOG " - Unpack package" - LOG " \$ download_pkg unpack redis-5.0.8.tar.gz \"http://download.redis.io/releases\"" - LOG "" - LOG " - Verify and Install package" - LOG " \$ download_pkg install redis-5.0.8.tar.gz \"http://download.redis.io/releases\" -s 42cf86a114d2a451b898fcda96acd4d01062a7dbaaad2801d9164a36f898f596" - LOG "" + echo "Usage: download_pkg \"\" [OPTIONS]" + echo "" + echo "Download and install Third-Part packages" + echo "" + echo "Commands:" + echo " download Download a package." + echo " install Download and install a package." + echo " unpack Download and unpack a package." + echo "" + echo "Options:" + echo " -g, --checkpgp Package release bucket." + echo " -s, --checksum SHA256 verification checksum." + echo " -h, --help Show this help message and exit." + echo "" + echo "PACKAGE-NAME: Name with extern name" + echo "URLS: String with URL list" + echo "" + echo "Examples:" + echo " - Unpack package" + echo " \$ download_pkg unpack redis-5.0.8.tar.gz \"http://download.redis.io/releases\"" + echo "" + echo " - Verify and Install package" + echo " \$ download_pkg install redis-5.0.8.tar.gz \"http://download.redis.io/releases\" -s 42cf86a114d2a451b898fcda96acd4d01062a7dbaaad2801d9164a36f898f596" + echo "" } check_pgp() { @@ -40,10 +39,10 @@ check_pgp() { GNUPGHOME="$(mktemp -d)" if which gpg >/dev/null 2>&1; then for key in $keys; do - gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "${key}" || - gpg --batch --keyserver pgp.mit.edu --recv-keys "${key}" || - gpg --batch --keyserver keys.gnupg.net --recv-keys "${key}" || - gpg --batch --keyserver keyserver.pgp.com --recv-keys "${key}"; + gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "${key}" || + gpg --batch --keyserver pgp.mit.edu --recv-keys "${key}" || + gpg --batch --keyserver keys.gnupg.net --recv-keys "${key}" || + gpg --batch --keyserver keyserver.pgp.com --recv-keys "${key}"; done gpg --batch --verify "$name_asc" "$name" command -v gpgconf > /dev/null && gpgconf --kill all @@ -109,28 +108,28 @@ PACKAGE_URLS=$3 cd $INSTALL_ROOT -LOG_I "Downloading $PACKAGE package" +echo "Downloading $PACKAGE package" for url in $PACKAGE_URLS; do - LOG_D "Try $url/$PACKAGE" + echo "Try $url/$PACKAGE" if wget -O "$CACHE_ROOT/$PACKAGE" "$url/$PACKAGE" && [ -s "$CACHE_ROOT/$PACKAGE" ]; then - if [ -n "${PACKAGE_KEYS:-}" ]; then - wget -O "$CACHE_ROOT/$PACKAGE.asc" "$url/$PACKAGE.asc" || wget -O "$CACHE_ROOT/$PACKAGE.asc" "$url/$PACKAGE.sign" || : - if [ ! -e "$CACHE_ROOT/$PACKAGE.asc" ]; then - exit 1 - fi + if [ -n "${PACKAGE_KEYS:-}" ]; then + wget -O "$CACHE_ROOT/$PACKAGE.asc" "$url/$PACKAGE.asc" || wget -O "$CACHE_ROOT/$PACKAGE.asc" "$url/$PACKAGE.sign" || : + if [ ! -e "$CACHE_ROOT/$PACKAGE.asc" ]; then + exit 1 fi - break + fi + break fi done if [ -n "${PACKAGE_SHA256:-}" ]; then - LOG_I "Verifying package integrity" - echo "$PACKAGE_SHA256 *$CACHE_ROOT/$PACKAGE" | sha256sum -c - + echo "Verifying package integrity" + echo "$PACKAGE_SHA256 *$CACHE_ROOT/$PACKAGE" | sha256sum -c - fi if [ -e "$CACHE_ROOT/$PACKAGE.asc" ]; then - LOG_I "Verifying package with PGP" - check_pgp "$CACHE_ROOT/$PACKAGE.asc" "$CACHE_ROOT/$PACKAGE" "$PACKAGE_KEYS" + echo "Verifying package with PGP" + check_pgp "$CACHE_ROOT/$PACKAGE.asc" "$CACHE_ROOT/$PACKAGE" "$PACKAGE_KEYS" fi # If the tarball has too many files, it can trigger a bug @@ -142,23 +141,23 @@ fi # 安装或解压软件 case "$1" in download) - LOG_I "Download success: $CACHE_ROOT/$PACKAGE" + echo "Download success: $CACHE_ROOT/$PACKAGE" ;; install) - LOG_I "Installing $PACKAGE" - cp $CACHE_ROOT/$PACKAGE /usr/local/bin/ + echo "Installing $PACKAGE" + cp $CACHE_ROOT/$PACKAGE /usr/local/sbin/ ;; unpack) if ! tar -taf $CACHE_ROOT/$PACKAGE >/dev/null 2>&1; then - LOG_E "Invalid or corrupt '$PACKAGE' package." + echo "Invalid or corrupt '$PACKAGE' package." exit 1 fi - LOG_I "Unpacking $PACKAGE to $CACHE_ROOT" + echo "Unpacking $PACKAGE to $CACHE_ROOT" cd $CACHE_ROOT if which bsdtar >/dev/null 2>&1; then - bsdtar -xf $CACHE_ROOT/$PACKAGE + bsdtar -xf $CACHE_ROOT/$PACKAGE else - tar --no-same-owner -xaf $CACHE_ROOT/$PACKAGE + tar --no-same-owner -xaf $CACHE_ROOT/$PACKAGE fi ;; esac diff --git a/prebuilds/usr/sbin/install_pkg b/prebuilds/usr/sbin/install_pkg index 85971e1..f29f099 100755 --- a/prebuilds/usr/sbin/install_pkg +++ b/prebuilds/usr/sbin/install_pkg @@ -25,34 +25,34 @@ fi case "$1" in -h|--help) - print_usage - exit 0 - ;; + print_usage + exit 0 + ;; esac retry=0 max=2 until [ $retry -gt $max ]; do - set +e - ( - export DEBIAN_FRONTEND=noninteractive && - apt-get update && - apt-get upgrade -y && - apt-get install -y --no-install-recommends "$@" - ) - CODE=$? - set -e - if [ $CODE -eq 0 ]; then - break - fi - if [ $retry -eq $max ]; then - exit $CODE - fi - echo "apt failed, retrying" - retry=$(($retry + 1)) + set +e + ( + export DEBIAN_FRONTEND=noninteractive && + apt-get update && + apt-get upgrade -y && + apt-get install -y --no-install-recommends "$@" + ) + CODE=$? + set -e + if [ $CODE -eq 0 ]; then + break + fi + if [ $retry -eq $max ]; then + exit $CODE + fi + echo "apt failed, retrying" + retry=$(($retry + 1)) done apt-get purge -y --auto-remove apt-get autoclean -y -rm -r /var/lib/apt/lists /var/cache/apt/archives || : +rm -rf /var/lib/apt/lists /var/cache/apt/archives || : diff --git a/prebuilds/usr/sbin/select_source b/prebuilds/usr/sbin/select_source index ff4ac52..3fe07f8 100755 --- a/prebuilds/usr/sbin/select_source +++ b/prebuilds/usr/sbin/select_source @@ -3,4 +3,5 @@ # # shell 执行参数,分别为 -e(命令执行错误则退出脚本) -u(变量未定义则报错) -x(打印实际待执行的命令行) set -eux + cp /etc/apt/sources/${1:-default}.sources /etc/apt/sources.list.d/debian.sources