Migration tool reports invalid repo data and cancels upgrade but repo seems valid

I am trying to study migration tool in a vm so that I can avoid a fresh install of leap 16 on main OS.
I have leap 15.6 in a vm. For testing, I added packman and a couple of specialized repos, i.e., education and science for leap 15.6. I ran refresh and updates successfully.

I then installed installed openSUSE-repos-leap and did a reboot and refresh. That added “cdn” repos.

I then ran migration tool unsuccessfully. The repos left by migration tool are as below.

om@localhost:~> sudo zypper lr -d
[sudo] password for root: 
#  | Alias                                        | Name                      | Enabled | GPG Check | Refresh | Keep | Priority | Type   | URI                                                                      | Service
---+----------------------------------------------+---------------------------+---------+-----------+---------+------+----------+--------+--------------------------------------------------------------------------+---------
 1 | education                                    | education                 | No      | ----      | ----    | -    |   99     | rpm-md | https://download.opensuse.org/repositories/Education/15.6/               | 
 2 | ftp.gwdg.de-openSUSE_Leap_$releasever        | Packman Repository        | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_15.6/       | 
 3 | openSUSE-Leap-15.6-1                         | openSUSE-Leap-15.6-1      | No      | ----      | ----    | -    |   99     | rpm-md | cd:/?devices=/dev/disk/by-id/ata-QEMU_DVD-ROM_QM00001                    | 
 4 | openSUSE:repo-non-oss                        | repo-non-oss (15.6)       | No      | ----      | ----    | -    |   99     | rpm-md | http://cdn.opensuse.org/distribution/leap/15.6/repo/non-oss/x86_64       | openSUSE
 5 | openSUSE:repo-non-oss-debug                  | repo-non-oss-debug (15.6) | No      | ----      | ----    | -    |   99     | N/A    | http://cdn.opensuse.org/debug/distribution/leap/15.6/repo/non-oss/x86_64 | openSUSE
 6 | openSUSE:repo-openh264                       | repo-openh264 (15.6)      | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://codecs.opensuse.org/openh264/openSUSE_Leap_16                     | openSUSE
 7 | openSUSE:repo-oss                            | repo-oss (15.6)           | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://cdn.opensuse.org/distribution/leap/15.6/repo/oss/x86_64           | openSUSE
 8 | openSUSE:repo-oss-debug                      | repo-oss-debug (15.6)     | No      | ----      | ----    | -    |   99     | N/A    | http://cdn.opensuse.org/debug/distribution/leap/15.6/repo/oss/x86_64     | openSUSE
 9 | openSUSE:repo-oss-source                     | repo-oss-source (15.6)    | No      | ----      | ----    | -    |   99     | N/A    | http://cdn.opensuse.org/source/distribution/leap/15.6/repo/oss           | openSUSE
10 | opensuse-guide.org-openSUSE_Leap_$releasever | Libdvdcss Repository      | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://opensuse-guide.org/repo/openSUSE_Leap_15.6/                       | 
11 | science                                      | science                   | No      | ----      | ----    | -    |   99     | rpm-md | https://download.opensuse.org/repositories/science/15.6/                 | 
tom@localhost:~>

Migration tools stops upgrade saying “Repository ‘repo-oss (15.6)’ is invalid”. See below:

