qubes-issues
qubes-issues copied to clipboard
qubes-dom0-update - dom0 package updates are downloaded but not installed
Qubes OS version:
R4.0
Affected component(s):
dom0
Steps to reproduce the behavior:
sudo qubes-dom0-update --action="clean packages"
sudo qubes-dom0-update
Expected behavior:
If packages are downloaded, installation or error message is expected.
Actual behavior:
[user@dom0 ~]$ sudo qubes-dom0-update
Using dom0-updatevom2 as UpdateVM to download updates for Dom0; this may take some time...
Fedora 25 - x86_64 - Updates 2.4 kB/s | 4.9 kB 00:02
Fedora 25 - x86_64 2.3 kB/s | 5.2 kB 00:02
Qubes Dom0 Repository (updates) 1.4 kB/s | 2.7 kB 00:01
Qubes Templates repository 1.4 kB/s | 2.7 kB 00:01
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
kernel x86_64 1000:4.14.74-1.pvops.qubes qubes-dom0-current 46 M
kernel-qubes-vm x86_64 1000:4.14.74-1.pvops.qubes qubes-dom0-current 64 M
Reinstalling:
python3-blivet noarch 2:2.1.6-5.fc25 qubes-dom0-current 1.0 M
python3-kickstart noarch 1000:2.32-4.fc25 qubes-dom0-current 370 k
Removing:
kernel x86_64 1000:4.14.57-2.pvops.qubes @System 239 M
kernel-qubes-vm x86_64 1000:4.14.57-2.pvops.qubes @System 272 M
Transaction Summary
================================================================================
Install 2 Packages
Remove 2 Packages
Total download size: 112 M
DNF will only download packages for the transaction.
Downloading Packages:
(1/4): python3-kickstart-2.32-4.fc25.noarch.rpm 130 kB/s | 370 kB 00:02
(2/4): python3-blivet-2.1.6-5.fc25.noarch.rpm 282 kB/s | 1.0 MB 00:03
(3/4): kernel-4.14.74-1.pvops.qubes.x86_64.rpm 1.0 MB/s | 46 MB 00:46
(4/4): kernel-qubes-vm-4.14.74-1.pvops.qubes.x8 1.1 MB/s | 64 MB 00:56
--------------------------------------------------------------------------------
Total 1.8 MB/s | 112 MB 01:01
Complete!
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'.
Qubes OS Repository for Dom0 145 MB/s | 215 kB 00:00
[user@dom0 ~]$ sudo dnf update
Qubes OS Repository for Dom0 113 MB/s | 215 kB 00:00
Dependencies resolved.
Nothing to do.
Complete!
[user@dom0 ~]$
General notes:
This happened after moving Qubes from internal HDD to external HDD using dd (using yet another booted operating system, so the internal Qubes HDD was not booted). Not sure if related.
[user@dom0 ~]$ ls -la /usr/bin/createrepo
-rwxr-xr-x. 1 root root 60 Jan 28 2014 /usr/bin/createrepo
[user@dom0 ~]$ ls -la /usr/bin/createrepo_c
-rwxr-xr-x. 1 root root 50880 Sep 14 2016 /usr/bin/createrepo_c
[user@dom0 ~]$ rpm -q xen
xen-4.8.5-1.fc25.x86_64
[user@dom0 ~]$
[user@dom0 ~]$ sudo bash -x qubes-dom0-update --clean --verbose
++ qubes-prefs --force-root updatevm
+ UPDATEVM=dom0-updatevom2
+ UPDATES_STAT_FILE=/var/lib/qubes/updates/dom0-updates-available
+ '[' -z dom0-updatevom2 ']'
+ '[' --clean = --help ']'
+ PKGS=
+ YUM_OPTS=
+ GUI=
+ CHECK_ONLY=
+ ALL_OPTS='--clean --verbose'
+ YUM_ACTION=
+ QVMRUN_OPTS=
+ CLEAN=
+ TEMPLATE=
+ TEMPLATE_BACKUP=
+ '[' 2 -gt 0 ']'
+ case "$1" in
+ CLEAN=1
+ shift
+ '[' 1 -gt 0 ']'
+ case "$1" in
+ YUM_OPTS=' --verbose'
+ shift
+ '[' 0 -gt 0 ']'
+ '[' '' == reinstall ']'
+ '[' '' == upgrade ']'
+ '[' '' == upgrade-to ']'
+ '[' '' == downgrade ']'
+ '[' '' == search ']'
+ '[' '' == info ']'
++ rpm -qa --qf '%{NAME},' 'qubes-template-*'
++ head -c -1
+ TEMPLATE_EXCLUDE_OPTS=--exclude=qubes-template-whonix-gw-14,qubes-template-debian-9,qubes-template-fedora-29,qubes-template-whonix-ws-14,qubes-template-fedora-26,qubes-template-fedora-28
+ YUM_OPTS='--exclude=qubes-template-whonix-gw-14,qubes-template-debian-9,qubes-template-fedora-29,qubes-template-whonix-ws-14,qubes-template-fedora-26,qubes-template-fedora-28 --verbose'
+ ALL_OPTS='--exclude=qubes-template-whonix-gw-14,qubes-template-debian-9,qubes-template-fedora-29,qubes-template-whonix-ws-14,qubes-template-fedora-26,qubes-template-fedora-28 --clean --verbose'
++ id -ur
+ ID=0
+ '[' 0 '!=' 0 -a -z '' -a -z '' ']'
+ '[' '' == 1 -a -n '' ']'
+ '[' '' == 1 ']'
+ '[' '' '!=' 1 ']'
+ QVMRUN_OPTS=--nogui
+ '[' '' == 1 ']'
+ '[' -n 1 ']'
+ rm -f '/var/lib/qubes/updates/rpm/*'
+ rm -f '/var/lib/qubes/updates/repodata/*'
+ rm -f /var/lib/qubes/updates/errors
+ echo 'Using dom0-updatevom2 as UpdateVM to download updates for Dom0; this may take some time...'
Using dom0-updatevom2 as UpdateVM to download updates for Dom0; this may take some time...
+ qvm-run --nogui -q -u root dom0-updatevom2 'mkdir -m 775 -p /var/lib/qubes/dom0-updates/'
+ qvm-run --nogui -q -u root dom0-updatevom2 'chown user:user /var/lib/qubes/dom0-updates/'
+ qvm-run --nogui -q dom0-updatevom2 'rm -rf /var/lib/qubes/dom0-updates/etc'
+ tar c /var/lib/rpm /etc/yum.repos.d /etc/yum.conf
+ qvm-run --nogui -q --pass-io dom0-updatevom2 'LC_MESSAGES=C tar x -C /var/lib/qubes/dom0-updates 2>&1 | grep -v -E "s in the future"'
+ qvm-run --nogui --pass-io dom0-updatevom2 'script --quiet --return --command '\''/usr/lib/qubes/qubes-download-dom0-updates.sh --doit --nogui --exclude=qubes-template-whonix-gw-14,qubes-template-debian-9,qubes-template-fedora-29,qubes-template-whonix-ws-14,qubes-template-fedora-26,qubes-template-fedora-28 --clean --verbose'\'' /dev/null'
+ DOM0_UPDATES_DIR=/var/lib/qubes/dom0-updates
+ GUI=1
+ CLEAN=0
+ CHECK_ONLY=0
+ OPTS='--installroot /var/lib/qubes/dom0-updates --config=/var/lib/qubes/dom0-updates/etc/yum.conf'
+ OPTS='--installroot /var/lib/qubes/dom0-updates --config=/var/lib/qubes/dom0-updates/etc/yum.conf --setopt=reposdir=/var/lib/qubes/dom0-updates/etc/yum.repos.d'
+ PKGLIST=
+ YUM_ACTION=
+ export LC_ALL=C
+ LC_ALL=C
+ '[' -n --doit ']'
+ case "$1" in
+ shift
+ '[' -n --nogui ']'
+ case "$1" in
+ GUI=0
+ shift
+ '[' -n --exclude=qubes-template-whonix-gw-14,qubes-template-debian-9,qubes-template-fedora-29,qubes-template-whonix-ws-14,qubes-template-fedora-26,qubes-template-fedora-28 ']'
+ case "$1" in
+ OPTS='--installroot /var/lib/qubes/dom0-updates --config=/var/lib/qubes/dom0-updates/etc/yum.conf --setopt=reposdir=/var/lib/qubes/dom0-updates/etc/yum.repos.d --exclude=qubes-template-whonix-gw-14,qubes-template-debian-9,qubes-template-fedora-29,qubes-template-whonix-ws-14,qubes-template-fedora-26,qubes-template-fedora-28'
+ shift
+ '[' -n --clean ']'
+ case "$1" in
+ CLEAN=1
+ shift
+ '[' -n --verbose ']'
+ case "$1" in
+ OPTS='--installroot /var/lib/qubes/dom0-updates --config=/var/lib/qubes/dom0-updates/etc/yum.conf --setopt=reposdir=/var/lib/qubes/dom0-updates/etc/yum.repos.d --exclude=qubes-template-whonix-gw-14,qubes-template-debian-9,qubes-template-fedora-29,qubes-template-whonix-ws-14,qubes-template-fedora-26,qubes-template-fedora-28 --verbose'
+ shift
+ '[' -n '' ']'
+ '[' -z '' ']'
+ YUM_ACTION=upgrade
+ YUM=yum
+ type dnf
+ YUM='dnf --best --allowerasing --noplugins'
+ '[' -d /var/lib/qubes/dom0-updates ']'
+ mkdir -p /var/lib/qubes/dom0-updates/etc
+ '[' -e /etc/debian_version ']'
+ rm -f /var/lib/qubes/dom0-updates/var/lib/rpm/__db.001 /var/lib/qubes/dom0-updates/var/lib/rpm/__db.002 /var/lib/qubes/dom0-updates/var/lib/rpm/__db.003
+ rpm --root=/var/lib/qubes/dom0-updates --rebuilddb
+ '[' 1 = 1 ']'
+ dnf --best --allowerasing --noplugins --installroot /var/lib/qubes/dom0-updates --config=/var/lib/qubes/dom0-updates/etc/yum.conf --setopt=reposdir=/var/lib/qubes/dom0-updates/etc/yum.repos.d --exclude=qubes-template-whonix-gw-14,qubes-template-debian-9,qubes-template-fedora-29,qubes-template-whonix-ws-14,qubes-template-fedora-26,qubes-template-fedora-28 --verbose clean all
DNF version: 4.0.9
cachedir: /var/lib/qubes/dom0-updates/var/cache/yum/x86_64/4.0
Unknown configuration value: failovermethod=priority in /var/lib/qubes/dom0-updates/etc/yum.repos.d/fedora-updates.repo; Configuration: OptionBinding with id "failovermethod" does not exist
Unknown configuration value: failovermethod=priority in /var/lib/qubes/dom0-updates/etc/yum.repos.d/fedora-updates.repo; Configuration: OptionBinding with id "failovermethod" does not exist
Unknown configuration value: failovermethod=priority in /var/lib/qubes/dom0-updates/etc/yum.repos.d/fedora-updates.repo; Configuration: OptionBinding with id "failovermethod" does not exist
Unknown configuration value: failovermethod=priority in /var/lib/qubes/dom0-updates/etc/yum.repos.d/fedora.repo; Configuration: OptionBinding with id "failovermethod" does not exist
Unknown configuration value: failovermethod=priority in /var/lib/qubes/dom0-updates/etc/yum.repos.d/fedora.repo; Configuration: OptionBinding with id "failovermethod" does not exist
Unknown configuration value: failovermethod=priority in /var/lib/qubes/dom0-updates/etc/yum.repos.d/fedora.repo; Configuration: OptionBinding with id "failovermethod" does not exist
Cleaning data: metadata dbcache packages
20 files removed
+ rm -f '/var/lib/qubes/dom0-updates/packages/*'
+ rm -rf /var/lib/qubes/dom0-updates/var/cache/yum/x86_64
+ '[' x = x ']'
+ '[' 0 = 1 ']'
+ YUM_COMMAND='fakeroot dnf --best --allowerasing --noplugins upgrade -y --downloadonly'
+ dnf --best --allowerasing --noplugins --help
+ grep -q downloadonly
+ mkdir -p /var/lib/qubes/dom0-updates/packages
+ set -e
+ '[' 0 = 1 ']'
+ fakeroot dnf --best --allowerasing --noplugins upgrade -y --downloadonly --installroot /var/lib/qubes/dom0-updates --config=/var/lib/qubes/dom0-updates/etc/yum.conf --setopt=reposdir=/var/lib/qubes/dom0-updates/etc/yum.repos.d --exclude=qubes-template-whonix-gw-14,qubes-template-debian-9,qubes-template-fedora-29,qubes-template-whonix-ws-14,qubes-template-fedora-26,qubes-template-fedora-28 --verbose
DNF version: 4.0.9
cachedir: /var/lib/qubes/dom0-updates/var/cache/yum/x86_64/4.0
Unknown configuration value: failovermethod=priority in /var/lib/qubes/dom0-updates/etc/yum.repos.d/fedora-updates.repo; Configuration: OptionBinding with id "failovermethod" does not exist
Unknown configuration value: failovermethod=priority in /var/lib/qubes/dom0-updates/etc/yum.repos.d/fedora-updates.repo; Configuration: OptionBinding with id "failovermethod" does not exist
Unknown configuration value: failovermethod=priority in /var/lib/qubes/dom0-updates/etc/yum.repos.d/fedora-updates.repo; Configuration: OptionBinding with id "failovermethod" does not exist
Unknown configuration value: failovermethod=priority in /var/lib/qubes/dom0-updates/etc/yum.repos.d/fedora.repo; Configuration: OptionBinding with id "failovermethod" does not exist
Unknown configuration value: failovermethod=priority in /var/lib/qubes/dom0-updates/etc/yum.repos.d/fedora.repo; Configuration: OptionBinding with id "failovermethod" does not exist
Unknown configuration value: failovermethod=priority in /var/lib/qubes/dom0-updates/etc/yum.repos.d/fedora.repo; Configuration: OptionBinding with id "failovermethod" does not exist
repo: downloading from remote: updates
Fedora 25 - x86_64 - Updates 1.8 MB/s | 24 MB 00:13
not found other for: Fedora 25 - x86_64 - Updates
not found modules for: Fedora 25 - x86_64 - Updates
updates: using metadata from Tue Dec 12 09:34:19 2017.
repo: downloading from remote: fedora
Fedora 25 - x86_64 1.9 MB/s | 50 MB 00:26
not found other for: Fedora 25 - x86_64
not found modules for: Fedora 25 - x86_64
not found updateinfo for: Fedora 25 - x86_64
fedora: using metadata from Tue Nov 15 14:49:18 2016.
repo: downloading from remote: qubes-dom0-current
Qubes Dom0 Repository (updates) 210 kB/s | 8.0 MB 00:39
not found other for: Qubes Dom0 Repository (updates)
not found modules for: Qubes Dom0 Repository (updates)
not found deltainfo for: Qubes Dom0 Repository (updates)
not found updateinfo for: Qubes Dom0 Repository (updates)
qubes-dom0-current: using metadata from Thu Jan 24 18:44:16 2019.
repo: downloading from remote: qubes-templates-itl
determining the fastest mirror (15 hosts).. done..7 kB/s | 2.7 kB 00:00 ETA
Qubes Templates repository 941 B/s | 11 kB 00:11
not found other for: Qubes Templates repository
not found modules for: Qubes Templates repository
not found deltainfo for: Qubes Templates repository
not found updateinfo for: Qubes Templates repository
qubes-templates-itl: using metadata from Sun Jan 27 16:28:45 2019.
Last metadata expiration check: 0:00:01 ago on Wed Feb 6 03:35:59 2019.
--> Starting dependency resolution
---> Package python3-blivet.noarch 2:2.1.6-5.fc25 will be reinstalled
---> Package python3-kickstart.noarch 1000:2.32-4.fc25 will be reinstalled
---> Package kernel.x86_64 1000:4.14.74-1.pvops.qubes will be installed
---> Package kernel-qubes-vm.x86_64 1000:4.14.74-1.pvops.qubes will be installed
---> Package kernel.x86_64 1000:4.14.57-2.pvops.qubes will be erased
---> Package kernel-qubes-vm.x86_64 1000:4.14.57-2.pvops.qubes will be erased
--> Finished dependency resolution
Dependencies resolved.
Excludes in dnf.conf: qubes-template-debian-9, qubes-template-fedora-26, qubes-template-fedora-28, qubes-template-fedora-29, qubes-template-whonix-gw-14, qubes-template-whonix-ws-14
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
kernel x86_64 1000:4.14.74-1.pvops.qubes qubes-dom0-current 46 M
kernel-qubes-vm x86_64 1000:4.14.74-1.pvops.qubes qubes-dom0-current 64 M
Reinstalling:
python3-blivet noarch 2:2.1.6-5.fc25 qubes-dom0-current 1.0 M
python3-kickstart noarch 1000:2.32-4.fc25 qubes-dom0-current 370 k
Removing:
kernel x86_64 1000:4.14.57-2.pvops.qubes @System 239 M
kernel-qubes-vm x86_64 1000:4.14.57-2.pvops.qubes @System 272 M
Transaction Summary
================================================================================
Install 2 Packages
Remove 2 Packages
Total download size: 112 M
DNF will only download packages for the transaction.
Downloading Packages:
(1/4): python3-blivet-2.1.6-5.fc25.noarch.rpm 145 kB/s | 1.0 MB 00:06
(2/4): python3-kickstart-2.32-4.fc25.noarch.rpm 51 kB/s | 370 kB 00:07
(3/4): kernel-4.14.74-1.pvops.qubes.x86_64.rpm 283 kB/s | 46 MB 02:46
(4/4): kernel-qubes-vm-4.14.74-1.pvops.qubes.x8 290 kB/s | 64 MB 03:46
--------------------------------------------------------------------------------
Total 484 kB/s | 112 MB 03:55
Complete!
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'.
+ find /var/lib/qubes/dom0-updates/var/cache/yum -name '*.rpm' -print0
+ xargs -0 -r ln -f -t /var/lib/qubes/dom0-updates/packages/
+ ls /var/lib/qubes/dom0-updates/packages/kernel-4.14.74-1.pvops.qubes.x86_64.rpm /var/lib/qubes/dom0-updates/packages/kernel-qubes-vm-4.14.74-1.pvops.qubes.x86_64.rpm /var/lib/qubes/dom0-updates/packages/python3-blivet-2.1.6-5.fc25.noarch.rpm /var/lib/qubes/dom0-updates/packages/python3-kickstart-2.32-4.fc25.noarch.rpm
+ cmd='/usr/lib/qubes/qrexec-client-vm dom0 qubes.ReceiveUpdates /usr/lib/qubes/qfile-agent'
+ qrexec_exit_code=0
+ /usr/lib/qubes/qrexec-client-vm dom0 qubes.ReceiveUpdates /usr/lib/qubes/qfile-agent /var/lib/qubes/dom0-updates/packages/kernel-4.14.74-1.pvops.qubes.x86_64.rpm /var/lib/qubes/dom0-updates/packages/kernel-qubes-vm-4.14.74-1.pvops.qubes.x86_64.rpm /var/lib/qubes/dom0-updates/packages/python3-blivet-2.1.6-5.fc25.noarch.rpm /var/lib/qubes/dom0-updates/packages/python3-kickstart-2.32-4.fc25.noarch.rpm
+ '[' '!' 0 = 0 ']'
+ RETCODE=0
+ '[' '' == 1 ']'
+ '[' 0 -ne 0 ']'
+ pidof -x qubes-receive-updates
+ '[' -r /var/lib/qubes/updates/errors ']'
+ '[' -z '' ']'
+ YUM_ACTION=upgrade
+ '[' -n '' ']'
+ '[' -f /var/lib/qubes/updates/repodata/repomd.xml ']'
+ '[' '' == 1 ']'
+ dnf check-update
Qubes OS Repository for Dom0 147 MB/s | 215 kB 00:00
+ '[' 0 -eq 100 ']'
+ dnf -q check-update
+ qvm-features dom0 updates-available ''
[user@dom0 ~]$ sudo dnf update
Qubes OS Repository for Dom0 143 MB/s | 215 kB 00:00
Dependencies resolved.
Nothing to do.
Complete!
[user@dom0 ~]$
[user@dom0 ~]$ rpm -K /var/lib/qubes/updates/rpm/*.rpm
/var/lib/qubes/updates/rpm/kernel-4.14.74-1.pvops.qubes.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
/var/lib/qubes/updates/rpm/kernel-qubes-vm-4.14.74-1.pvops.qubes.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
/var/lib/qubes/updates/rpm/python3-blivet-2.1.6-5.fc25.noarch.rpm: rsa sha1 (md5) pgp md5 OK
/var/lib/qubes/updates/rpm/python3-kickstart-2.32-4.fc25.noarch.rpm: rsa sha1 (md5) pgp md5 OK
Related issues:
Similar to https://github.com/QubesOS/qubes-issues/issues/4099 but not the same cause.
Yesterday one of my installs exhibited the same symptom.
I have this issue too (with two packages). It started a couple of weeks ago, roughly.
Someone else has this problem and mentioned it on qubes-users: https://groups.google.com/forum/#!topic/qubes-users/aspAwV8Y27Y
Same issue here, tried figuring out why but gave up.
I just got a bunch of updates (via the GUI). After letting the GUI install those, I still see the two stale packages that "were saved in the cache until the next successful transaction" if I run sudo qubes-dom0-update in dom0.
Same here since a couple of week. No updates since than...
This magically fixed itself for me the other day.
My terminal looks like this screenshot in the user mail list on 16.2.19 from Evastar: https://i.imgur.com/qnH5JNh.png
I had the same issue when using a fedora-29-minimal updatevm, when switching back to whonix-gw it went away. So I thought this has probably something to do with fedora-29(-minimal).
I would also like to add that I was using a fedora-29 template for the Update VM as well and suffering from this issue. The fedora-29 template that I have was freshly downloaded through dom0's terminal and not one created through upgrading old template/s.
dnf want to reinstall those packages, so it does notice the same version is already there. I think it's because those package was rebuilt together with other packages in installer-qubes-os repository. Since those packages are not yet 100% reproducible, some details may be different (like build time) and apparently dnf in Fedora-29 do notice it.
To get rid of this, you can force reinstalling those package to that new build, with sudo dnf reinstall python3-blivet python3-kickstart in dom0. Since qubed-dom0-update verify signatures of all downloaded packages, it should be safe.
For the future, the fix is already queued for R4.1 - by splitting installer-qubes-os repository into separate packages. This means no longer multiple package would be rebuild if any of them is changed.
I had to reinstall all those packages. Since then the update works correctly. Thanks!
I can confirm reinstalling the packages works :)
On 2/23/19 3:22 AM, Lunar wrote:
I can confirm reinstalling the packages works :)
Yes, here too.
Did the sudo dnf reinstall as instructed and it fixed it like a charm Thank you very much for that!
sudo dnf reinstall package.rpm doesnt work anymore , user needs to remove .rpm from the package name then reinstall can work with you see #5024 (almost similar to this ticket sorry i forgot , i should have reported that here)
sudo dnf reinstall package.rpmdoesnt work anymore , user needs to remove .rpm from the package name then reinstall can work with you see #5024 (almost similar to this ticket sorry i forgot , i should have reported that here)
Well dnf in particular always works directly with software/packages names instead of .rpm files since it does syncing with repositories in order to resolve + download software/packages and install them.
Using dnf itself involves things like:
sudo dnf install vlc
Although one can do a sudo dnf install vlc.rpm when you have the .rpm file downloaded into your PC, there is an rpm command that was designed to really work with .rpm files.
Multiple users are reporting that dnf reinstall isn't working with kernel packages:
- https://groups.google.com/d/msgid/qubes-users/c8971e12-54fa-4997-9f1a-4913eb5a396e%40googlegroups.com
- https://groups.google.com/d/msgid/qubes-users/l9UemRakBGPd0D9HX4ukx3u27IdrhjQFoQvQ9NY5oGJPfabCLXmgzBC0SyHxHersrURwybf0kOJSy9Ml6jFR-lvcdiQpjfoPkKbZhBhfBic%3D%40protonmail.com
Upstream issue: https://bugzilla.redhat.com/show_bug.cgi?id=1644241
Upstream issue: https://bugzilla.redhat.com/show_bug.cgi?id=1644241
Does that apply only to the kernel packages or to this whole issue (as in, this whole issue should be closed as not our bug)?
It's about dnf wanting to reinstall packages if version wasn't changed (but package possibly was rebuilt). I'm not entirely sure if kernel issue is the same, as it's "Install", not "Reinstall" in that case.
It's about dnf wanting to reinstall packages if version wasn't changed (but package possibly was rebuilt).
Hm, so does that cover this whole issue, or only part of it (or do we not know)?
I don't know whether the problem reported here occurs if and only if dnf wants to reinstall a package whose version hasn't changed but that may been rebuilt. Does anyone know?
Some more data that may or may not help you diagnose the issue:
[root@dom0 ~]# qubes-dom0-update
Using sys-firewall as UpdateVM to download updates for Dom0; this may take some time...
Last metadata expiration check: 1:37:56 ago on Sat Jul 13 22:09:46 2019.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
kernel x86_64 1000:4.14.119-2.pvops.qubes qubes-dom0-current 46 M
kernel-qubes-vm x86_64 1000:4.14.119-2.pvops.qubes qubes-dom0-current 64 M
Reinstalling:
anaconda-core x86_64 1000:25.20.9-14.fc25 qubes-dom0-current 1.5 M
anaconda-gui x86_64 1000:25.20.9-14.fc25 qubes-dom0-current 386 k
anaconda-tui x86_64 1000:25.20.9-14.fc25 qubes-dom0-current 186 k
anaconda-widgets x86_64 1000:25.20.9-14.fc25 qubes-dom0-current 119 k
garcon x86_64 1000:0.5.0-1.fc25 qubes-dom0-current 179 k
qubes-anaconda-addon
noarch 4.0.9-1.fc25 qubes-dom0-current 34 k
xfwm4 x86_64 1000:4.12.4-1.fc25 qubes-dom0-current 636 k
Removing:
kernel x86_64 1000:4.14.74-1.pvops.qubes @System 239 M
kernel-qubes-vm x86_64 1000:4.14.74-1.pvops.qubes @System 272 M
Transaction Summary
================================================================================
Install 2 Packages
Remove 2 Packages
Total size: 113 M
DNF will only download packages for the transaction.
Downloading Packages:
[SKIPPED] anaconda-core-25.20.9-14.fc25.x86_64.rpm: Already downloaded
[SKIPPED] anaconda-gui-25.20.9-14.fc25.x86_64.rpm: Already downloaded
[SKIPPED] anaconda-tui-25.20.9-14.fc25.x86_64.rpm: Already downloaded
[SKIPPED] anaconda-widgets-25.20.9-14.fc25.x86_64.rpm: Already downloaded
[SKIPPED] garcon-0.5.0-1.fc25.x86_64.rpm: Already downloaded
[SKIPPED] qubes-anaconda-addon-4.0.9-1.fc25.noarch.rpm: Already downloaded
[SKIPPED] xfwm4-4.12.4-1.fc25.x86_64.rpm: Already downloaded
[SKIPPED] kernel-4.14.119-2.pvops.qubes.x86_64.rpm: Already downloaded
[SKIPPED] kernel-qubes-vm-4.14.119-2.pvops.qubes.x86_64.rpm: Already downloaded
Complete!
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'.
Qubes OS Repository for Dom0 91 MB/s | 227 kB 00:00
[root@dom0 ~]# dnf reinstall anaconda-core anaconda-gui anaconda-tui anaconda-widgets garcon qubes-anaconda-addon xfwm4
Qubes OS Repository for Dom0 90 MB/s | 227 kB 00:00
Dependencies resolved.
=======================================================================================================================================
Package Arch Version Repository Size
=======================================================================================================================================
Reinstalling:
anaconda-core x86_64 1000:25.20.9-14.fc25 qubes-dom0-cached 1.5 M
anaconda-gui x86_64 1000:25.20.9-14.fc25 qubes-dom0-cached 386 k
anaconda-tui x86_64 1000:25.20.9-14.fc25 qubes-dom0-cached 186 k
anaconda-widgets x86_64 1000:25.20.9-14.fc25 qubes-dom0-cached 119 k
garcon x86_64 1000:0.5.0-1.fc25 qubes-dom0-cached 179 k
qubes-anaconda-addon noarch 4.0.9-1.fc25 qubes-dom0-cached 34 k
xfwm4 x86_64 1000:4.12.4-1.fc25 qubes-dom0-cached 636 k
Transaction Summary
=======================================================================================================================================
Total size: 3.0 M
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Reinstalling: anaconda-tui-1000:25.20.9-14.fc25.x86_64 1/14
Reinstalling: anaconda-core-1000:25.20.9-14.fc25.x86_64 2/14
Reinstalling: anaconda-widgets-1000:25.20.9-14.fc25.x86_64 3/14
Reinstalling: anaconda-gui-1000:25.20.9-14.fc25.x86_64 4/14
Reinstalling: xfwm4-1000:4.12.4-1.fc25.x86_64 5/14
Reinstalling: qubes-anaconda-addon-4.0.9-1.fc25.noarch 6/14
Reinstalling: garcon-1000:0.5.0-1.fc25.x86_64 7/14
Erasing : anaconda-gui-1000:25.20.9-14.fc25.x86_64 8/14
Erasing : qubes-anaconda-addon-4.0.9-1.fc25.noarch 9/14
Erasing : anaconda-tui-1000:25.20.9-14.fc25.x86_64 10/14
Erasing : anaconda-core-1000:25.20.9-14.fc25.x86_64 11/14
Erasing : anaconda-widgets-1000:25.20.9-14.fc25.x86_64 12/14
Erasing : xfwm4-1000:4.12.4-1.fc25.x86_64 13/14
Erasing : garcon-1000:0.5.0-1.fc25.x86_64 14/14
Verifying : anaconda-core-1000:25.20.9-14.fc25.x86_64 1/14
Verifying : anaconda-gui-1000:25.20.9-14.fc25.x86_64 2/14
Verifying : anaconda-tui-1000:25.20.9-14.fc25.x86_64 3/14
Verifying : anaconda-widgets-1000:25.20.9-14.fc25.x86_64 4/14
Verifying : garcon-1000:0.5.0-1.fc25.x86_64 5/14
Verifying : qubes-anaconda-addon-4.0.9-1.fc25.noarch 6/14
Verifying : xfwm4-1000:4.12.4-1.fc25.x86_64 7/14
Verifying : anaconda-core-1000:25.20.9-14.fc25.x86_64 8/14
Verifying : anaconda-gui-1000:25.20.9-14.fc25.x86_64 9/14
Verifying : anaconda-tui-1000:25.20.9-14.fc25.x86_64 10/14
Verifying : xfwm4-1000:4.12.4-1.fc25.x86_64 11/14
Verifying : anaconda-widgets-1000:25.20.9-14.fc25.x86_64 12/14
Verifying : qubes-anaconda-addon-4.0.9-1.fc25.noarch 13/14
Verifying : garcon-1000:0.5.0-1.fc25.x86_64 14/14
Reinstalled:
anaconda-core.x86_64 1000:25.20.9-14.fc25 anaconda-gui.x86_64 1000:25.20.9-14.fc25 anaconda-tui.x86_64 1000:25.20.9-14.fc25
anaconda-widgets.x86_64 1000:25.20.9-14.fc25 garcon.x86_64 1000:0.5.0-1.fc25 qubes-anaconda-addon.noarch 4.0.9-1.fc25
xfwm4.x86_64 1000:4.12.4-1.fc25
Complete!
[root@dom0 ~]# qubes-dom0-update
Using sys-firewall as UpdateVM to download updates for Dom0; this may take some time...
Last metadata expiration check: 1:50:54 ago on Sat Jul 13 22:09:46 2019.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
kernel x86_64 1000:4.14.119-2.pvops.qubes qubes-dom0-current 46 M
kernel-qubes-vm x86_64 1000:4.14.119-2.pvops.qubes qubes-dom0-current 64 M
Removing:
kernel x86_64 1000:4.14.74-1.pvops.qubes @System 239 M
kernel-qubes-vm x86_64 1000:4.14.74-1.pvops.qubes @System 272 M
Transaction Summary
================================================================================
Install 2 Packages
Remove 2 Packages
Total size: 110 M
DNF will only download packages for the transaction.
Downloading Packages:
[SKIPPED] kernel-4.14.119-2.pvops.qubes.x86_64.rpm: Already downloaded
[SKIPPED] kernel-qubes-vm-4.14.119-2.pvops.qubes.x86_64.rpm: Already downloaded
Complete!
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'.
Qubes OS Repository for Dom0 91 MB/s | 227 kB 00:00
[root@dom0 ~]# dnf update kernel kernel-qubes-vm
Qubes OS Repository for Dom0 87 MB/s | 227 kB 00:00
Dependencies resolved.
Nothing to do.
Complete!
[root@dom0 ~]# rpm -q kernel-qubes-vm
kernel-qubes-vm-4.14.74-1.pvops.qubes.x86_64
kernel-qubes-vm-4.14.116-1.pvops.qubes.x86_64
kernel-qubes-vm-4.19.43-1.pvops.qubes.x86_64
You already have newer package installed: kernel-qubes-vm-4.19.43-1.pvops.qubes.x86_64. This is why dnf update call don't want to do anything - because there is nothing to update.
I'm not sure why packages are still downloaded in sys-firewall, but the issue is on this side, not on not installing them in dom0. So, in practice it's only about wasting some network bandwidth.
bump. @marmarek can you help to fix this bug?
dom0
~ - sudo bash -x qubes-dom0-update bc
++ qubes-prefs --force-root updatevm
+ UPDATEVM=sys-whonix
+ UPDATES_STAT_FILE=/var/lib/qubes/updates/dom0-updates-available
+ '[' -z sys-whonix ']'
+ '[' bc = --help ']'
+ PKGS=()
+ YUM_OPTS=()
+ GUI=
+ CHECK_ONLY=
+ ALL_OPTS=("${@}")
+ YUM_ACTION=
+ QVMRUN_OPTS=
+ CLEAN=
+ TEMPLATE=
+ TEMPLATE_BACKUP=
+ '[' 1 -gt 0 ']'
+ case "$1" in
+ PKGS+=("${1}")
+ '[' -z '' ']'
+ YUM_ACTION=install
+ shift
+ '[' 0 -gt 0 ']'
+ '[' install == reinstall ']'
+ '[' install == upgrade ']'
+ '[' install == upgrade-to ']'
+ '[' install == downgrade ']'
+ '[' install == search ']'
+ '[' install == info ']'
+ TEMPLATE_EXCLUDE_OPTS=("--exclude=$(rpm -qa --qf '%{NAME},' qubes-template-\*|head -c -1)")
++ rpm -qa --qf '%{NAME},' 'qubes-template-*'
++ head -c -1
+ YUM_OPTS=("${TEMPLATE_EXCLUDE_OPTS[@]}" "${YUM_OPTS[@]}")
+ ALL_OPTS=("${TEMPLATE_EXCLUDE_OPTS[@]}" "${ALL_OPTS[@]}")
++ id -ur
+ ID=0
+ '[' 0 '!=' 0 -a -z '' -a -z '' ']'
+ '[' '' == 1 -a 1 -ne 0 ']'
+ '[' '' == 1 ']'
+ '[' '' '!=' 1 ']'
+ QVMRUN_OPTS=--nogui
+ '[' '' == 1 ']'
+ '[' -n '' ']'
+ rm -f /var/lib/qubes/updates/errors
+ echo 'Using sys-whonix as UpdateVM to download updates for Dom0; this may take some time...'
Using sys-whonix as UpdateVM to download updates for Dom0; this may take some time...
+ qvm-run --nogui -q -u root sys-whonix 'mkdir -m 775 -p /var/lib/qubes/dom0-updates/'
+ qvm-run --nogui -q -u root sys-whonix 'chown user:user /var/lib/qubes/dom0-updates/'
+ qvm-run --nogui -q sys-whonix 'rm -rf /var/lib/qubes/dom0-updates/etc'
+ qvm-run --nogui -q --pass-io sys-whonix 'LC_MESSAGES=C tar x -C /var/lib/qubes/dom0-updates 2>&1 | grep -v -E "s in the future"'
+ tar c /var/lib/rpm /etc/yum.repos.d /etc/yum.conf
++ escape_args --exclude=qubes-template-whonix-gw-15,qubes-template-archlinux,qubes-template-fedora-30,qubes-template-buster-minimal,qubes-template-debian-10,qubes-template-whonix-ws-15 bc
++ local eargs=
++ for arg in '"$@"'
++ printf -v eargs '%s%q ' '' --exclude=qubes-template-whonix-gw-15,qubes-template-archlinux,qubes-template-fedora-30,qubes-template-buster-minimal,qubes-template-debian-10,qubes-template-whonix-ws-15
++ for arg in '"$@"'
++ printf -v eargs '%s%q ' '--exclude=qubes-template-whonix-gw-15\,qubes-template-archlinux\,qubes-template-fedora-30\,qubes-template-buster-minimal\,qubes-template-debian-10\,qubes-template-whonix-ws-15 ' bc
++ echo '--exclude=qubes-template-whonix-gw-15\,qubes-template-archlinux\,qubes-template-fedora-30\,qubes-template-buster-minimal\,qubes-template-debian-10\,qubes-template-whonix-ws-15 bc'
+ qvm-run --nogui --pass-io sys-whonix 'script --quiet --return --command '\''/usr/lib/qubes/qubes-download-dom0-updates.sh --doit --nogui --exclude=qubes-template-whonix-gw-15\,qubes-template-archlinux\,qubes-template-fedora-30\,qubes-template-buster-minimal\,qubes-template-debian-10\,qubes-template-whonix-ws-15 bc'\'' /dev/null'
--> Running transaction check
---> Package bc.x86_64 0:1.06.95-16.fc24 will be installed
--> Finished Dependency Resolution
bc-1.06.95-16.fc24.x86_64.rpm | 121 kB 00:00
find: '/var/lib/qubes/dom0-updates/var/cache': No such file or directory
+ RETCODE=0
+ '[' '' == 1 ']'
+ '[' 0 -ne 0 ']'
+ pidof -x qubes-receive-updates
+ '[' -r /var/lib/qubes/updates/errors ']'
+ '[' -z install ']'
+ '[' 1 -gt 0 ']'
+ '[' -n '' ']'
+ dnf --exclude=qubes-template-whonix-gw-15,qubes-template-archlinux,qubes-template-fedora-30,qubes-template-buster-minimal,qubes-template-debian-10,qubes-template-whonix-ws-15 install bc
Failed to synchronize cache for repo 'qubes-dom0-cached', disabling.
No package bc available.
Error: Unable to find a match.
+ RETCODE=1
+ '[' -n '' -a 1 -eq 0 ']'
+ '[' -n '' -a -n '' -a x '!=' xNone ']'
~ - sudo dnf reinstall bc.rpm
Failed to synchronize cache for repo 'qubes-dom0-cached', disabling.
Can not load RPM file: bc.rpm.
~ - sudo dnf reinstall bc
Failed to synchronize cache for repo 'qubes-dom0-cached', disabling.
No match for argument: bc
Error: Nothing to do.
sys-whonix
user@host:~$ ls /var/lib/qubes/dom0-updates/packages/
bc-1.06.95-16.fc24.x86_64.rpm
Also updates on Dom0 via sys-firewall not working.
System Tools -> Qubes Global Settings -> Dom0 UpdateVm -> sys-firewall
~ - sudo bash -x qubes-dom0-update ++ qubes-prefs --force-root updatevm
- UPDATEVM=sys-firewall
- UPDATES_STAT_FILE=/var/lib/qubes/updates/dom0-updates-available
- '[' -z sys-firewall ']'
- '[' '' = --help ']'
- PKGS=()
- YUM_OPTS=()
- GUI=
- CHECK_ONLY=
- ALL_OPTS=("${@}")
- YUM_ACTION=
- QVMRUN_OPTS=
- CLEAN=
- TEMPLATE=
- TEMPLATE_BACKUP=
- '[' 0 -gt 0 ']'
- '[' '' == reinstall ']'
- '[' '' == upgrade ']'
- '[' '' == upgrade-to ']'
- '[' '' == downgrade ']'
- '[' '' == search ']'
- '[' '' == info ']'
- TEMPLATE_EXCLUDE_OPTS=("--exclude=$(rpm -qa --qf '%{NAME},' qubes-template-*|head -c -1)") ++ rpm -qa --qf '%{NAME},' 'qubes-template-*' ++ head -c -1
- YUM_OPTS=("${TEMPLATE_EXCLUDE_OPTS[@]}" "${YUM_OPTS[@]}")
- ALL_OPTS=("${TEMPLATE_EXCLUDE_OPTS[@]}" "${ALL_OPTS[@]}") ++ id -ur
- ID=0
- '[' 0 '!=' 0 -a -z '' -a -z '' ']'
- '[' '' == 1 -a 0 -ne 0 ']'
- '[' '' == 1 ']'
- '[' '' '!=' 1 ']'
- QVMRUN_OPTS=--nogui
- '[' '' == 1 ']'
- '[' -n '' ']'
- rm -f /var/lib/qubes/updates/errors
- echo 'Using sys-firewall as UpdateVM to download updates for Dom0; this may take some time...' Using sys-firewall as UpdateVM to download updates for Dom0; this may take some time...
- qvm-run --nogui -q -u root sys-firewall 'mkdir -m 775 -p /var/lib/qubes/dom0-updates/'
- qvm-run --nogui -q -u root sys-firewall 'chown user:user /var/lib/qubes/dom0-updates/'
- qvm-run --nogui -q sys-firewall 'rm -rf /var/lib/qubes/dom0-updates/etc'
- tar c /var/lib/rpm /etc/yum.repos.d /etc/yum.conf
- qvm-run --nogui -q --pass-io sys-firewall 'LC_MESSAGES=C tar x -C /var/lib/qubes/dom0-updates 2>&1 | grep -v -E "s in the future"' ++ escape_args --exclude=qubes-template-whonix-gw-15,qubes-template-archlinux,qubes-template-fedora-30,qubes-template-buster-minimal,qubes-template-debian-10,qubes-template-whonix-ws-15 ++ local eargs= ++ for arg in '"$@"' ++ printf -v eargs '%s%q ' '' --exclude=qubes-template-whonix-gw-15,qubes-template-archlinux,qubes-template-fedora-30,qubes-template-buster-minimal,qubes-template-debian-10,qubes-template-whonix-ws-15 ++ echo '--exclude=qubes-template-whonix-gw-15,qubes-template-archlinux,qubes-template-fedora-30,qubes-template-buster-minimal,qubes-template-debian-10,qubes-template-whonix-ws-15'
- qvm-run --nogui --pass-io sys-firewall 'script --quiet --return --command '''/usr/lib/qubes/qubes-download-dom0-updates.sh --doit --nogui --exclude=qubes-template-whonix-gw-15,qubes-template-archlinux,qubes-template-fedora-30,qubes-template-buster-minimal,qubes-template-debian-10,qubes-template-whonix-ws-15''' /dev/null' Existing lock /var/tmp/yum-user-azlaAd/x86_64/4.0/yum.pid: another copy is running as pid 1713. Another app is currently holding the yum lock; waiting for it to exit... The other application is: yum Memory : 34 M RSS (162 MB VSZ) Started: Thu Feb 13 01:32:03 2020 - 22:05 ago State : Sleeping, pid: 1713 Another app is currently holding the yum lock; waiting for it to exit... The other application is: yum Memory : 34 M RSS (162 MB VSZ) Started: Thu Feb 13 01:32:03 2020 - 22:07 ago State : Sleeping, pid: 1713 Another app is currently holding the yum lock; waiting for it to exit... The other application is: yum Memory : 34 M RSS (162 MB VSZ) Started: Thu Feb 13 01:32:03 2020 - 22:09 ago State : Sleeping, pid: 1713 Another app is currently holding the yum lock; waiting for it to exit... The other application is: yum Memory : 34 M RSS (162 MB VSZ) Started: Thu Feb 13 01:32:03 2020 - 22:11 ago State : Sleeping, pid: 1713 Another app is currently holding the yum lock; waiting for it to exit... The other application is: yum Memory : 34 M RSS (162 MB VSZ) Started: Thu Feb 13 01:32:03 2020 - 22:13 ago State : Sleeping, pid: 1713 Another app is currently holding the yum lock; waiting for it to exit... The other application is: yum Memory : 34 M RSS (162 MB VSZ) Started: Thu Feb 13 01:32:03 2020 - 22:15 ago State : Sleeping, pid: 1713 Another app is currently holding the yum lock; waiting for it to exit... The other application is: yum Memory : 34 M RSS (162 MB VSZ) Started: Thu Feb 13 01:32:03 2020 - 22:17 ago State : Sleeping, pid: 1713
In sys-whonix, try editing /usr/lib/qubes/qubes-download-dom0-updates.sh - on the line 178 there is find + xargs call - add || : at the end of the whole command and see if that helps.
@marmarek 165-178 lines, then script ends.
find "$DOM0_UPDATES_DIR/var/cache" -name '*.rpm' -print0 || :
xargs -0 -r ln -f -t "$DOM0_UPDATES_DIR/packages/"
if ls "$DOM0_UPDATES_DIR"/packages/*.rpm > /dev/null 2>&1; then
cmd="/usr/lib/qubes/qrexec-client-vm dom0 qubes.ReceiveUpdates /usr/lib/qubes/qfile-agent"
qrexec_exit_code=0
$cmd "$DOM0_UPDATES_DIR"/packages/*.rpm || { qrexec_exit_code=$? ; true; };
if [ ! "$qrexec_exit_code" = "0" ]; then
echo "'$cmd $DOM0_UPDATES_DIR/packages/*.rpm' failed with exit code ${qrexec_exit_code}!" >&2
exit "$qrexec_exit_code"
fi
else
echo "No packages downloaded"
fi
it should be:
find "$DOM0_UPDATES_DIR/var/cache" -name '*.rpm' -print0 |\
xargs -0 -r ln -f -t "$DOM0_UPDATES_DIR/packages/" || :
@marmarek same error, maybe try mirage-firewall as updatevm temporary?
dom0
sudo bash -x qubes-dom0-update dunst
++ qubes-prefs --force-root updatevm
+ UPDATEVM=sys-whonix
+ UPDATES_STAT_FILE=/var/lib/qubes/updates/dom0-updates-available
+ '[' -z sys-whonix ']'
+ '[' dunst = --help ']'
+ PKGS=()
+ YUM_OPTS=()
+ GUI=
+ CHECK_ONLY=
+ ALL_OPTS=("${@}")
+ YUM_ACTION=
+ QVMRUN_OPTS=
+ CLEAN=
+ TEMPLATE=
+ TEMPLATE_BACKUP=
+ '[' 1 -gt 0 ']'
+ case "$1" in
+ PKGS+=("${1}")
+ '[' -z '' ']'
+ YUM_ACTION=install
+ shift
+ '[' 0 -gt 0 ']'
+ '[' install == reinstall ']'
+ '[' install == upgrade ']'
+ '[' install == upgrade-to ']'
+ '[' install == downgrade ']'
+ '[' install == search ']'
+ '[' install == info ']'
+ TEMPLATE_EXCLUDE_OPTS=("--exclude=$(rpm -qa --qf '%{NAME},' qubes-template-\*|head -c -1)")
++ rpm -qa --qf '%{NAME},' 'qubes-template-*'
++ head -c -1
+ YUM_OPTS=("${TEMPLATE_EXCLUDE_OPTS[@]}" "${YUM_OPTS[@]}")
+ ALL_OPTS=("${TEMPLATE_EXCLUDE_OPTS[@]}" "${ALL_OPTS[@]}")
++ id -ur
+ ID=0
+ '[' 0 '!=' 0 -a -z '' -a -z '' ']'
+ '[' '' == 1 -a 1 -ne 0 ']'
+ '[' '' == 1 ']'
+ '[' '' '!=' 1 ']'
+ QVMRUN_OPTS=--nogui
+ '[' '' == 1 ']'
+ '[' -n '' ']'
+ rm -f /var/lib/qubes/updates/errors
+ echo 'Using sys-whonix as UpdateVM to download updates for Dom0; this may take some time...'
Using sys-whonix as UpdateVM to download updates for Dom0; this may take some time...
+ qvm-run --nogui -q -u root sys-whonix 'mkdir -m 775 -p /var/lib/qubes/dom0-updates/'
+ qvm-run --nogui -q -u root sys-whonix 'chown user:user /var/lib/qubes/dom0-updates/'
+ qvm-run --nogui -q sys-whonix 'rm -rf /var/lib/qubes/dom0-updates/etc'
+ qvm-run --nogui -q --pass-io sys-whonix 'LC_MESSAGES=C tar x -C /var/lib/qubes/dom0-updates 2>&1 | grep -v -E "s in the future"'
+ tar c /var/lib/rpm /etc/yum.repos.d /etc/yum.conf
++ escape_args --exclude=qubes-template-whonix-gw-15,qubes-template-archlinux,qubes-template-fedora-30,qubes-template-buster-minimal,qubes-template-debian-10,qubes-template-whonix-ws-15 dunst
++ local eargs=
++ for arg in '"$@"'
++ printf -v eargs '%s%q ' '' --exclude=qubes-template-whonix-gw-15,qubes-template-archlinux,qubes-template-fedora-30,qubes-template-buster-minimal,qubes-template-debian-10,qubes-template-whonix-ws-15
++ for arg in '"$@"'
++ printf -v eargs '%s%q ' '--exclude=qubes-template-whonix-gw-15\,qubes-template-archlinux\,qubes-template-fedora-30\,qubes-template-buster-minimal\,qubes-template-debian-10\,qubes-template-whonix-ws-15 ' dunst
++ echo '--exclude=qubes-template-whonix-gw-15\,qubes-template-archlinux\,qubes-template-fedora-30\,qubes-template-buster-minimal\,qubes-template-debian-10\,qubes-template-whonix-ws-15 dunst'
+ qvm-run --nogui --pass-io sys-whonix 'script --quiet --return --command '\''/usr/lib/qubes/qubes-download-dom0-updates.sh --doit --nogui --exclude=qubes-template-whonix-gw-15\,qubes-template-archlinux\,qubes-template-fedora-30\,qubes-template-buster-minimal\,qubes-template-debian-10\,qubes-template-whonix-ws-15 dunst'\'' /dev/null'
--> Running transaction check
---> Package dunst.x86_64 0:1.1.0-4.fc24 will be installed
--> Finished Dependency Resolution
dunst-1.1.0-4.fc24.x86_64.rpm | 48 kB 00:00
find: '/var/lib/qubes/dom0-updates/var/cache': No such file or directory
+ RETCODE=0
+ '[' '' == 1 ']'
+ '[' 0 -ne 0 ']'
+ pidof -x qubes-receive-updates
+ '[' -r /var/lib/qubes/updates/errors ']'
+ '[' -z install ']'
+ '[' 1 -gt 0 ']'
+ '[' -n '' ']'
+ dnf --exclude=qubes-template-whonix-gw-15,qubes-template-archlinux,qubes-template-fedora-30,qubes-template-buster-minimal,qubes-template-debian-10,qubes-template-whonix-ws-15 install dunst
Failed to synchronize cache for repo 'qubes-dom0-cached', disabling.
No package dunst available.
Error: Unable to find a match.
+ RETCODE=1
+ '[' -n '' -a 1 -eq 0 ']'
+ '[' -n '' -a -n '' -a x '!=' xNone ']'
sys-whonix
user@host:~$ ls /var/lib/qubes/dom0-updates/packages/
bc-1.06.95-16.fc24.x86_64.rpm dunst-1.1.0-4.fc24.x86_64.rpm
user@host:~$ cat /usr/lib/qubes/qubes-download-dom0-updates.sh
#!/bin/bash
DOM0_UPDATES_DIR=/var/lib/qubes/dom0-updates
GUI=1
CLEAN=0
CHECK_ONLY=0
OPTS="--installroot $DOM0_UPDATES_DIR"
if [ -f "$DOM0_UPDATES_DIR/etc/dnf/dnf.conf" ]; then
OPTS="$OPTS --config=$DOM0_UPDATES_DIR/etc/yum.conf"
elif [ -f "$DOM0_UPDATES_DIR/etc/yum.conf" ]; then
OPTS="$OPTS --config=$DOM0_UPDATES_DIR/etc/yum.conf"
fi
# DNF uses /etc/yum.repos.d, even when --installroot is specified
OPTS="$OPTS --setopt=reposdir=$DOM0_UPDATES_DIR/etc/yum.repos.d"
PKGLIST=()
YUM_ACTION=
export LC_ALL=C
while [ -n "$1" ]; do
case "$1" in
--doit)
# ignore
;;
--nogui)
GUI=0
;;
--gui)
GUI=1
;;
--clean)
CLEAN=1
;;
--check-only)
CHECK_ONLY=1
;;
--action=*)
YUM_ACTION=${1#--action=}
;;
-*)
OPTS="$OPTS $1"
;;
*)
PKGLIST+=( "${1}" )
if [ -z "$YUM_ACTION" ]; then
YUM_ACTION=install
fi
;;
esac
shift
done
if [ -z "$YUM_ACTION" ]; then
YUM_ACTION=upgrade
fi
YUM="yum"
if type dnf >/dev/null 2>&1; then
YUM="dnf --best --allowerasing --noplugins"
else
# salt in dom0 thinks it's using dnf but we only have yum so need to remove extra options
OPTS="${OPTS/--best --allowerasing/}"
fi
if ! [ -d "$DOM0_UPDATES_DIR" ]; then
echo "Dom0 updates dir does not exists: $DOM0_UPDATES_DIR" >&2
exit 1
fi
mkdir -p $DOM0_UPDATES_DIR/etc
if [ -e /etc/debian_version ]; then
# Default rpm configuration on Debian uses ~/.rpmdb for rpm database (as
# rpm isn't native package manager there)
mkdir -p "$DOM0_UPDATES_DIR$HOME"
ln -nsf "$DOM0_UPDATES_DIR/var/lib/rpm" "$DOM0_UPDATES_DIR$HOME/.rpmdb"
fi
# Rebuild rpm database in case of different rpm version
rm -f $DOM0_UPDATES_DIR/var/lib/rpm/__*
rpm --root=$DOM0_UPDATES_DIR --rebuilddb
if [ "$CLEAN" = "1" ]; then
# shellcheck disable=SC2086
$YUM $OPTS clean all
rm -f "$DOM0_UPDATES_DIR"/packages/*
rm -rf "$DOM0_UPDATES_DIR"/var/cache/*
fi
# just check for updates, but don't download any package
if [ ${#PKGLIST[@]} -eq 0 ] && [ "$CHECK_ONLY" = "1" ]; then
echo "Checking for dom0 updates..." >&2
# shellcheck disable=SC2086
UPDATES_FULL=$($YUM $OPTS check-update)
check_update_retcode=$?
if [ "$check_update_retcode" -eq 1 ]; then
# Exit here if yum have reported an error. Exit code 100 isn't an
# error, it's "updates available" info, so check specifically for exit code 1
exit 1
fi
if [ $check_update_retcode -eq 100 ]; then
echo "Available updates: "
echo "$UPDATES_FULL"
exit 100
else
echo "No new updates available"
if [ "$GUI" = 1 ]; then
zenity --info --text="No new updates available"
fi
exit 0
fi
fi
# now, we will download something
YUM_COMMAND="fakeroot $YUM $YUM_ACTION -y --downloadonly"
# check for --downloadonly option - if not supported (Debian), fallback to
# yumdownloader
if ! $YUM --help | grep -q downloadonly; then
if [ "$YUM_ACTION" = "install" ]; then
YUM_COMMAND="yumdownloader --destdir=$DOM0_UPDATES_DIR/packages --resolve"
elif [ "$YUM_ACTION" = "upgrade" ]; then
# shellcheck disable=SC2086
UPDATES_FULL=$($YUM $OPTS check-update "${PKGLIST[@]}")
check_update_retcode=$?
UPDATES_FULL=$(echo "$UPDATES_FULL" | grep -v "^Loaded plugins:\|^Last metadata\|^$")
mapfile -t PKGLIST < <(echo "$UPDATES_FULL" | grep -v "^Obsoleting\|Could not" | cut -f 1 -d ' ')
if [ "$check_update_retcode" -eq 0 ]; then
# exit code 0 means no updates available - regardless of stdout messages
echo "No new updates available"
exit 0
fi
YUM_COMMAND="yumdownloader --destdir=$DOM0_UPDATES_DIR/packages --resolve"
elif [ "$YUM_ACTION" == "list" ] || [ "$YUM_ACTION" == "search" ]; then
# those actions do not download any package, so lack of --downloadonly is irrelevant
YUM_COMMAND="$YUM $YUM_ACTION -y"
elif [ "$YUM_ACTION" == "reinstall" ]; then
# this is just approximation of 'reinstall' action...
mapfile -t PKGLIST < <(rpm --root=$DOM0_UPDATES_DIR -q "${PKGLIST[@]}")
YUM_COMMAND="yumdownloader --destdir=$DOM0_UPDATES_DIR/packages --resolve"
else
echo "ERROR: yum version installed in VM $(hostname) does not suppport --downloadonly option" >&2
echo "ERROR: only 'install' and 'upgrade' actions supported ($YUM_ACTION not)" >&2
if [ "$GUI" = 1 ]; then
zenity --error --text="yum version too old for '$YUM_ACTION' action, see console for details"
fi
exit 1
fi
fi
mkdir -p "$DOM0_UPDATES_DIR/packages"
set -e
if [ "$GUI" = 1 ]; then
( echo "1"
# shellcheck disable=SC2086
$YUM_COMMAND $OPTS "${PKGLIST[@]}"
echo 100 ) | zenity --progress --pulsate --auto-close --auto-kill \
--text="Downloading updates for Dom0, please wait..." --title="Qubes Dom0 updates"
else
# shellcheck disable=SC2086
$YUM_COMMAND $OPTS "${PKGLIST[@]}"
fi
find "$DOM0_UPDATES_DIR/var/cache" -name '*.rpm' -print0 |\
xargs -0 -r ln -f -t "$DOM0_UPDATES_DIR/packages/" || :
if ls "$DOM0_UPDATES_DIR"/packages/*.rpm > /dev/null 2>&1; then
cmd="/usr/lib/qubes/qrexec-client-vm dom0 qubes.ReceiveUpdates /usr/lib/qubes/qfile-agent"
qrexec_exit_code=0
$cmd "$DOM0_UPDATES_DIR"/packages/*.rpm || { qrexec_exit_code=$? ; true; };
if [ ! "$qrexec_exit_code" = "0" ]; then
echo "'$cmd $DOM0_UPDATES_DIR/packages/*.rpm' failed with exit code ${qrexec_exit_code}!" >&2
exit "$qrexec_exit_code"
fi
else
echo "No packages downloaded"
fi
It clearly aborts at that line, while now it should continue to the one below... (the error message about /var/lib/qubes/dom0-updates/var/cache is fine here, || : should just make it not fatal but not hidden).
Just for test, comment out both lines (prepend with #).
@marmarek here you are
dom0
~ - sudo bash -x qubes-dom0-update mc
++ qubes-prefs --force-root updatevm
+ UPDATEVM=sys-whonix
+ UPDATES_STAT_FILE=/var/lib/qubes/updates/dom0-updates-available
+ '[' -z sys-whonix ']'
+ '[' mc = --help ']'
+ PKGS=()
+ YUM_OPTS=()
+ GUI=
+ CHECK_ONLY=
+ ALL_OPTS=("${@}")
+ YUM_ACTION=
+ QVMRUN_OPTS=
+ CLEAN=
+ TEMPLATE=
+ TEMPLATE_BACKUP=
+ '[' 1 -gt 0 ']'
+ case "$1" in
+ PKGS+=("${1}")
+ '[' -z '' ']'
+ YUM_ACTION=install
+ shift
+ '[' 0 -gt 0 ']'
+ '[' install == reinstall ']'
+ '[' install == upgrade ']'
+ '[' install == upgrade-to ']'
+ '[' install == downgrade ']'
+ '[' install == search ']'
+ '[' install == info ']'
+ TEMPLATE_EXCLUDE_OPTS=("--exclude=$(rpm -qa --qf '%{NAME},' qubes-template-\*|head -c -1)")
++ rpm -qa --qf '%{NAME},' 'qubes-template-*'
++ head -c -1
+ YUM_OPTS=("${TEMPLATE_EXCLUDE_OPTS[@]}" "${YUM_OPTS[@]}")
+ ALL_OPTS=("${TEMPLATE_EXCLUDE_OPTS[@]}" "${ALL_OPTS[@]}")
++ id -ur
+ ID=0
+ '[' 0 '!=' 0 -a -z '' -a -z '' ']'
+ '[' '' == 1 -a 1 -ne 0 ']'
+ '[' '' == 1 ']'
+ '[' '' '!=' 1 ']'
+ QVMRUN_OPTS=--nogui
+ '[' '' == 1 ']'
+ '[' -n '' ']'
+ rm -f /var/lib/qubes/updates/errors
+ echo 'Using sys-whonix as UpdateVM to download updates for Dom0; this may take some time...'
Using sys-whonix as UpdateVM to download updates for Dom0; this may take some time...
+ qvm-run --nogui -q -u root sys-whonix 'mkdir -m 775 -p /var/lib/qubes/dom0-updates/'
+ qvm-run --nogui -q -u root sys-whonix 'chown user:user /var/lib/qubes/dom0-updates/'
+ qvm-run --nogui -q sys-whonix 'rm -rf /var/lib/qubes/dom0-updates/etc'
+ qvm-run --nogui -q --pass-io sys-whonix 'LC_MESSAGES=C tar x -C /var/lib/qubes/dom0-updates 2>&1 | grep -v -E "s in the future"'
+ tar c /var/lib/rpm /etc/yum.repos.d /etc/yum.conf
++ escape_args --exclude=qubes-template-whonix-gw-15,qubes-template-archlinux,qubes-template-fedora-30,qubes-template-buster-minimal,qubes-template-debian-10,qubes-template-whonix-ws-15 mc
++ local eargs=
++ for arg in '"$@"'
++ printf -v eargs '%s%q ' '' --exclude=qubes-template-whonix-gw-15,qubes-template-archlinux,qubes-template-fedora-30,qubes-template-buster-minimal,qubes-template-debian-10,qubes-template-whonix-ws-15
++ for arg in '"$@"'
++ printf -v eargs '%s%q ' '--exclude=qubes-template-whonix-gw-15\,qubes-template-archlinux\,qubes-template-fedora-30\,qubes-template-buster-minimal\,qubes-template-debian-10\,qubes-template-whonix-ws-15 ' mc
++ echo '--exclude=qubes-template-whonix-gw-15\,qubes-template-archlinux\,qubes-template-fedora-30\,qubes-template-buster-minimal\,qubes-template-debian-10\,qubes-template-whonix-ws-15 mc'
+ qvm-run --nogui --pass-io sys-whonix 'script --quiet --return --command '\''/usr/lib/qubes/qubes-download-dom0-updates.sh --doit --nogui --exclude=qubes-template-whonix-gw-15\,qubes-template-archlinux\,qubes-template-fedora-30\,qubes-template-buster-minimal\,qubes-template-debian-10\,qubes-template-whonix-ws-15 mc'\'' /dev/null'
--> Running transaction check
---> Package mc.x86_64 1:4.8.19-5.fc25 will be installed
--> Finished Dependency Resolution
mc-4.8.19-5.fc25.x86_64.rpm | 1.9 MB 00:01
+ RETCODE=0
+ '[' '' == 1 ']'
+ '[' 0 -ne 0 ']'
+ pidof -x qubes-receive-updates
+ '[' -r /var/lib/qubes/updates/errors ']'
+ '[' -z install ']'
+ '[' 1 -gt 0 ']'
+ '[' -n '' ']'
+ dnf --exclude=qubes-template-whonix-gw-15,qubes-template-archlinux,qubes-template-fedora-30,qubes-template-buster-minimal,qubes-template-debian-10,qubes-template-whonix-ws-15 install mc
Failed to synchronize cache for repo 'qubes-dom0-cached', disabling.
No package mc available.
Error: Unable to find a match.
+ RETCODE=1
+ '[' -n '' -a 1 -eq 0 ']'
+ '[' -n '' -a -n '' -a x '!=' xNone ']'
sys-whonix
user@host:~$ ls /var/lib/qubes/dom0-updates/packages/
bc-1.06.95-16.fc24.x86_64.rpm mc-4.8.19-5.fc25.x86_64.rpm
dunst-1.1.0-4.fc24.x86_64.rpm redshift-1.11-3.fc25.x86_64.rpm
user@host:~$ cat /usr/lib/qubes/qubes-download-dom0-updates.sh
#find "$DOM0_UPDATES_DIR/var/cache" -name '*.rpm' -print0 |\
# xargs -0 -r ln -f -t "$DOM0_UPDATES_DIR/packages/" || :
if ls "$DOM0_UPDATES_DIR"/packages/*.rpm > /dev/null 2>&1; then
cmd="/usr/lib/qubes/qrexec-client-vm dom0 qubes.ReceiveUpdates /usr/lib/qubes/qfile-agent"
qrexec_exit_code=0
$cmd "$DOM0_UPDATES_DIR"/packages/*.rpm || { qrexec_exit_code=$? ; true; };
if [ ! "$qrexec_exit_code" = "0" ]; then
echo "'$cmd $DOM0_UPDATES_DIR/packages/*.rpm' failed with exit code ${qrexec_exit_code}!" >&2
exit "$qrexec_exit_code"
fi
else
echo "No packages downloaded"
fi