diff --git a/server_deploy.sh b/server_deploy.sh index a2e7c32..2687e0a 100755 --- a/server_deploy.sh +++ b/server_deploy.sh @@ -23,7 +23,7 @@ ssh "$SSH_ADDRESS" mkdir -p "$PKG_PATH" || exit $? scp .config server_scripts/* "$SSH_ADDRESS":~/ || exit $? PKG=zpkg -DEST=/usr/local/bin +DEST=/usr/bin BASHDEST=/etc/bash_completion.d tmpdir="/tmp/zpkg$(random_string 5)" fullpath="$tmpdir/$PKG/ROOT" diff --git a/server_scripts/gen_install.sh b/server_scripts/gen_install.sh index 8138660..7b5ed4f 100755 --- a/server_scripts/gen_install.sh +++ b/server_scripts/gen_install.sh @@ -66,10 +66,13 @@ fi # Generate conf file $sudo sh -c "{ - echo SSH_ADDRESS=$SSH_ADDRESS - echo HTTP_ADDRESS=$HTTP_ADDRESS - echo COMPRESSION=$COMPRESSION - echo PKG_PATH=pkg + echo "# zpkg config file +SSH_ADDRESS=$SSH_ADDRESS +HTTP_ADDRESS=$HTTP_ADDRESS +COMPRESSION=$COMPRESSION +PKG_PATH=pkg" +ALLOW_ROOT=false +UPDATE_REMOVE=true } > zpkg.conf" # install config file @@ -89,7 +92,7 @@ mkdir -p "$tmpdir" || exit $? cat "zpkg.tar.$extension" | $pcompress -dc 2>/dev/null | tar -xf - || exit $? # install zpkg package - ROOT/usr/local/bin/zpkg -f install zpkg || exit $? + ROOT/usr/bin/zpkg -f install zpkg || exit $? ) # cleanup diff --git a/src/config.sh b/src/config.sh index 110bd86..eeef870 100644 --- a/src/config.sh +++ b/src/config.sh @@ -28,6 +28,7 @@ fi # resolve relative pkg_path PKG_PATH="$(resolve_path "$PKG_PATH" "$config_path")" +[ -z "$UPDATE_REMOVE" ] && UPDATE_REMOVE=true root_check && [ -z "$opt_f" ] && [ "$ALLOW_ROOT" != "true" ] && echo "Cannot run as root" >&2 && exit 10 diff --git a/src/main.sh b/src/main.sh index ac99712..cdeb93c 100644 --- a/src/main.sh +++ b/src/main.sh @@ -89,7 +89,7 @@ update) fetch_pkglist $sudo || exit 1 r_pkg=$(removed_packages) o_pkg=$(outdated_packages) - if [ -n "$r_pkg" ] + if [ -n "$r_pkg" ] && [ "$UPDATE_REMOVE" = "true" ] then echo "Packages to remove: "$r_pkg for I in $r_pkg diff --git a/src/print.sh b/src/print.sh index 5beaa73..172624a 100644 --- a/src/print.sh +++ b/src/print.sh @@ -30,7 +30,8 @@ Config (zpkg.conf): HTTP_ADDRESS HTTP address for downloading packages PKG_PATH Path to the local package database COMPRESSION Compression configuration, extension:binary:parallel_binary:options - ALLOW_ROOT Set to true to allow running as root without -f. Default: false" + ALLOW_ROOT Set to true to allow running as root without -f. Default: false + UPDATE_REMOVE Remove packages on update. Default: true" } error() { @@ -39,15 +40,18 @@ error() { # $1 = package name package_info() { - unset cleanup - status="not installed" - grep -q "^$1 " "$PKG_PATH/pkglist" 2>/dev/null || { echo "Package '$1' not found" && return 1; } - grep -q "^$1 " "$PKG_PATH/installed" 2>/dev/null && status=installed + # prepare tmpdir="/tmp/zpkg_$(random_string 5)" mkdir -p "$tmpdir" || return $? pwd="$(pwd)" - cd "$tmpdir" + + # get status + status="not installed" + grep -q "^$1 " "$PKG_PATH/pkglist" 2>/dev/null || { echo "Package '$1' not found" && return 1; } + grep -q "^$1 " "$PKG_PATH/installed" 2>/dev/null && status=installed + + # get and unpack if [ "$status" = "installed" ] && [ -f "$PKG_PATH/$1.tar.$extension" ] then pkg="$PKG_PATH/$1.tar.$extension" @@ -56,11 +60,11 @@ package_info() { pkg="$1.tar.$extension" fi unpack "$pkg" >/dev/null - deps=$(cat DEPS 2>/dev/null) + # extract values + deps=$(cat DEPS 2>/dev/null | tr -s ' \t\n' ' ') desc=$(cat DESC 2>/dev/null) csize=$(stat -c '%s' "$pkg" | numfmt --to=iec-i --suffix=B --padding 6) isize=$(du -sb ROOT HOME 2>/dev/null | awk '{print $1}' | paste -sd+ | bc | numfmt --to=iec-i --suffix=B --padding 6) - [ -n "$cleanup" ] && { cd "$pwd"; rm -rd "$tmpdir"; } cd "$pwd" rm -rf "$tmpdir"