swupd-client icon indicating copy to clipboard operation
swupd-client copied to clipboard

Force execution of "swupd repair" if delta files are corrupted to ensure sanity update.

Open md500 opened this issue 4 years ago • 1 comments

When user tries to update system, when delta files are corrupted,users must consider to execute swupd verify --fix / swupd repair to repair then. Force execution after of n files were not in a pack to automate this step as feature, add it as file config or flag such as swupd update --autofix (command option obviously doesn't exist)

[~] $ sudo swupd update

Password: 
Update started
Preparing to update from 32480 to 32600
Downloading packs for:
 - c-basic
 - cheese
 - clr-network-troubleshooter
 - curl
 - desktop
 - desktop-apps
 - desktop-assets-extras
 - desktop-gnomelibs
 - desktop-locales
 - diffutils
 - dnf
 - dosfstools
 - emacs-x11
 - eog
 - evince
 - evolution
 - file
 - file-roller
 - findutils
 - firefox
 - flatpak
 - flex
 - fonts-basic
 - fuse
 - geary
 - gedit
 - ghostscript
 - gimp
 - git
 - gjs
 - glibc-locale
 - gnome-calculator
 - gnome-characters
 - gnome-color-manager
 - gnome-disk-utility
 - gnome-font-viewer
 - gnome-logs
 - gnome-music
 - gnome-photos
 - gnome-screenshot
 - gnome-system-monitor
 - gnome-todo
 - gnome-weather
 - gparted
 - graphviz
 - gstreamer
 - gvim
 - gzip
 - hardware-bluetooth
 - hardware-printing
 - htop
 - intltool
 - iperf
 - iproute2
 - jq
 - kbd
 - kernel-install
 - kernel-lts2018
 - kernel-lts2018-dkms
 - less
 - lib-imageformat
 - lib-opengl
 - lib-samba
 - libX11client
 - libglib
 - libstdcpp
 - libva-utils
 - linux-firmware
 - linux-firmware-extras
 - linux-lts2018-dev
 - llvm
 - lm-sensors
 - make
 - man-pages
 - minicom
 - nasm
 - nautilus
 - nfs-utils
 - openldap
 - openssh-client
 - openssh-server
 - os-cloudguest-aliyun
 - os-core
 - os-core-plus
 - os-core-update
 - os-core-webproxy
 - p11-kit
 - package-utils
 - parallel
 - parted
 - patch
 - perl-basic
 - pmdk
 - polkit
 - powertop
 - procps-ng
 - pulseaudio
 - pygobject
 - python3-basic
 - samba
 - seahorse
 - smartmontools
 - socat
 - sshfs
 - storage-utils
 - strace
 - sudo
 - sysadmin-basic
 - syslinux
 - thermal_daemon
 - tmux
 - totem
 - unzip
 - vim
 - webkitgtk
 - wget
 - which
 - wpa_supplicant
 - x11-server
 - xfsprogs
 - xz
 - zstd
 [100%]

Finishing packs extraction...
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-d140b5c630bb9c68134226869a9f0c70ed905bdd145245250ac287944cdc0e96-0068356165043f7ed99896b4d476d9336b9622bd22bf2ccf02d2799f36591fa3: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-30f8306819b2c37c6e74821ef05ba55136ba9b0a7398f195157ad759835c9add-23094ba15bcd084ebea0779574916c38e763c1dd99ef89371d37249f4460818b: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-9f287cca0e8921b3878430990cba59d5230f384f429ee0486b5f610b9d1a393d-2323fdde6da04158d2f5656f898b95c5aebbeb3a2939aa096f9a0e8f2e7d1b85: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-775c11064601289aef9a52da31d06a1a7bdb36062e98284670cfc4f38a6805fa-9bafe1091003e684b00e0f14782961b8a16f1b4cac4ca1a676c2ed53c6ee3f4c: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-8b84dad31b7b1702dd7e200c51125eaffb779eb18b196eb8e0790aaddf493a9b-9458a7317622c0c1baffb41ff2e46c4ba9ed3efc4030656d19f5900306d1a2b6: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-7a4ccdeb85819a415aa900d9993013b6d648cfdb0a40baa9c862f3644a502b71-f3cf6f3e0a1dae54096a19bd8667ec2033d1a347130364652cfa51beeae69f6f: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-b417db32f6b64d5707884effb5b4e899acbb386ba410258fc6fbdb261fdb70ad-b7a7bf4158ca09217874acb0fd0051add0ea5899cbc476344340bff66738e43e: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-6748c605fbe2d74cad78daff1cce88caba48d5ba59f15009d78e00c6e926c5d2-2aa412ecc7352f5bd3d3020fe1ab748bf289a0ddc9bad81957ed12630570b14c: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-3bfbc30ad9075ac5df13326abdc6a29bc3c73e53aafaaee7d45991e68be239bb-e0eff8c8f5bc3ebd49a418a518c5edbe0e5758b7d025d43bd752acc86539ce21: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-758d39dfa65bd0b403317482cd2c6cfca0ead28afda9cae02387259b04acf3ee-6c73b17b8b32ef1970d678ecda5cabc79e1e4ebc36761920a253848cb0e0b31e: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-c509fd7e4f0729b92a234e21cea0699f7ba233142e76490f5cfd457fd34e269e-cc0618b2419d25fc9aea64004a54c320e54225fcff68a3a3fbc9ac81bb3cc10c: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-1e69f541e73dc4599c890fda09bca5acdfdf789e5fad83cf02edebefe4c76e60-8301557f68cdc041d7585dbd93a108363ec5c1c2f2cdf3f6ac79b85179d4ffe6: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-6291f0e8659ed69fb813c6e0bec3b6d8d0682e8a529bd477cb95871e7679919f-1fe2fc8bc95cef14d4976d524dd04b808e18d764482236ba754035f826e8ba35: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-aaf53eea66d605f6a1987233657ce4c3e78db935cf7da4f7defbee436c67d4de-56795bbd3aeab408478118a56e97385a93b334b39e34e0b5a2f8a54ae91889fb: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-8ea1adef4928f985ce1d5526f2c4039ea3fb4d6ecc8c19ae3ed27cda694e36f5-97a65bcf00ded8ad6006548836110e671676f5f16c1d448352357578a995c41b: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-b6c20d3de0530e0e450173f89d49172ef36a2e033ef4457fe7bd77ad9ee7673d-2b3eb7fd4981502958b3d605dfa013543a2466969f5c203b335be5a5ac4031a0: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-a3fa5370b1f4ebc9be054ad2aa8748c9292e1cb86ca52985a2424dc62e8aa9fe-9d8f7c462c54c9886a7067063fb0945c27b3f153be5f8dce8345978ae8312487: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-65935b6de293ed234cb27fbf02e406c8ccb8d392f1cbb423e3fbce88c942a845-e30785890990da7258012ab5bf2b09664af9ad50d4c9b93c1d8ba769c58b7820: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-a0adbde417312eaa6562a792eb7e6321d7f68647b5ff5d71b6d8c7e5dcf497f8-cbdea6ff512d15c594ebf38b4fc8bb9f91d8a543c740a20d0ae2b0b26097bbbf: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-68a69c68605b35a7dd76631d53cc361c167d07f00a77f0993646a65e0ca59e88-f81eb255b50e15ae7eef71017a183e9a3959c40e16ee3e3605c61525fa31e67e: 'from' file corrupted on system, consider running 'swupd verify --fix'
Warning: Couldn't use delta file /var/lib/swupd/delta/32480-32590-caa435e047d0f1ad4cb2093ce4254765a06bc814ec6a2ca9c378d6ca63daa945-dc23821a1fa8529a66085bfb44f08dd917e70c64e2a58ae64b4241254725717f: 'from' file corrupted on system, consider running 'swupd verify --fix'

Statistics for going from version 32480 to version 32600:

    changed bundles   : 132
    new bundles       : 0
    deleted bundles   : 0

    changed files     : 6099
    new files         : 53140
    deleted files     : 292

Validate downloaded files
 [100%]

Starting download of remaining update content. This may take a while...
 [100%]

Installing files...
 [100%]

Update was applied
Calling post-update helper scripts
External command: none
External command: pacdiscovery.service: restarted (the binary was updated)
External command: tallow.service: restarted (the binary was updated)
External command: systemd-udevd.service: restarted (the binary was updated)
External command: pacrunner.service: restarted (the binary was updated)
External command: systemd-journald.service: restarted (the binary was updated)
External command: mcelog.service: restarted (the binary was updated)
External command: systemd-resolved.service: restarted (the binary was updated)
External command: (Took 6 seconds)
External command: systemd-timesyncd.service: restarted (the binary was updated)
Update took 1248.1 seconds, 154 MB transferred
21 files were not in a pack
Update successful - System updated from version 32480 to version 32600

This step can will be automated:

[~] $ sudo swupd repair
Diagnosing version 32600
Downloading missing manifests...
    
Checking for corrupt files
 [100%]

Validate downloaded files
 [100%]

Starting download of remaining update content. This may take a while...
 [100%]

Adding any missing files
 -> Missing file: /usr/lib/firmware/rtlwifi/rtl8822befw.bin -> fixed
 [100%]

Repairing corrupt files
 -> Hash mismatch for file: /usr/lib/firmware/rtlwifi/rtl8192eefw.bin -> fixed
 -> Hash mismatch for file: /usr/lib/firmware/rtlwifi/rtl8192eu_nic.bin -> fixed
 -> Hash mismatch for file: /usr/lib/firmware/rtlwifi/rtl8821aefw.bin -> fixed
 [100%]

Removing extraneous files
 [100%]

Inspected 363207 files
  1 file was missing
    1 of 1 missing files were replaced
    0 of 1 missing files were not replaced
  3 files did not match
    3 of 3 files were repaired
    0 of 3 files were not repaired

Calling post-update helper scripts
External command: none

Repair successful

md500 avatar Mar 15 '20 23:03 md500

Just one consideration about this issue. The problem that occurred here is not that delta files were corrupted. The problem was that there were files corrupted in the system before the update process started. We try to apply delta packs and we fail because of that. In this case we download the full file and perform the update successfully. All files that should be updated are updated and should be correct in the system. If they are not, it's a bug and should be reported. In this case, all files listed were not updated in 32600, so this is not a bug.

Besides that, I like your idea on forcing a repair when we know during an update that there are missing or corrupted files in the system. Maybe we should even run that before the update.

otaviobp avatar Mar 16 '20 16:03 otaviobp