#!/bin/sh # # Copyright (C) 2012 Etersoft # Copyright (C) 2012 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/>. # # Try remove with low level removing epm_remove_low() { [ -z "$1" ] && return case $PMTYPE in apt-rpm|yum-rpm|zypper-rpm|urpm-rpm|dnf-rpm) sudocmd rpm -ev $nodeps $@ return ;; apt-dpkg) sudocmd dpkg -P $@ return ;; pkg_add) sudocmd pkg_delete -r $@ return ;; emerge) sudocmd emerge --unmerge $@ return ;; slackpkg) sudocmd /sbin/removepkg $@ return ;; esac return 1 } epm_remove_names() { [ -z "$1" ] && return case $PMTYPE in apt-rpm|apt-dpkg) sudocmd apt-get remove --purge $@ return ;; deepsolver-rpm) sudocmd ds-remove $@ return ;; urpm-rpm) sudocmd urpme $@ return ;; pkg_add) # without dependencies sudocmd pkg_delete $@ return ;; emerge) #sudocmd emerge --unmerge $@ sudocmd emerge -aC $@ return ;; pacman) sudocmd pacman -R $@ return ;; yum-rpm) sudocmd yum remove $@ return ;; dnf-rpm) sudocmd dnf remove $@ return ;; zypper-rpm) sudocmd zypper remove $@ return ;; mpkg) sudocmd mpkg remove $@ return ;; npackd) docmd npackdcl remove --package=$@ return ;; chocolatey) docmd chocolatey uninstall $@ return ;; slackpkg) sudocmd /usr/sbin/slackpkg remove $@ return ;; *) fatal "Do not known command for $PMTYPE" ;; esac } # TODO epm_remove_nonint() { case $PMTYPE in apt-rpm|apt-dpkg) sudocmd apt-get -y --force-yes remove --purge $@ return ;; urpm-rpm) sudocmd urpme --auto $@ return ;; pacman) sudocmd pacman -R --noconfirm $@ return ;; yum-rpm) sudocmd yum -y remove $@ return ;; zypper-rpm) sudocmd zypper --non-interactive remove $@ return ;; slackpkg) sudocmd /usr/sbin/slackpkg -batch=on -default_answer=yes remove $@ return ;; esac return 5 } epm_print_remove_command() { case $PMTYPE in apt-rpm|yum-rpm|zypper-rpm|urpm-rpm|dnf-rpm) echo "rpm -ev $nodeps $@" ;; apt-dpkg) echo "dpkg -P $@" ;; pkg_add) echo "pkg_delete -r $@" ;; emerge) echo "emerge --unmerge $@" ;; slackpkg) echo "/sbin/removepkg $@" ;; *) fatal "Do not known appropriate remove command for $PMTYPE" ;; esac } epm_remove() { if [ -n "$show_command_only" ] ; then epm_print_remove_command $pkg_filenames return fi [ -n "$pkg_files" ] && fatal "FIXME: remove by package file is not supported yet" [ -n "$pkg_filenames" ] || fatal "Run remove without args" epm_remove_low $pkg_filenames && return if [ -n "$non_interactive" ] ; then epm_remove_nonint $pkg_filenames local RET=$? # if not separate command, use usual command [ "$RET" = "5" ] || return $RET fi epm_remove_names $pkg_filenames }