From 7c7da49545d6c5a052849ce3409ebc6d5994cd5c Mon Sep 17 00:00:00 2001 From: Vitaly Lipatov <lav@etersoft.ru> Date: Wed, 24 Feb 2016 16:14:56 +0300 Subject: [PATCH] fix downgrade for LINUX@Etersoft, Debian, Ubuntu, add support for downgrade one or a few packages --- bin/epm-downgrade | 54 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/bin/epm-downgrade b/bin/epm-downgrade index 36f91223..8de7c11d 100644 --- a/bin/epm-downgrade +++ b/bin/epm-downgrade @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright (C) 2012,2014 Etersoft -# Copyright (C) 2012,2014 Vitaly Lipatov <lav@etersoft.ru> +# 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 @@ -19,13 +19,39 @@ load_helper epm-check_updated_repo -__epm_add_apt_downgrade_preferences() +__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=$1 +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 } @@ -45,21 +71,29 @@ epm_downgrade() case $PMTYPE in apt-rpm) - __epm_add_apt_downgrade_preferences classic || return - sudocmd apt-get dist-upgrade + __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_apt_downgrade_preferences testing || return - sudocmd apt-get dist-upgrade + __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 - sudocmd yum downgrade $pkg_filename + sudocmd yum downgrade $pkg_filenames ;; dnf-rpm) - sudocmd dnf downgrade $pkg_filename + sudocmd dnf downgrade $pkg_filenames ;; urpm-rpm) assure_exists urpm-reposync urpm-tools -- 2.24.1