#!/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/>. # load_helper epm-query __repofix_check_vendor() { local i for i in /etc/apt/vendors.list.d/*.list; do [ -e "$i" ] || continue grep -q "^simple-key \"$1\"" $i && return done return 1 } __fix_apt_sources_list() { local SUBST_ALT_RULE='s!^(.*)[/ ](ALTLinux|LINUX\@Etersoft)[/ ](Sisyphus|p8[/ ]branch|p7[/ ]branch|p6[/ ]branch)[/ ](x86_64|i586|x86_64-i586|noarch) !\1 \2/\3/\4 !gi' local i assure_root for i in "$@" ; do [ -s "$i" ] || continue #perl -i.bak -pe "$SUBST_ALT_RULE" $i # TODO: only for uncommented strings #sed -i -r -e "$SUBST_ALT_RULE" $i regexp_subst "/^ *#/! $SUBST_ALT_RULE" $i # add signs for branches local br for br in $DISTRVERSION ; do if ! __repofix_check_vendor $br ; then warning "Skip set $br vendor key (it misssed)" continue fi regexp_subst "/ALTLinux\/$br\/branch/s/^rpm *([fhr])/rpm [$br] \1/" $i done for br in $DISTRVERSION ; do #if is_installed apt-conf-etersoft-common ; then if ! __repofix_check_vendor etersoft ; then warning "Skip set etersoft vendor key (it misssed)" continue fi regexp_subst "/Etersoft\/$br\/branch/s/^rpm *([fhr])/rpm [etersoft] \1/" $i done # Sisyphus uses 'alt' vendor key if __repofix_check_vendor alt ; then regexp_subst "/ALTLinux\/Sisyphus\//s/^rpm *([fhr])/rpm [alt] \1/" $i else warning "Skip set alt vendor key (it misssed)" fi done } epm_repofix() { [ -z "$pkg_filenames" ] || fatal "No arguments are allowed here" case $PMTYPE in apt-rpm) assure_exists apt-repo [ -n "$quiet" ] || docmd apt-repo list __fix_apt_sources_list /etc/apt/sources.list __fix_apt_sources_list /etc/apt/sources.list.d/*.list docmd apt-repo list # rebuild rpm database #sudocmd rm -fv /var/lib/rpm/__db* #sudocmd rpm --rebuilddb ;; yum-rpm|dnf-rpm) sudocmd rm -fv /var/lib/rpm/__db* sudocmd rpm --rebuilddb ;; *) fatal "Have no suitable command for $PMTYPE" ;; esac }