#!/bin/sh # # Copyright (C) 2012,2014,2016 Etersoft # Copyright (C) 2012,2014,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/>. # load_helper epm-check_updated_repo __epm_add_alt_apt_downgrade_preferences() { [ -r /etc/apt/preferences ] && fatal "/etc/apt/preferences already exists" cat <<EOF | $SUDO tee /etc/apt/preferences # main repo Package: * Pin: release c=classic Pin-Priority: 1001 # overload with addon repo Package: * Pin: release c=addon Pin-Priority: 1101 EOF } # See https://wiki.debian.org/ru/AptPreferences __epm_add_deb_apt_downgrade_preferences() { [ -r /etc/apt/preferences ] && fatal "/etc/apt/preferences already exists" info "Running with /etc/apt/preferences:" cat <<EOF | $SUDO tee /etc/apt/preferences Package: * Pin: release a=stable Pin-Priority: 1001 Package: * Pin: release a=testing Pin-Priority: 900 Package: * Pin: release a=unstable Pin-Priority: 800 EOF } __epm_remove_apt_downgrade_preferences() { sudocmd rm -f /etc/apt/preferences } epm_downgrade() { local CMD # it is useful for first time running update_repo_if_needed info "Running command for downgrade packages" case $PMTYPE in apt-rpm) __epm_add_alt_apt_downgrade_preferences || return if [ -n "$pkg_filenames" ] ; then sudocmd apt-get install $pkg_filenames else sudocmd apt-get dist-upgrade fi __epm_remove_apt_downgrade_preferences ;; apt-dpkg) __epm_add_deb_apt_downgrade_preferences || return if [ -n "$pkg_filenames" ] ; then sudocmd apt-get install $pkg_filenames else sudocmd apt-get dist-upgrade fi __epm_remove_apt_downgrade_preferences ;; yum-rpm) # can do update repobase automagically if [ -n "$pkg_filenames" ] ; then sudocmd yum downgrade $pkg_filenames else sudocmd yum distro-sync fi ;; dnf-rpm) if [ -n "$pkg_filenames" ] ; then sudocmd dnf downgrade $pkg_filenames else sudocmd dnf distro-sync fi ;; urpm-rpm) assure_exists urpm-reposync urpm-tools sudocmd urpm-reposync -v ;; *) fatal "Have no suitable command for $PMTYPE" ;; esac }