@@ -144,53 +144,14 @@ if [ ${#PKGLIST[@]} -eq 0 ] && [ "$CHECK_ONLY" = "1" ]; then
144
144
fi
145
145
fi
146
146
147
- # now, we will download something
148
- UPDATE_COMMAND=(fakeroot $UPDATE_CMD $UPDATE_ACTION " ${UPDATE_ARGUMENTS[@]} " )
149
- " $UPDATE_CMD " " $UPDATE_ACTION " --help | grep -q downloadonly && UPDATE_COMMAND+=(--downloadonly)
150
- # check for --downloadonly option - if not supported (Debian), fallback to
151
- # yumdownloader
152
- if ! " $UPDATE_CMD " --help | grep -q downloadonly && ! " $UPDATE_CMD " --version | grep -q dnf5; then
153
- if dpkg --compare-versions \
154
- " $( dpkg-query --show --showformat=' ${version}' rpm) " gt 4.14; then
155
- SIGNATURE_REGEX=" ^[A-Za-z0-9._+-/]{1,128}\.rpm: digests signatures OK$"
156
- else
157
- SIGNATURE_REGEX=" ^[A-Za-z0-9._+-/]{1,128}\.rpm: [a-z0-9() ]* (pgp|gpg) [a-z0-9 ]* OK$"
158
- fi
147
+ # now, we will download something (or perform search, list or other tasks)
148
+ UPDATE_COMMAND=(fakeroot " $UPDATE_CMD " " $UPDATE_ACTION " " ${UPDATE_ARGUMENTS[@]} " )
159
149
160
- # setup environment for yumdownloader to be happy
161
- if [ ! -e " $DOM0_UPDATES_DIR /etc/yum.conf" ]; then
162
- ln -nsf dnf/dnf.conf " $DOM0_UPDATES_DIR /etc/yum.conf"
163
- fi
164
- if [ " $UPDATE_ACTION " = " install" ]; then
165
- UPDATE_COMMAND=(yumdownloader " --destdir=$DOM0_UPDATES_DIR /packages" --resolve)
166
- elif [ " $UPDATE_ACTION " = " upgrade" ]; then
167
- # shellcheck disable=SC2086
168
- UPDATES_FULL=$( $UPDATE_CMD check-update " ${UPDATE_ARGUMENTS[@]} " " ${OPTS[@]} " " ${PKGLIST[@]} " )
169
- check_update_retcode=$?
170
- UPDATES_FULL=$( echo " $UPDATES_FULL " | grep -v " ^Loaded plugins:\|^Last metadata\|^$" )
171
- mapfile -t PKGLIST < <( echo " $UPDATES_FULL " | grep -v " ^Obsoleting\|Could not" | cut -f 1 -d ' ' )
172
- if [ " $check_update_retcode " -eq 0 ]; then
173
- # exit code 0 means no updates available - regardless of stdout messages
174
- echo " No new updates available" >&2
175
- exit 0
176
- fi
177
- UPDATE_COMMAND=(yumdownloader " --destdir=$DOM0_UPDATES_DIR /packages" --resolve)
178
- elif [ " $UPDATE_ACTION " == " list" ] || [ " $UPDATE_ACTION " == " search" ]; then
179
- # those actions do not download any package, so lack of --downloadonly is irrelevant
180
- UPDATE_COMMAND=($UPDATE_CMD " ${UPDATE_ARGUMENTS[@]} " -- " $UPDATE_ACTION " )
181
- elif [ " $UPDATE_ACTION " == " reinstall" ]; then
182
- # this is just approximation of 'reinstall' action...
183
- mapfile -t PKGLIST < <( rpm " --root=$DOM0_UPDATES_DIR " -q " ${PKGLIST[@]} " )
184
- UPDATE_COMMAND=(yumdownloader " --destdir=$DOM0_UPDATES_DIR /packages" --resolve)
185
- else
186
- echo " ERROR: yum version installed in VM $( hostname) does not suppport --downloadonly option" >&2
187
- echo " ERROR: only 'install' and 'upgrade' actions supported ($UPDATE_ACTION not)" >&2
188
- if [ " $GUI " = 1 ]; then
189
- zenity --error --text=" yum version too old for '$UPDATE_ACTION ' action, see console for details"
190
- fi
191
- exit 1
192
- fi
193
- fi
150
+ # DNF4 supported --downloadonly option for all actions. DNF5 fails for list,
151
+ # search, info and similar actions if --downloadonly is specified. The below
152
+ # condition is a smart way to check if --downloadonly option is applicable to
153
+ # the action.
154
+ " $UPDATE_CMD " " $UPDATE_ACTION " --help | grep -q downloadonly && UPDATE_COMMAND+=(--downloadonly)
194
155
195
156
mkdir -p " $DOM0_UPDATES_DIR /packages"
196
157
0 commit comments