#!/bin/sh # # Copyright (C) 2012, 2014, 2016, 2019 Etersoft # Copyright (C) 2012, 2014, 2016, 2019 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 load_helper epm-sh-warmup epm_upgrade() { local CMD #[ -z "$pkg_filenames" ] || fatal "No arguments are allowed here" # it is useful for first time running update_repo_if_needed warmup_bases if [ "$DISTRNAME" = "ALTLinux" ] ; then load_helper epm-sh-altlinux if tasknumber "$pkg_names" >/dev/null ; then load_helper epm-addrepo load_helper epm-removerepo load_helper epm-Install epm_addrepo "$pkg_names" local installlist="$(get_task_packages $pkg_names)" # hack: drop -devel packages to avoid package provided by multiple packages installlist="$(estrlist reg_exclude ".*-devel .*-devel-static" "$installlist")" [ -n "$verbose" ] && info "Packages from task(s): $installlist" # install only installed packages (simulate upgrade packages) installlist="$(get_only_installed_packages "$installlist")" [ -n "$verbose" ] && info "Packages to upgrade: $installlist" (pkg_names="$installlist" epm_Install) epm_removerepo "$pkg_names" return fi fi info "Running command for upgrade packages" case $PMTYPE in apt-rpm|apt-dpkg) local APTOPTIONS="$(subst_option non_interactive -y) $(subst_option verbose "-o Debug::pkgMarkInstall=1 -o Debug::pkgProblemResolver=1")" # Функцию добавления параметра при условии CMD="apt-get $APTOPTIONS dist-upgrade $noremove" ;; aptitude-dpkg) CMD="aptitude dist-upgrade" ;; packagekit) docmd pkcon update return ;; yum-rpm) local OPTIONS="$(subst_option non_interactive -y)" # can do update repobase automagically CMD="yum $OPTIONS update $pkg_filenames" ;; dnf-rpm) local OPTIONS="$(subst_option non_interactive -y)" CMD="dnf $OPTIONS distro-sync $pkg_filenames" ;; snappy) CMD="snappy update" ;; urpm-rpm) # or --auto-select --replace-files CMD="urpmi --update --auto-select $pkg_filenames" ;; zypper-rpm) CMD="zypper dist-upgrade" ;; pacman) CMD="pacman -S -u $force" ;; aura) CMD="aura -A -u" ;; emerge) CMD="emerge -NuDa world" ;; conary) CMD="conary updateall" ;; pkgsrc) CMD="freebsd-update fetch install" ;; pkgng) CMD="pkg upgrade" ;; chocolatey) CMD="chocolatey update all" ;; homebrew) #CMD="brew upgrade" docmd "brew upgrade $(brew outdated)" return ;; opkg) CMD="opkg upgrade" ;; slackpkg) CMD="/usr/sbin/slackpkg upgrade-all" ;; guix) CMD="guix package -u" ;; appget|winget) CMD="$PMTYPE update-all" ;; aptcyg) # shellcheck disable=SC2046 docmd_foreach "epm install" $(short=1 epm packages) return ;; xbps) CMD="xbps-install -Su" ;; *) fatal "Have no suitable command for $PMTYPE" ;; esac sudocmd $CMD $pkg_filenames }