1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#!/bin/sh
#
# Copyright (C) 2012, 2014, 2016-2017 Etersoft
# Copyright (C) 2012, 2014, 2016-2017 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/>.
#
# copied from korinf/tools/run-script/scripts/update
load_helper epm-sh-warmup
load_helper epm-check_updated_repo
# TODO: restore mirroring
get_latest_version()
{
URL="https://eepm.ru/app-versions"
#update_url_if_need_mirrored
epm tool eget -q -O- "$URL/$1"
}
__check_for_epm_version()
{
# skip update checking for eepm from repo (ALT bug #44314)
[ "$BASEDISTRNAME" = "alt" ] && [ "$DISTRVERSION" != "Sisyphus" ] && epm status --original eepm && return
local latest="$(get_latest_version eepm)"
#[ -z "$latest" ] && return
local res="$(epm print compare "$EPMVERSION" "$latest")"
[ "$res" = "-1" ] && info "Latest EPM version in Korinf repository is $latest. You have version $EPMVERSION running." && info "You can update eepm with \$ epm ei command."
}
__save_available_packages()
{
[ -d "$epm_vardir" ] || return 0
info "Retrieve all available packages (for autocompletion) ..."
load_helper epm-list_available
short=--short epm_list_available | sort | sudorun tee $epm_vardir/available-packages >/dev/null
}
epm_update()
{
[ -z "$*" ] || fatal "No arguments are allowed here"
info "Running command for update remote package repository database"
local ret=0
warmup_hibase
case $PMTYPE in
apt-rpm)
# TODO: hack against cd to cwd in apt-get on ALT
cd /
sudocmd apt-get update
ret="$?"
cd - >/dev/null
[ "$ret" = "0" ] || return
__check_for_epm_version
#sudocmd apt-get -f install || exit
;;
apt-dpkg)
sudocmd apt-get update || return
#sudocmd apt-get -f install || exit
#sudocmd apt-get autoremove
;;
packagekit)
docmd pkcon refresh
;;
#snappy)
# sudocmd snappy
# ;;
aptitude-dpkg)
sudocmd aptitude update || return
;;
yum-rpm)
# just skipped
[ -z "$verbose" ] || info "update command is stubbed for yum"
;;
dnf-rpm)
# just skipped
[ -z "$verbose" ] || info "update command is stubbed for dnf"
;;
urpm-rpm)
sudocmd urpmi.update -a
;;
pacman)
sudocmd pacman -S -y
;;
aura)
sudocmd aura -A -y
;;
zypper-rpm)
sudocmd zypper $(subst_option non_interactive --non-interactive) refresh
;;
emerge)
sudocmd emerge --sync
;;
slackpkg)
sudocmd /usr/sbin/slackpkg -batch=on update
;;
deepsolver-rpm)
sudocmd ds-update
;;
npackd)
sudocmd packdcl detect # get packages from MSI database
;;
homebrew)
docmd brew update
;;
opkg)
sudocmd opkg update
;;
eopkg)
sudocmd eopkg update-repo
;;
apk)
sudocmd apk update
;;
nix)
sudocmd nix-channel --update
;;
pkgsrc)
# portsnap extract for the first time?
sudocmd portsnap fetch update
;;
aptcyg)
sudocmd apt-cyg update
;;
xbps)
sudocmd xbps-install -S
;;
winget)
sudocmd winget source update
;;
*)
fatal "Have no suitable update command for $PMTYPE"
;;
esac
__epm_touch_pkg
__save_available_packages
return 0
}