add configurable root dir

This commit is contained in:
zawz 2021-08-12 18:29:12 +02:00
parent 4951d01950
commit 995bf183bf
7 changed files with 30 additions and 23 deletions

View file

@ -14,28 +14,31 @@ virtual_config_path()
config_path="$(resolve_path "$config_path" "$(pwd)")"
config_file="$config_path/zpkg.conf"
# setup sudo prefix
unset sudo
if ! root_check ; then
which sudo >/dev/null 2>&1 || { echo "sudo not installed" && exit 11; }
sudo=sudo
fi
[ ! -d "$config_path" ] && { $sudo mkdir -p "$config_path" 2>/dev/null || exit $?; }
[ ! -f "$config_file" ] && echo "WARN: no config file '$config_file'" >&2
[ -f "$config_file" ] && . "$config_file"
[ -n "$ZPKG_SSH_ADDRESS" ] && SSH_ADDRESS=$ZPKG_SSH_ADDRESS
[ -n "$ZPKG_HTTP_ADDRESS" ] && HTTP_ADDRESS=$ZPKG_HTTP_ADDRESS
[ -n "$ZPKG_COMPRESSION" ] && COMPRESSION=$ZPKG_COMPRESSION
[ -n "$ZPKG_ALLOW_ROOT" ] && ALLOW_ROOT=$ZPKG_ALLOW_ROOT
[ -n "$ZPKG_UPDATE_REMOVE" ] && UPDATE_REMOVE=$ZPKG_UPDATE_REMOVE
SSH_ADDRESS=${ZPKG_SSH_ADDRESS-$SSH_ADDRESS}
HTTP_ADDRESS=${ZPKG_HTTP_ADDRESS-$HTTP_ADDRESS}
COMPRESSION=${ZPKG_COMPRESSION-$COMPRESSION}
ALLOW_ROOT=${ZPKG_ALLOW_ROOT-$ALLOW_ROOT}
UPDATE_REMOVE=${ZPKG_UPDATE_REMOVE-$UPDATE_REMOVE}
ROOT_PATH=${ZPKG_ROOT_PATH-$ROOT_PATH}
NOSUDO=${ZPKG_NOSUDO-$NOSUDO}
# resolve relative pkg_path
if [ -n "$ZPKG_PKG_PATH" ]
then PKG_PATH="$(resolve_path "$ZPKG_PKG_PATH" "$(pwd)")"
else PKG_PATH="$(resolve_path "$PKG_PATH" "$config_path")"
if [ -n "$ZPKG_PKG_PATH" ] ; then
PKG_PATH="$(resolve_path "$ZPKG_PKG_PATH" "$(pwd)")"
else
PKG_PATH="$(resolve_path "$PKG_PATH" "$config_path")"
fi
# setup sudo prefix
unset sudo
if ! root_check && [ -z "$NOSUDO" ] ; then
which sudo >/dev/null 2>&1 || { echo "sudo not installed" && exit 11; }
sudo=sudo
fi
root_check && [ -z "$opt_f" ] && [ "$ALLOW_ROOT" != "true" ] && echo "Cannot run as root" >&2 && exit 10

View file

@ -3,7 +3,7 @@
_OUTPUT=/dev/stdin
[ "$_ZPKG_SELF_UPGRADE" = "y" ] && _OUTPUT=/dev/null
config_path=/etc/zpkg
config_path=$ZPKG_ROOT_PATH/etc/zpkg
fname="$(basename "$0")"
ALLOW_ROOT=false
UPDATE_REMOVE=true

View file

@ -43,7 +43,7 @@ install_package()
(
umask a+rx
unpack "$1.tar.$extension" $2 || return $?
copy_files ROOT / $2 o+rx 2>/dev/null || return $?
copy_files ROOT "$ROOT_PATH/" $2 2>/dev/null || return $?
) || return $?
copy_files HOME "$HOME" 2>/dev/null
add_package_entry "$1" $2

View file

@ -1,7 +1,11 @@
#!/bin/sh
[ "$DEBUG" = true ] && set -x
# ordered requirements
%include util.sh env.sh print.sh options.sh config.sh
%include util.sh env.sh print.sh
%include options.sh
%include config.sh
# everything else
%include *.sh

View file

@ -22,7 +22,7 @@ remove_package()
echo "Removing $1"
list=$(cat "$archive" | $pcompress -dc 2>/dev/null | tar -tf - 2>/dev/null)
echo "$list" | grep "^ROOT/" | sed 's|^ROOT/||g' | tac | delete_files / $2
echo "$list" | grep "^ROOT/" | sed 's|^ROOT/||g' | tac | delete_files "$ROOT_PATH/" $2
echo "$list" | grep "^HOME/" | sed 's|^HOME/||g' | tac | delete_files "$HOME"
$2 rm "$archive" 2>/dev/null

View file

@ -25,10 +25,10 @@ upgrade_package()
unpack "$1.tar.$extension" || return $?
oldlist=$(cat "$PKG_PATH/$1.tar.$extension" | $pcompress -dc 2>/dev/null | tar -tf - 2>/dev/null | sort)
echo "$oldlist" | grep "^ROOT/" | to_delete - ROOT | sed 's|^ROOT/||g' | tac | delete_files / $2
echo "$oldlist" | grep "^ROOT/" | to_delete - ROOT | sed 's|^ROOT/||g' | tac | delete_files "$ROOT_PATH/" $2
echo "$oldlist" | grep "^HOME/" | to_delete - HOME | sed 's|^HOME/||g' | tac | delete_files "$HOME"
copy_files ROOT / $2 2>/dev/null
copy_files ROOT "$ROOT_PATH/" $2 2>/dev/null
copy_files HOME "$HOME" 2>/dev/null
$2 cp "$1.tar.$extension" "$PKG_PATH"
$2 chmod a+r "$PKG_PATH/$1.tar.$extension"
@ -47,5 +47,5 @@ do_self_update()
_tmpzpkg="$TMPDIR/zpkg_bin_$(random_string 5)"
# copy current file
cp "$0" "$_tmpzpkg" || return $?
exec sh -c '_ZPKG_SELF_UPGRADE=y "$1" -R install zpkg ; rm -f "$1"' sh "$_tmpzpkg"
exec sh -c '_ZPKG_SELF_UPGRADE=y "$1" -c "$2" -R install zpkg ; rm -f "$1"' sh "$_tmpzpkg" "$config_path"
}

View file

@ -58,7 +58,7 @@ is_installed()
# $1 = file
view_package_file() {
tree=$(cat "$1" | $pcompress -dc 2>/dev/null | tar -tf - 2>/dev/null) || exit $?
echo "$tree" | grep -E '^ROOT/|^HOME/' | sed "/\/$/d ; s|^ROOT/|/|g ; s|^HOME/|$HOME/|g" 2>/dev/null
echo "$tree" | grep -E '^ROOT/|^HOME/' | sed "/\/$/d ; s|^ROOT/|$ROOT_PATH/|g ; s|^HOME/|$HOME/|g" 2>/dev/null
}
# $1 = package name