Cannot update tumbleweed

Hi!

I migrated to OpenSuse Tumbleweed in 2018 and haven’t touched the system since then. On September 5, I wanted to update to the latest packages, ran zypper dup and everything is ok before installing the packages. But not a single package is installed (but they are removed, they have already lost yast):

In cache unrar-5.9.4-2.4.x86_64.rpm (1914/1914), 153.7 KiB (325.8 KiB unpacked)
Checking for file conflicts: …[done]
( 1/2100) Installing: Mesa-KHR-devel-20.1.7-263.1.x86_64 …[error]
Installation of Mesa-KHR-devel-20.1.7-263.1.x86_64 failed:
Error: Subprocess failed. Error: RPM failed: error: unpacking of archive failed: cpio: Bad magic
*error: Mesa-KHR-devel-20.1.7-263.1.x86_64: install failed

*Suspect that the problem is related to the fact that current packages use zstd instead of bzip, but I do not understand how to fix the situation.

Maybe update zypper and rpm before you update your system?

Yes, that could help.

Not updated for about two years is a bit long for e “rolling release”. It may have rolled too far to still have enough connections with the past.

Lately found a few years old TW not updated ever since. My conclusion: Install fresh on / and keep /home. Not that complicated during the install process…

I have a Tumbleweed system that has not been updated for several years. And it has not been booted for several years.

I would never attempt to update that. Yes, a fresh install (keeping “/home” which is a separate partition) is the way to go.

It is not just the change of rpm compression. A while back, the rpm database format was changed. And if you updated around the time of that change, it would have reformatted your database to the new format. But the window for that change has probably passed by now.

I do have a system that I only update every two weeks. And that has been working fine. But 2 years is a bit long.

Yes, I would like to try to revive the system before reinstalling. Can you tell me how to update rpm and zypper separately? Attempts to install packages from the cache have failed:
/var/cache/zypp/packages/OSS/x86_64 # rpm -ivh rpm-4.15.1-7.2.x86_64.rpm
Verifying… ################################# [100%]
Preparing… ################################# [100%]

  • file /bin/rpm from install of rpm-4.15.1-7.2.x86_64 conflicts with file from package rpm-4.14.2.1-2.1.x86_64*
  • file /usr/bin/gendiff from install of rpm-4.15.1-7.2.x86_64 conflicts with file from package rpm-4.14.2.1-2.1.x86_64

    ** file /usr/share/man/man8/rpm.8.gz from install of rpm-4.15.1-7.2.x86_64 conflicts with file from package rpm-4.14.2.1-2.1.x86_64*
  • file /usr/share/man/man8/rpmbuild.8.gz from install of rpm-4.15.1-7.2.x86_64 conflicts with file from package rpm-4.14.2.1-2.1.x86_64*
  • file /usr/share/man/man8/rpmsign.8.gz from install of rpm-4.15.1-7.2.x86_64 conflicts with file from package rpm-4.14.2.1-2.1.x86_64

*/var/cache/zypp/packages/OSS/x86_64 # rpm -ivh zypper-1.14.38-1.1.x86_64.rpm
error: Failed dependencies:

  • libc.so.6(GLIBC_2.28)(64bit) is needed by zypper-1.14.38-1.1.x86_64*
  • libstdc++.so.6(GLIBCXX_3.4.26)(64bit) is needed by zypper-1.14.38-1.1.x86_64*
  • libzypp >= 17.24.2 is needed by zypper-1.14.38-1.1.x86_64*
  • libzypp.so.1722()(64bit) is needed by zypper-1.14.38-1.1.x86_64*
  • libzypp.so.1722(ZYPP_plain)(64bit) is needed by zypper-1.14.38-1.1.x86_64*
  • rpmlib(PayloadIsZstd) <= 5.4.18-1 is needed by zypper-1.14.38-1.1.x86_64*

For my normal updating, I use:


zypper up libsolv-tools libzypp zypper rpm
zypper dup

So I update rpm and zypper before doing anything else. However, I am doubtful even that will work on a badly out-of-date Tumbleweed.

If I really wanted to update my old out-of-date Tumbleweed, here’s what I would try:

(1) Boot from recent Tumbleweed, such as a current live media.
(2) Mount the system to be updated:


mount /dev/sdX /mnt

That mounts just the root file system, and you have to fill in the details (what to use for “/dev/sdX”)

And then


mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
mount --bind /proc /mnt/proc

