Discover incompatible with new mirrorlist feature: repository has no or invalid url defined

After the latest update (zypper dup) of my Tumbleweed system I changed the repo files and replaced the baseurl by mirrorlist as recommended. For example my repo-non-oss repository looks like this:

[repo-non-oss]
name=openSUSE-Tumbleweed-Non-Oss
enabled=1
autorefresh=1
mirrorlist=http://download.opensuse.org/tumbleweed/repo/non-oss/?mirrorlist
gpgkey=http://download.opensuse.org/tumbleweed/repo/non-oss/repodata/repomd.xml.key
path=/
type=rpm-md
keeppackages=0

after a restart and zypper refresh i tried o open discover to update my flatpacks and got greeted with this error message:

repo-non-oss: Repository has no or invalid url defined

I think you need to install rpm-repos-openSUSE-Tumbleweed

The description says it’s for PackageKit.

rpm-repos-openSUSE-Tumbleweed - openSUSE Tumbleweed package repositories

openSUSE Tumbleweed package repository files for DNF and PackageKit.

I would be cautious with changing baseurl to mirrorlist. Have a small read here:
https://bugzilla.opensuse.org/show_bug.cgi?id=1244040

1 Like

You do not to replace baseurl with mirrorlist. zypper will by default request the same mirrorlist using the same $baseurl?mirrorlist URL.

I am afraid this replacement was caused by misunderstanding and rushed upon and will cause more issues in the future.

Which will result in exactly the same repository definition without baseurl.

1 Like

I see thank you. I just reverted mirrorlist back to baseurl (and removed the ?mirrorlist suffix)

rpm-repos-openSUSE-Tumbleweed is for PackageKit.

rpm-repos-openSUSE-Tumbleweed

openSUSE Tumbleweed package repository files for DNF and PackageKit.

/etc/yum.repos.d
/etc/yum.repos.d/opensuse-tumbleweed-non-oss.repo
/etc/yum.repos.d/opensuse-tumbleweed-oss.repo
/etc/yum.repos.d/opensuse-tumbleweed-update.repo

4 files total

I’m pretty sure that zypper doesn’t use these at all. The old pros will have to chime in. Here’s the OSS repo file from it.

[opensuse-tumbleweed-oss]
name=openSUSE Tumbleweed - OSS
baseurl=https://download.opensuse.org/tumbleweed/repo/oss/
#metalink=https://download.opensuse.org/tumbleweed/repo/oss/repodata/repomd.xml.metalink
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-openSUSE-2022
gpgcheck=1

[opensuse-tumbleweed-oss-debuginfo]
name=openSUSE Tumbleweed - OSS - Debug
baseurl=https://download.opensuse.org/tumbleweed/repo/debug/
#metalink=https://download.opensuse.org/tumbleweed/repo/debug/repodata/repomd.xml.metalink
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-openSUSE-2022
gpgcheck=1

[opensuse-tumbleweed-oss-source]
name=openSUSE Tumbleweed - OSS - Source
baseurl=https://download.opensuse.org/tumbleweed/repo/src-oss/
#metalink=https://download.opensuse.org/tumbleweed/repo/src-oss/repodata/repomd.xml.metalink
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-openSUSE-2022
gpgcheck=1

He should probably remove the repo package that is used by zypper. That would remove the repo files so he needs to download it before uninstalling it. That way he can install from the local file and have the official repos again. I think he could use the rpm command to install the TW repo package as long as he has the PackageKit repos.

I’m not sure about that so I played it safe and downloaded the TW repo package and installed it by right clicking on it, then Open With > Yast Software.

I had to delete my edited repos which were probably ok, but I was sick of looking at them and didn’t want to read them all again to make sure they were correct. I installed the TW repo package and it was easy to see which ones were the old ones. The new ones said created just now, and I deleted the old ones.

But the one that starts with “RPM” is for PackageKit.

openSUSE-repos-Tumbleweed is a service that creates the Tumblewed repos that are used by zypper.

The OSS repo file that it creates looks like this.

# Repository 'openSUSE:repo-oss' is maintained by the 'openSUSE' service.
# Manual changes may be overwritten by a service refresh.
# See also 'man zypper', section 'Services'.
[openSUSE:repo-oss]
name=repo-oss
enabled=1
autorefresh=1
baseurl=http://cdn.opensuse.org/tumbleweed/repo/oss
mirrorlist=http://cdn.opensuse.org/tumbleweed/repo/oss/?mirrorlist
gpgkey=http://cdn.opensuse.org/tumbleweed/repo/oss/repodata/repomd.xml.key
service=openSUSE

