#!/bin/sh # # Copyright (C) 2012-2020 Etersoft # Copyright (C) 2012-2020 Vitaly Lipatov <lav@etersoft.ru> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # load_helper epm-sh-altlinux load_helper epm-query __fast_hack_for_filter_out_installed_rpm() { LC_ALL=C xargs -n1 rpm -q 2>&1 | grep 'is not installed' | sed -e 's|^.*package \(.*\) is not installed.*|\1|g' } # pass only uninstalled packages filter_out_installed_packages() { [ -z "$skip_installed" ] && cat && return case $PMTYPE in yum-rpm|dnf-rpm) if [ "$DISTRARCH" = "x86_64" ] && [ "$DISTRNAME" != "ROSA" ] ; then # shellcheck disable=SC2013 for i in $(cat) ; do is_installed "$(__print_with_arch_suffix $i .x86_64)" && continue is_installed "$(__print_with_arch_suffix $i .noarch)" && continue echo $i done else __fast_hack_for_filter_out_installed_rpm fi ;; *-rpm) __fast_hack_for_filter_out_installed_rpm ;; # dpkg -l lists some non ii status (un, etc) #"deb") # LANG=C LC_ALL=C xargs -n1 dpkg -l 2>&1 | grep -i 'no packages found matching' | # sed -e 's|\.\+$||g' -e 's|^.*[Nn]o packages found matching \(.*\)|\1|g' # ;; *) # shellcheck disable=SC2013 for i in $(cat) ; do is_installed $i || echo $i done ;; esac | sed -e "s|rpm-build-altlinux-compat[^ ]*||g" | filter_strip_spaces } get_only_installed_packages() { local installlist="$*" estrlist exclude "$(echo "$installlist" | (skip_installed='yes' filter_out_installed_packages))" "$installlist" } __epm_print_warning_for_nonalt_packages() { [ -n "$dryrun" ] && return 0 # only ALT [ "$BASEDISTRNAME" = "alt" ] || return 0 # download only [ -n "$save_only$download_only" ] && return 0 load_helper epm-status local i for i in $* ; do if epm_status_repacked "$i" ; then warning '%%% You are trying install package $i repacked from third-party software source. Use it at your own risk. %%%' continue fi if epm_status_thirdparty "$i" ; then warning '%%% You are trying install package $i from third-party software source. Use it at your own risk. %%%' continue fi if ! epm_status_original "$i" ; then warning '%%% You are trying install package $i not from official $DISTRNAME/$DISTRVERSION repository. Use it at your own risk. %%%' continue fi done } # Args: package names. Set noscripts for outside packages. __epm_check_vendor() { # don't check vendor if there are forced script options [ -n "$scripts$noscripts" ] && return [ -n "$dryrun" ] && return 0 # only ALT [ "$BASEDISTRNAME" = "alt" ] || return 0 load_helper epm-status local i for i in $* ; do bi="$(basename $i)" if ! epm_status_validate "$i" ; then # it is missed package probably (package remove case) if is_installed "$i" ; then warning 'Can'\''t get any info for $i package. Scripts are DISABLED for package $bi. Use --scripts if you need run scripts from such packages.' fi noscripts="--noscripts" continue fi local vendor vendor="$(epm print field Vendor for "$i")" if [ -z "$vendor" ] ; then warning 'Can'\''t get info about vendor for $i package. Scripts are DISABLED for package $bi. Use --scripts if you need run scripts from such packages.' noscripts="--noscripts" continue fi epm_status_original "$i" && continue epm_status_repacked "$i" && continue if __epm_vendor_ok_scripts "$vendor" ; then warning 'Scripts are ENABLED for package $bi from outside vendor $vendor (this vendor is listed in $CONFIGDIR/vendorallowscripts.list). Use --noscripts if you need disable scripts in such packages.' continue fi if __epm_package_ok_scripts "$i" ; then warning 'Scripts are ENABLED for package $bi from outside vendor $vendor (the package is listed in $CONFIGDIR/pkgallowscripts.list). Use --noscripts if you need disable scripts in such packages.' continue fi warning 'Scripts are DISABLED for package $bi from outside vendor $vendor. Use --scripts if you need run scripts from such packages.' noscripts="--noscripts" done }