#!/bin/sh # # Copyright (C) 2009, 2012, 2013, 2014, 2016, 2018 Etersoft # Copyright (C) 2009, 2012, 2013, 2014, 2016, 2018 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/>. # # changed since rpm 4.0.4 __rpm_allows_nosignature() { a= rpm --help | grep -q -- "--nosignature" } check_pkg_integrity() { local PKG="$1" local RET local NOSIGNATURE case $(get_package_type $PKG) in rpm) assure_exists rpm __rpm_allows_nosignature && NOSIGNATURE="--nosignature" || NOSIGNATURE="--nogpg" docmd rpm --checksig $NOSIGNATURE $PKG ;; deb) assure_exists dpkg # FIXME: debsums -ca package ? docmd dpkg --contents $PKG >/dev/null && echo "Package $PKG is correct." ;; exe) file $PKG | grep -q "executable for MS Windows" ;; msi) # TODO: add to patool via cabextract assure_exists cabextract #file $PKG | grep -q "Microsoft Office Document" docmd cabextract -t $PKG ;; ebuild) true ;; *) assure_exists erc docmd erc test "$PKG" && return ;; esac } __epm_check_installed_pkg() { case $PMTYPE in *-rpm) docmd rpm -V $@ ;; *-dpkg) assure_exists debsums docmd debsums $@ ;; emerge) assure_exists equery docmd equery check $@ ;; *) fatal "Have no suitable command for $PMTYPE" ;; esac } epm_checkpkg() { if [ -n "$pkg_names" ] ; then # TODO: если есть / или расширение, это отсутствующий файл info "Suggest $pkg_names are name(s) of installed package(s)" __epm_check_installed_pkg $pkg_names return fi # if possible, it will put pkg_urls into pkg_files or pkg_names if [ -n "$pkg_urls" ] ; then load_helper epm-download __handle_pkg_urls_to_checking fi [ -n "$pkg_files" ] || fatal "Checkpkg: filename(s) is missed" local RETVAL=0 local pkg for pkg in $pkg_files ; do check_pkg_integrity $pkg || RETVAL=1 done # TODO: reinvent [ -n "$to_remove_pkg_files" ] && rm -fv $to_remove_pkg_files [ -n "$to_remove_pkg_files" ] && rmdir -v $(dirname $to_remove_pkg_files | head -n1) 2>/dev/null #fatal "Broken package $pkg" return $RETVAL }