I learned a lot while trying to figure out what was wrong and I’m sure I still don’t totally understand it. Like the service for zypper is in /etc/zypp/services.d/openSUSE.service, or it looks like it is. It’s not in systemd that I could find. But that’s a whole other rabbit trail.

I was always told, in the old days, do not use different package managers because that’s begging for trouble and you’ll get it. Well, Mageia started using dnf and rpm etc, then you have Discover. It is getting confusing. I think KDE is trying to unify package management with Discover and PackageKit. I don’t know, but it’d be nice to have a universal package manager.

And “overwritten by a service refresh” is exactly what happens, for instance from /var/log/zypp/historyhere I see:

# 2025-06-01 17:03:03 %posttrans(openSUSE-repos-Tumbleweed-20250526.4556805-1.1.x86_64) script output:
# Adding service 'openSUSE'...
# Service 'openSUSE' with URL 'dir:/usr/share/zypp/local/service/openSUSE' already exists. Just updating the settings.
# Service 'openSUSE' has been successfully added.
# URI         : dir:/usr/share/zypp/local/service/openSUSE
# Enabled     : Yes
# Autorefresh : Yes
# Refreshing service 'NVIDIA'.
# Refreshing service 'openSUSE'.
2025-06-01 17:03:04|rurl   |http://cdn.opensuse.org/tumbleweed/repo/oss?mediahandler=curl2|http://cdn.opensuse.org/tumbleweed/repo/oss|
2025-06-01 17:03:04|rurl   |http://cdn.opensuse.org/debug/tumbleweed/repo/oss?mediahandler=curl2|http://cdn.opensuse.org/debug/tumbleweed/repo/oss|
2025-06-01 17:03:04|rurl   |http://cdn.opensuse.org/source/tumbleweed/repo/oss?mediahandler=curl2|http://cdn.opensuse.org/source/tumbleweed/repo/oss|
2025-06-01 17:03:04|rurl   |http://cdn.opensuse.org/tumbleweed/repo/non-oss?mediahandler=curl2|http://cdn.opensuse.org/tumbleweed/repo/non-oss|
2025-06-01 17:03:04|rurl   |http://codecs.opensuse.org/openh264/openSUSE_Tumbleweed?mediahandler=curl2|http://codecs.opensuse.org/openh264/openSUSE_Tumbleweed|
2025-06-01 17:03:05|rurl   |http://cdn.opensuse.org/update/tumbleweed?mediahandler=curl2|http://cdn.opensuse.org/update/tumbleweed|
# All services have been refreshed.

So systems where openSUSE-repos-Tumbleweed is installed should be reverted to a sound repo definition even if a manual change messed up things.

Mine had been renamed and it did not overwrite them. It made new ones with simple names. Look, you’ll have repo-oss or oss-repo, I forgot which. They’re very simple names. Libzypp has been updated (New Tumbleweed snapshot 20250604 has libzypp 17.37.2 → 17.37.3). I’m going to check it out now.

Also, those are zypper repos and the OP needs to get his PackageKit repos working. I was explaining that he might have messed them up and totally new repos may help with any issues he may have created, or the bad mirrors created, but also he needed to install the repos for PackageKit.

How did you get to the idea that there are separate Packagekit repos? That i s a total misperception.

Just guessing - PackageKit supports multiple backends and it is possible than if it finds yum repository definitions it will invoke yum backend.

Hehehe, Andrei, I checked that years ago with only the zypper repos. At the time PackageKit did not work fine (could not do dup), but used those.

Because of the downgrade fiasco. Discover worked when zypper had bad repos. I didn’t even know this package existed.

rpm-repos-openSUSE-Tumbleweed - openSUSE Tumbleweed package repositories

openSUSE Tumbleweed package repository files for DNF and PackageKit.

I also said I wasn’t sure and we needed an old pro to chime in and let us know exactly how it works. I was explaining that these repos work with PackageKit and are different, repo file structure wise.

The OP’s Discover isn’t working and he had edited his repo files. I was explaining that he could reinstall all of the repo files but make sure he downloaded at least the TW repo file so he wouldn’t be locked out of installing anything at all.

Since you’re here, why do zypper and PackageKit share the same database (they do, don’t they?), but have different repo files?

Since reverting to baseurl (completely skipping mirrorlist as it is has no effect when using zypper anyway) zypper and discover work again.

1 Like

You are mistaken. zypper now always tries to fetch mirror list.

Yes but as I understand, zypper looks for a mirrorlist at $baseurl?mirrorlist anyway, even if no mirrorlist is defined

Yes, so it does not skip it. Or maybe it was language problem on my side.

Yes sorry, I meant that i removed the mirrorlist entry from the file but kept the baseurl line

Since they’re both frontencs to rpm

1 Like