Next, mount everything else that is needed


chroot /mnt
mount -a
exit

that should mount everything else, including any “btrfs” subvolumes. The “exit” merely leave chroot mode.

Check whether everything seems to be properly mounted.

And then, try to update with:


zypper --root /mnt dup

This uses the “zypper”, “rpm” from the up-to-date system that you booted, in order to update the mounted system.

It can still go wrong, and is still not guaranteed for your very old Tumbleweed. But it has a better chance of succeeding than what you tried to do.

If you try this, let us know how it turned out.

zypper dup would fail with lots of:
:

# rpm output: 
# error: unpacking of archive failed: cpio: Bad magic 
# error: MozillaFirefox-branding-openSUSE-68-2.2.x86_64: install failed 
# error: MozillaFirefox-branding-openSUSE-45-4.2.x86_64: erase skipped
  • booted current Tumbleweed
  • mounted old system at /mnt
  • ran ‘zypper --root /mnt/ dup’
  • reinstalled boot loader
  • done.:wink:
3400G:~ # journalctl -b 0 --directory /mnt/var/log/journal/ -u init.scope --grep Reached
-- Logs begin at Tue 2019-04-23 09:17:46 CEST, end at Wed 2020-11-11 16:42:03 CET. --
Nov 11 16:35:55 localhost systemd[1]: Reached target Local Encrypted Volumes.
Nov 11 16:35:55 localhost systemd[1]: Reached target Paths.
Nov 11 16:35:56 localhost systemd[1]: Reached target Local File Systems (Pre).
Nov 11 16:35:56 localhost systemd[1]: Reached target Local File Systems.
Nov 11 16:35:56 localhost systemd[1]: Reached target System Initialization.
Nov 11 16:35:56 localhost systemd[1]: Reached target Basic System.
Nov 11 16:35:56 localhost systemd[1]: Reached target Remote File Systems (Pre).
Nov 11 16:35:56 localhost systemd[1]: Reached target Remote File Systems.
Nov 11 16:35:56 localhost systemd[1]: Reached target Initrd Root Device.
Nov 11 16:35:56 localhost systemd[1]: Reached target Initrd Root File System.
Nov 11 16:35:56 localhost systemd[1]: Reached target Initrd File Systems.
Nov 11 16:35:56 localhost systemd[1]: Reached target Initrd Default Target.
Nov 11 16:35:57 localhost systemd[1]: Reached target Switch Root.
Nov 11 16:35:57 linux-pakc systemd[1]: Reached target Local File Systems (Pre).
Nov 11 16:35:58 linux-pakc systemd[1]: Reached target Local File Systems.
Nov 11 16:35:59 linux-pakc systemd[1]: Reached target System Initialization.
Nov 11 16:35:59 linux-pakc systemd[1]: Reached target Paths.
Nov 11 16:35:59 linux-pakc systemd[1]: Reached target Sockets.
Nov 11 16:35:59 linux-pakc systemd[1]: Reached target Basic System.
Nov 11 16:35:59 linux-pakc systemd[1]: Reached target Sound Card.
Nov 11 16:35:59 linux-pakc systemd[1]: Reached target Host and Network Name Lookups.
Nov 11 16:35:59 linux-pakc systemd[1]: Reached target User and Group Name Lookups.
Nov 11 16:35:59 linux-pakc systemd[1]: Reached target Network (Pre).
Nov 11 16:36:29 linux-pakc systemd[1]: Reached target Network.
Nov 11 16:36:29 linux-pakc systemd[1]: Reached target Remote File Systems.
Nov 11 16:36:29 linux-pakc systemd[1]: Reached target System Time Synchronized.
Nov 11 16:36:29 linux-pakc systemd[1]: Reached target Timers.
Nov 11 16:36:29 linux-pakc systemd[1]: Reached target Login Prompts.
Nov 11 16:36:30 linux-pakc systemd[1]: Reached target Multi-User System.
Nov 11 16:36:30 linux-pakc systemd[1]: Reached target Graphical Interface.
Nov 11 16:42:03 linux-pakc systemd[1]: Reached target Unmount All Filesystems.
Nov 11 16:42:03 linux-pakc systemd[1]: Reached target Shutdown.
Nov 11 16:42:03 linux-pakc systemd[1]: Reached target Final Step.
Nov 11 16:42:03 linux-pakc systemd[1]: Reached target Reboot.
3400G:~ # 

Hostname change occurs with default installation.:wink: