diff --git a/packed/epm.sh b/packed/epm.sh index 040848ced067bf03f50a2d15c195b6f2ff3702b4..9f9b63a1a4609f4981b2695c688605c03bb49724 100755 --- a/packed/epm.sh +++ b/packed/epm.sh @@ -1005,6 +1005,12 @@ case $PMTYPE in | grep -v -- "^distro_info$" \ | grep -v -- "^kernel") + local play_installed="$(epm play --list-installed-packages)" + if [ -n "$play_installed" ] ; then + echo "Skip follow packages installed via epm play: $play_installed" + fi + PKGLIST="$(estrlist exclude "$play_installed" "$PKGLIST")" + if [ -z "$dryrun" ] && [ -n "$PKGLIST" ] ; then showcmd epm remove $dryrun $force $PKGLIST confirm_info "We will remove packages above." @@ -1637,6 +1643,22 @@ check_pkg_integrity() esac } +__epm_check_all_pkgs() +{ + local j cl + #local play_installed="$(epm play --list-installed-packages)" + epm qa --short | xargs -n20 | while read cl ; do + #cl="$(estrlist exclude "$play_installed" "$i")" + __epm_check_installed_pkg $cl && continue + # check each package + for j in $cl ; do + __epm_check_installed_pkg $j && continue + # TODO: check play installed too + epm --auto reinstall $j </dev/null || exit + done + done +} + __epm_check_installed_pkg() { case $PMTYPE in @@ -1661,6 +1683,11 @@ esac epm_checkpkg() { + if [ "$1" = "--all" ] ; then + __epm_check_all_pkgs + return + fi + if [ -n "$pkg_names" ] ; then # TODO: если есть / или расширение, это отсутствующий файл info "Suggest $pkg_names are name(s) of installed package(s)" @@ -1693,7 +1720,7 @@ epm_checkpkg() # File bin/epm-checksystem: -epm_checksystem_ALTLinux() +__alt_fix_triggers() { local TDIR=$(mktemp -d) assure_exists time @@ -1708,6 +1735,12 @@ epm_checksystem_ALTLinux() wc -l /var/lib/rpm/files-awaiting-filetriggers } +epm_checksystem_ALTLinux() +{ + fatal "Not yet implemented" + #__alt_fix_triggers +} + epm_checksystem() { @@ -3764,9 +3797,14 @@ docmd $CMD | __fo_pfn epm_vardir=/var/lib/eepm +__check_installed_app() +{ + [ -s $epm_vardir/installed-app ] || return 1 + grep -q -- "^$1\$" $epm_vardir/installed-app +} + __save_installed_app() { - return 0 # stub [ -d "$epm_vardir" ] || return 0 __check_installed_app "$1" && return 0 echo "$1" | sudorun tee -a $epm_vardir/installed-app >/dev/null @@ -3774,7 +3812,6 @@ __save_installed_app() __remove_installed_app() { - return 0 # stub [ -s $epm_vardir/installed-app ] || return 0 local i for i in $* ; do @@ -3783,6 +3820,13 @@ __remove_installed_app() return 0 } + +__is_app_installed() +{ + __run_script "$1" --installed "$2" + return +} + __run_script() { local script="$psdir/$1.sh" @@ -3797,14 +3841,6 @@ __get_app_package() __run_script "$1" --package-name "$2" 2>/dev/null } -__check_installed_app() -{ - __run_script "$1" --installed "$2" - return - - [ -s $epm_vardir/installed-app ] || return 1 - grep -q -- "^$1\$" $epm_vardir/installed-app -} __list_all_app() @@ -3850,6 +3886,18 @@ __list_installed_app() cat $epm_vardir/installed-app 2>/dev/null } +__list_installed_packages() +{ + local i + local tapt=$(mktemp) || fatal + __list_app_packages_table >$tapt + # get all installed packages and convert it to a apps list + for i in $(epm query --short $(cat $tapt | sed -e 's| .*$||') 2>/dev/null) ; do + grep "^$i " $tapt | cut -f1 -d" " + done + rm -f $tapt +} + __get_app_description() { @@ -3957,7 +4005,6 @@ fi if [ "$1" = "--remove" ] || [ "$1" = "remove" ] ; then shift - #__check_installed_app "$1" || warning "$1 is not installed" prescription="$1" shift if __check_play_script "$prescription" ; then @@ -3974,6 +4021,8 @@ fi if [ "$1" = "--update" ] ; then shift + local CMDUPDATE="--update" + [ -n "$force" ] && CMDUPDATE="--run" if [ "$1" = "all" ] ; then shift RES=0 @@ -3986,44 +4035,48 @@ if [ "$1" = "--update" ] ; then RES=1 continue fi - __epm_play_run $prescription --update "$@" || RES=$? + __epm_play_run $prescription $CMDUPDATE "$@" || RES=$? done exit $RES fi if [ -z "$1" ] ; then fatal "run --update with 'all' or a project name" fi - __check_installed_app "$1" || fatal "$1 is not installed" + __is_app_installed "$1" || fatal "$1 is not installed" prescription="$1" shift - __epm_play_run $prescription --update "$@" + __epm_play_run $prescription $CMDUPDATE "$@" exit fi if [ "$1" = "--installed" ] || [ "$1" = "installed" ] ; then shift - __check_installed_app "$1" "$2" + __is_app_installed "$1" "$2" #[ -n "$quiet" ] && exit exit fi case "$1" in + # internal options "--installed-version"|"--package-name"|"--product-alternatives") __run_script "$2" "$1" "$3" exit ;; + "--list-installed-packages") + __list_installed_packages + exit + ;; + "--list"|"--list-installed"|"list"|"list-installed") + __epm_play_list_installed + exit + ;; + # internal options "--help"|"help") __run_script "$2" "$1" "$3" exit ;; esac - -if [ "$1" = "--list" ] || [ "$1" = "--list-installed" ] || [ "$1" = "list" ] || [ "$1" = "list-installed" ] ; then - __epm_play_list_installed - exit -fi - if [ "$1" = "--list-all" ] || [ "$1" = "list-all" ] || [ -z "$*" ] ; then [ -n "$short" ] || [ -n "$quiet" ] || echo "Available applications:" __epm_play_list $psdir @@ -4044,7 +4097,7 @@ prescription="$1" shift if __check_play_script "$prescription" ; then - #__check_installed_app "$prescription" && info "$$prescription is already installed (use --remove to remove)" && exit 1 + #__is_app_installed "$prescription" && info "$$prescription is already installed (use --remove to remove)" && exit 1 __epm_play_run "$prescription" --run "$@" && __save_installed_app "$prescription" || fatal "There was some error during install the application." else psdir=$prsdir @@ -9429,6 +9482,7 @@ fi case "$VENDOR_ID" in "alt"|"altlinux") + DISTRIB_RELEASE=$(echo "$DISTRIB_RELEASE" | sed -e "s/\.[0-9].*//g") case "$DISTRIB_ID" in "ALTServer"|"ALTSPWorkstation"|"Sisyphus") ;; @@ -9789,16 +9843,16 @@ get_core_count() local DIST_OS="$(get_base_os_name)" case "$DIST_OS" in macos|freebsd) - detected=$(sysctl hw.ncpu | awk '{print $2}') + detected=$(a= sysctl hw.ncpu | awk '{print $2}') ;; linux) detected=$(grep -c "^processor" /proc/cpuinfo) ;; solaris) - detected=$(prtconf | grep -c 'cpu[^s]') + detected=$(a= prtconf | grep -c 'cpu[^s]') ;; aix) - detected=$(lsdev -Cc processor -S A | wc -l) + detected=$(a= lsdev -Cc processor -S A | wc -l) ;; # *) # fatal "Unsupported OS $DIST_OS" @@ -9837,7 +9891,8 @@ get_virt() echo "xen" && return fi - if lscpu | grep "Hypervisor vendor:" | grep -q "KVM" ; then + # use util-linux + if LANG=C a= lscpu | grep "Hypervisor vendor:" | grep -q "KVM" ; then echo "kvm" && return fi @@ -10982,7 +11037,7 @@ Examples: print_version() { - echo "EPM package manager version 3.21.8 https://wiki.etersoft.ru/Epm" + echo "EPM package manager version 3.22.0 https://wiki.etersoft.ru/Epm" echo "Running on $($DISTRVENDOR -e) ('$PMTYPE' package manager uses '$PKGFORMAT' package format)" echo "Copyright (c) Etersoft 2012-2021" echo "This program may be freely redistributed under the terms of the GNU AGPLv3." @@ -10992,7 +11047,7 @@ print_version() Usage="Usage: epm [options] <command> [package name(s), package files]..." Descr="epm - EPM package manager" -EPMVERSION=3.21.8 +EPMVERSION=3.22.0 verbose=$EPM_VERBOSE quiet= nodeps= diff --git a/packed/serv.sh b/packed/serv.sh index 8101f7f07832472aec26a4337e1f4d9363befd82..70372081b35aa5974241a3fd61dab5b9c78ea7a3 100755 --- a/packed/serv.sh +++ b/packed/serv.sh @@ -1596,6 +1596,7 @@ fi case "$VENDOR_ID" in "alt"|"altlinux") + DISTRIB_RELEASE=$(echo "$DISTRIB_RELEASE" | sed -e "s/\.[0-9].*//g") case "$DISTRIB_ID" in "ALTServer"|"ALTSPWorkstation"|"Sisyphus") ;; @@ -1956,16 +1957,16 @@ get_core_count() local DIST_OS="$(get_base_os_name)" case "$DIST_OS" in macos|freebsd) - detected=$(sysctl hw.ncpu | awk '{print $2}') + detected=$(a= sysctl hw.ncpu | awk '{print $2}') ;; linux) detected=$(grep -c "^processor" /proc/cpuinfo) ;; solaris) - detected=$(prtconf | grep -c 'cpu[^s]') + detected=$(a= prtconf | grep -c 'cpu[^s]') ;; aix) - detected=$(lsdev -Cc processor -S A | wc -l) + detected=$(a= lsdev -Cc processor -S A | wc -l) ;; # *) # fatal "Unsupported OS $DIST_OS" @@ -2004,7 +2005,8 @@ get_virt() echo "xen" && return fi - if lscpu | grep "Hypervisor vendor:" | grep -q "KVM" ; then + # use util-linux + if LANG=C a= lscpu | grep "Hypervisor vendor:" | grep -q "KVM" ; then echo "kvm" && return fi @@ -2260,7 +2262,7 @@ print_version() local on_text="(host system)" local virt="$($DISTRVENDOR -i)" [ "$virt" = "(unknown)" ] || [ "$virt" = "(host system)" ] || on_text="(under $virt)" - echo "Service manager version 3.21.8 https://wiki.etersoft.ru/Epm" + echo "Service manager version 3.22.0 https://wiki.etersoft.ru/Epm" echo "Running on $($DISTRVENDOR -e) $on_text with $SERVICETYPE" echo "Copyright (c) Etersoft 2012-2021" echo "This program may be freely redistributed under the terms of the GNU AGPLv3."