#!/bin/sh # # Copyright (C) 2015, 2016 Etersoft # Copyright (C) 2015, 2016 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/>. # __epm_orphan_altrpm() { docmd "apt-cache list-extras" } epm_autoorphans() { [ -z "$pkg_filenames" ] || fatal "No arguments are allowed here" case $PMTYPE in apt-rpm) # ALT Linux only assure_exists /etc/buildreqs/files/ignore.d/apt-scripts apt-scripts echo "We will try remove all installed packages which are missed in repositories" warning "Use with caution!" local PKGLIST=$(__epm_orphan_altrpm \ | sed -e "s/\.32bit//g" \ | grep -v -- "^eepm$" \ | grep -v -- "^kernel") docmd epm remove $PKGLIST ;; apt-dpkg|aptitude-dpkg) assure_exists deborphan showcmd deborphan a= deborphan | docmd epm remove ;; #aura) # sudocmd aura -Oj # ;; yum-rpm) showcmd package-cleanup --orphans local PKGLIST=$(package-cleanup --orphans | grep -v "^eepm$") docmd epm remove $PKGLIST ;; dnf-rpm) # TODO: dnf list extras showcmd package-cleanup --orphans local PKGLIST=$(package-cleanup --orphans | grep -v "^eepm$") docmd epm remove $PKGLIST ;; urpm-rpm) showcmd urpmq --auto-orphans sudocmd urpme --auto-orphans ;; #emerge) # sudocmd emerge --depclean # assure_exists revdep-rebuild # sudocmd revdep-rebuild # ;; pacman) sudocmd pacman -Qdtq | sudocmd pacman -Rs - ;; #slackpkg) # clean-system removes non official packages #sudocmd slackpkg clean-system # ;; #guix) # sudocmd guix gc # ;; #pkgng) # sudocmd pkg autoremove # ;; zypper-rpm) # https://www.linux.org.ru/forum/desktop/11931830 assure_exists zypper zypper 1.9.2 # For zypper < 1.9.2: zypper se -si | grep 'System Packages' sudocmd zypper packages --orphaned # FIXME: x86_64/i586 are duplicated local PKGLIST=$(zypper packages --orphaned | tail -n +5 | cut -d \| -f 3 | sort -u) sudocmd zypper remove --clean-deps $PKGLIST ;; *) fatal "Have no suitable command for $PMTYPE" ;; esac }