[INFO] Running post-migration task: 10_keepapparmor
[MIGRATION] Drop any SELinux boot options
[MIGRATION] Adding AppArmor boot options
[MIGRATION] Package patterns-base-apparmor is already installed. Skipping.
[INFO] Running post-migration task: 20_ia32
[MIGRATION] Installing packages: grub2-compat-ia32
Refreshing service 'openSUSE'.
Retrieving repository 'repo-oss (15.6)' metadata ....................................................................................[error]
Repository 'repo-oss (15.6)' is invalid.
[openSUSE:repo-oss|http://cdn.opensuse.org/distribution/leap/15.6/repo/oss/x86_64] Failed to retrieve new repository metadata.
History:
 - [openSUSE:repo-oss|http://cdn.opensuse.org/distribution/leap/15.6/repo/oss/x86_64] Repository type can't be determined.
Please check if the URIs defined for this repository are pointing to a valid repository.
Warning: Skipping repository 'repo-oss (15.6)' because of the above error.
Some of the repositories have not been refreshed because of an error.
Loading repository data...
Reading installed packages...
Package 'grub2-compat-ia32' not found.
[MIGRATION][ERROR] Package installation failed. Please check zypper logs or try again manually.
Dry run completed, feel free to continue. 
tom@localhost:~>

repo-oss exists when putting url into web browser. Anyone with any insights?

thanks, tom kosvic

Stop putting x86_64 in the URL’s that is not where the repodata is.

I didn’t manually put x86_64 in anywhere. The original repos were installed by the opensuse 15.6 iso in the vm. The system refreshed and updated fine. The cdn repos were added by openSUSE-repos.

Should I try to remove x86_64 manually from all urls?

tom kosvic

It looks to me that openSUSE-repos-leap added the x86_64 to the urls

@tckosvic then you need to create a bug report… not seen that here. You have had this issue before in your URL’s…

Can you check the version of openSUSE-repos-Leap? zypper if openSUSE-repos-Leap I see a version created in 2024, so one wonders why your the only one?

Did you modify the repos manually at some point?

Never manually modified any repo.

The repo-oss url when viewed in software management actually has a parameter “$basearch” as the last item in it’s description. Apparently this parameter is evaluated as “x86_64”.

openSUSE-repos-leap version installed is: 20250714a450212-lp 160.3.1.

It is the version shipped with the iso.

@tckosvic bug report then…

The x86_64 is not the issue.
I have a Leap 15.6 test VM here.

It had the original set of leap 15.6 repos (from service package) including some additional ones. The opensuse-migration-tool --dry-run did not report any errors.

Then i installed the new service file for Leap 16 which adds the x86_64 to the URL and already prepares the repo structure for Leap 16.

sudo zypper --releasever 16.0 install openSUSE-repos-Leap
test@leaptest:~> zypper lr -d
# | Alias                       | Name                      | Enabled | GPG Check | Refresh | Keep | Priority | Type   | URI                                                                      | Service
--+-----------------------------+---------------------------+---------+-----------+---------+------+----------+--------+--------------------------------------------------------------------------+---------
1 | google-chrome               | google-chrome             | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | https://dl.google.com/linux/chrome/rpm/stable/x86_64                     | 
2 | openSUSE:repo-non-oss       | repo-non-oss (15.6)       | No      | ----      | ----    | -    |   99     | rpm-md | http://cdn.opensuse.org/distribution/leap/15.6/repo/non-oss/x86_64       | openSUSE
3 | openSUSE:repo-non-oss-debug | repo-non-oss-debug (15.6) | No      | ----      | ----    | -    |   99     | N/A    | http://cdn.opensuse.org/debug/distribution/leap/15.6/repo/non-oss/x86_64 | openSUSE
4 | openSUSE:repo-openh264      | repo-openh264 (15.6)      | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://codecs.opensuse.org/openh264/openSUSE_Leap_16                     | openSUSE
5 | openSUSE:repo-oss           | repo-oss (15.6)           | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://cdn.opensuse.org/distribution/leap/15.6/repo/oss/x86_64           | openSUSE
6 | openSUSE:repo-oss-debug     | repo-oss-debug (15.6)     | No      | ----      | ----    | -    |   99     | N/A    | http://cdn.opensuse.org/debug/distribution/leap/15.6/repo/oss/x86_64     | openSUSE
7 | openSUSE:repo-oss-source    | repo-oss-source (15.6)    | No      | ----      | ----    | -    |   99     | rpm-md | http://cdn.opensuse.org/source/distribution/leap/15.6/repo/oss           | openSUSE
test@leaptest:~> 


The opensuse-migration-tool --dry-run still finishes without any error.

So it looks like you hit a bad mirror.

@hui then if you add all the third party unsupported repositories?

The original starting point was with packman and google-chrome. I opted to only keep google-chrome. No issues with the migration.

I wanted to point out, that the issue from tckosvic is not easy to reproduce.

  • original Leap 15.6 installation with repo service package installed (no x86_64 in URL) and third party repos. the opensuse-migration-tool asks to disable third party repos. I opted to disable one and keep one. No migration issue

  • then i altered this test system. Replaced openSUSE-repos-leap from Leap 15.6 with the new Leap 16 version as shown above which adds the x86_64 to the URL. opted to keep one third party repo. No migration issue

What i have done manually in the second part of the test scenario, via sudo zypper --releasever 16.0 install openSUSE-repos-Leap, is done automatically by the opensuse-migartion tool as shown below. I additionally added the science repo like the TO, before starting the test.

So not sure why the TO got that error.

[INFO] Disabling repository: science
Would execute: zypper --non-interactive modifyrepo -d science
Selected option: openSUSE Leap 16.0
Would execute: echo Upgrading to openSUSE Leap 16.0
CPU supports x86_64-v2
Would execute: zypper addrepo -f https://download.opensuse.org/distribution/leap/16.0/repo/oss tmp-migration-tool-repo
Would execute: zypper install --repo tmp-migration-tool-repo -y --force-resolution --from tmp-migration-tool-repo openSUSE-repos-Leap
Would execute: zypper removerepo tmp-migration-tool-repo
Would execute: zypper refresh-services
Would execute: zypper --releasever 16.0 dup -y --force-resolution --allow-vendor-change --download-in-advance

For reference here is my url list initially followed by list after openSUSE-repo-leap.
I cannot accept “bad mirror” as that has never occurred in 25 years of downloading.
The problem is not with 3rd party repo is with basic repo-oss.

tom@localhost:~> sudo zypper lr -d
[sudo] password for root: 
#  | Alias                                        | Name                                                                                        | Enabled | GPG Check | Refresh | Keep | Priority | Type   | URI                                                                     | Service
---+----------------------------------------------+---------------------------------------------------------------------------------------------+---------+-----------+---------+------+----------+--------+-------------------------------------------------------------------------+--------
 1 | education                                    | education                                                                                   | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | https://download.opensuse.org/repositories/Education/15.6/              | 
 2 | ftp.gwdg.de-openSUSE_Leap_$releasever        | Packman Repository                                                                          | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_15.6/      | 
 3 | openSUSE-Leap-15.6-1                         | openSUSE-Leap-15.6-1                                                                        | No      | ----      | ----    | -    |   99     | rpm-md | cd:/?devices=/dev/disk/by-id/ata-QEMU_DVD-ROM_QM00001                   | 
 4 | opensuse-guide.org-openSUSE_Leap_$releasever | Libdvdcss Repository                                                                        | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://opensuse-guide.org/repo/openSUSE_Leap_15.6/                      | 
 5 | repo-backports-debug-update                  | Update repository with updates for openSUSE Leap debuginfo packages from openSUSE Backports | No      | ----      | ----    | -    |   99     | N/A    | http://download.opensuse.org/update/leap/15.6/backports_debug/          | 
 6 | repo-backports-update                        | Update repository of openSUSE Backports                                                     | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://download.opensuse.org/update/leap/15.6/backports/                | 
 7 | repo-debug                                   | Debug Repository                                                                            | No      | ----      | ----    | -    |   99     | N/A    | http://download.opensuse.org/debug/distribution/leap/15.6/repo/oss/     | 
 8 | repo-debug-non-oss                           | Debug Repository (Non-OSS)                                                                  | No      | ----      | ----    | -    |   99     | N/A    | http://download.opensuse.org/debug/distribution/leap/15.6/repo/non-oss/ | 
 9 | repo-debug-update                            | Update Repository (Debug)                                                                   | No      | ----      | ----    | -    |   99     | N/A    | http://download.opensuse.org/debug/update/leap/15.6/oss/                | 
10 | repo-debug-update-non-oss                    | Update Repository (Debug, Non-OSS)                                                          | No      | ----      | ----    | -    |   99     | N/A    | http://download.opensuse.org/debug/update/leap/15.6/non-oss/            | 
11 | repo-non-oss                                 | Non-OSS Repository                                                                          | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://download.opensuse.org/distribution/leap/15.6/repo/non-oss/       | 
12 | repo-openh264                                | Open H.264 Codec (openSUSE Leap)                                                            | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://codecs.opensuse.org/openh264/openSUSE_Leap/                      | 
13 | repo-oss                                     | Main Repository                                                                             | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://download.opensuse.org/distribution/leap/15.6/repo/oss/           | 
14 | repo-sle-debug-update                        | Update repository with debuginfo for updates from SUSE Linux Enterprise 15                  | No      | ----      | ----    | -    |   99     | N/A    | http://download.opensuse.org/debug/update/leap/15.6/sle/                | 
15 | repo-sle-update                              | Update repository with updates from SUSE Linux Enterprise 15                                | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://download.opensuse.org/update/leap/15.6/sle/                      | 
16 | repo-source                                  | Source Repository                                                                           | No      | ----      | ----    | -    |   99     | N/A    | http://download.opensuse.org/source/distribution/leap/15.6/repo/oss/    | 
17 | repo-update                                  | Main Update Repository                                                                      | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://download.opensuse.org/update/leap/15.6/oss                       | 
18 | repo-update-non-oss                          | Update Repository (Non-Oss)                                                                 | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://download.opensuse.org/update/leap/15.6/non-oss/                  | 
19 | science                                      | science                                                                                     | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | https://download.opensuse.org/repositories/science/15.6/                | 
tom@localhost:~> 

Here is repo list after openSUSE-repos-leap is added anbd a reboot is done:

tom@localhost:~> sudo zypper lr -d
[sudo] password for root: 
#  | Alias                                        | Name                          | Enabled | GPG Check | Refresh | Keep | Priority | Type   | URI                                                                                  | Service
---+----------------------------------------------+-------------------------------+---------+-----------+---------+------+----------+--------+--------------------------------------------------------------------------------------+---------
 1 | education                                    | education                     | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | https://download.opensuse.org/repositories/Education/15.6/                           | 
 2 | ftp.gwdg.de-openSUSE_Leap_$releasever        | Packman Repository            | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_15.6/                   | 
 3 | openSUSE-Leap-15.6-1                         | openSUSE-Leap-15.6-1          | No      | ----      | ----    | -    |   99     | rpm-md | cd:/?devices=/dev/disk/by-id/ata-QEMU_DVD-ROM_QM00001                                | 
 4 | openSUSE:repo-non-oss                        | repo-non-oss (15.6)           | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://cdn.opensuse.org/distribution/leap/15.6/repo/non-oss?mediahandler=curl2       | openSUSE
 5 | openSUSE:repo-non-oss-debug                  | repo-non-oss-debug (15.6)     | No      | ----      | ----    | -    |   99     | N/A    | http://cdn.opensuse.org/debug/distribution/leap/15.6/repo/non-oss?mediahandler=curl2 | openSUSE
 6 | openSUSE:repo-openh264                       | repo-openh264 (15.6)          | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://codecs.opensuse.org/openh264/openSUSE_Leap?mediahandler=curl2                 | openSUSE
 7 | openSUSE:repo-oss                            | repo-oss (15.6)               | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://cdn.opensuse.org/distribution/leap/15.6/repo/oss?mediahandler=curl2           | openSUSE
 8 | openSUSE:repo-oss-debug                      | repo-oss-debug (15.6)         | No      | ----      | ----    | -    |   99     | N/A    | http://cdn.opensuse.org/debug/distribution/leap/15.6/repo/oss?mediahandler=curl2     | openSUSE
 9 | openSUSE:repo-oss-source                     | repo-oss-source (15.6)        | No      | ----      | ----    | -    |   99     | N/A    | http://cdn.opensuse.org/source/distribution/leap/15.6/repo/oss?mediahandler=curl2    | openSUSE
10 | openSUSE:update-backports                    | update-backports (15.6)       | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://cdn.opensuse.org/update/leap/15.6/backports?mediahandler=curl2                | openSUSE
11 | openSUSE:update-backports-debug              | update-backports-debug (15.6) | No      | ----      | ----    | -    |   99     | N/A    | http://cdn.opensuse.org/update/leap/15.6/backports_debug?mediahandler=curl2          | openSUSE
12 | openSUSE:update-non-oss                      | update-non-oss (15.6)         | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://cdn.opensuse.org/update/leap/15.6/non-oss?mediahandler=curl2                  | openSUSE
13 | openSUSE:update-non-oss-debug                | update-non-oss-debug (15.6)   | No      | ----      | ----    | -    |   99     | N/A    | http://cdn.opensuse.org/debug/update/leap/15.6/non-oss?mediahandler=curl2            | openSUSE
14 | openSUSE:update-oss                          | update-oss (15.6)             | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://cdn.opensuse.org/update/leap/15.6/oss?mediahandler=curl2                      | openSUSE
15 | openSUSE:update-oss-debug                    | update-oss-debug (15.6)       | No      | ----      | ----    | -    |   99     | N/A    | http://cdn.opensuse.org/debug/update/leap/15.6/oss?mediahandler=curl2                | openSUSE
16 | openSUSE:update-sle                          | update-sle (15.6)             | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://cdn.opensuse.org/update/leap/15.6/sle?mediahandler=curl2                      | openSUSE
17 | openSUSE:update-sle-debug                    | update-sle-debug (15.6)       | No      | ----      | ----    | -    |   99     | N/A    | http://cdn.opensuse.org/debug/update/leap/15.6/sle?mediahandler=curl2                | openSUSE
18 | opensuse-guide.org-openSUSE_Leap_$releasever | Libdvdcss Repository          | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://opensuse-guide.org/repo/openSUSE_Leap_15.6/                                   | 
19 | science                                      | science                       | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | https://download.opensuse.org/repositories/science/15.6/                             | 
tom@localhost:~> 

I will run “sudo zypper --releasever 16.0 install openSUSE-repos-Leap” to update the cdn repos to leap 16. The I will try migration tool again.

thanks, tom kosvic

But @malcolmlewis comment, regarding the service package and third party repos, made me have a second look at the TOs repolist.

This is not the service package provided by Leap 15.6. Something does not match in the story (and your VM setup).

Recreate your VM with the openSUSE-repos-Leap-20250604.94835c9-lp156.2.9.1 from the Leap 15.6 repo.

There is no need to add the openSUSE-repos-Leap package from Leap 16 as you did. The opensuse-migration-tool is adding the correct need repos for the migration.

Even if you can’t accept it. Bad mirrors are common and happen daily as this is reality with syncing of big amount of data.

I ran:

sudo zypper --releasever 16.0 install openSUSE-repos-Leap

I then ran opensuse-migration-tool and the dry run fully completed. See below:

[INFO] Running post-migration task: 10_keepapparmor
[MIGRATION] Drop any SELinux boot options
[MIGRATION] Adding AppArmor boot options
[MIGRATION] Package patterns-base-apparmor is already installed. Skipping.
Dry run completed, feel free to continue. 
tom@localhost:~>

How do I get past “dry run” and then do the upgrade? dry-run just keep repeating over and over even though it is not on the commandline as an option.

thanks, tom kosvic

Checking here. The repos added by the openSUSE service all have that “x86_64” in their urls.

You perform the migration (as described in the SDB) via
sudo opensuse-migration-tool

You may first close your terminal or restart your session to have a clean cache/buffer.

If I run sudo opensuse-migration-tool, it just stops at “Dry run completed, feel free to continue”.
Running command again stops at same place.