Zypper dup priorities

Wondering about packages jumping to other repositories and back I stumbled upon: https://events.opensuse.org/conference/oSC18/program/proposal/1822

Trying to implement I arrived with:


erlangen:~ # zypper lr -uEP
#  | Alias                            | Name                            | Enabled | GPG Check | Refresh | Priority | URI                                                                               
---+----------------------------------+---------------------------------+---------+-----------+---------+----------+-----------------------------------------------------------------------------------
 2 | Packman                          | Packman                         | Yes     | (r ) Yes  | Yes     |   90     | http://ftp.fau.de/packman/suse/openSUSE_Tumbleweed/                               
 4 | download.opensuse.org-non-oss    | Haupt-Repository (NON-OSS)      | Yes     | (r ) Yes  | Yes     |   99     | http://download.opensuse.org/tumbleweed/repo/non-oss/                             
 5 | download.opensuse.org-oss        | Haupt-Repository (OSS)          | Yes     | (r ) Yes  | Yes     |   99     | http://download.opensuse.org/tumbleweed/repo/oss/                                 
 6 | download.opensuse.org-tumbleweed | Hauptaktualisierungs-Repository | Yes     | (r ) Yes  | Yes     |   99     | http://download.opensuse.org/update/tumbleweed/                                   
 1 | Application_Geo                  | Application_Geo                 | Yes     | (r ) Yes  | Yes     |  100     | http://download.opensuse.org/repositories/Application:/Geo/openSUSE_Tumbleweed/   
 7 | home_seife_testing               | testing (openSUSE_Factory)      | Yes     | (r ) Yes  | Yes     |  100     | http://download.opensuse.org/repositories/home:/seife:/testing/openSUSE_Factory/  
 9 | http-opensuse-guide.org-37124e10 | libdvdcss repository            | Yes     | (r ) Yes  | Yes     |  100     | http://opensuse-guide.org/repo/openSUSE_Tumbleweed/                               
10 | jalbum                           | jalbum                          | Yes     | (  ) No   | Yes     |  100     | http://jalbum.net/download/software/yumrepo/                                      
11 | myrepo                           | myrepo                          | Yes     | ( p) Yes  | Yes     |  100     | dir:///home/karl/Downloads/myrepo                                                 
12 | netbeans                         | netbeans                        | Yes     | (r ) Yes  | Yes     |  100     | https://download.opensuse.org/repositories/home:/Herbster0815/openSUSE_Tumbleweed/
erlangen:~ # 

Any comments?

I wonder what you are after. AFAIK on Tumbleweed zypper dup defaults to zypper dup --no-allow-vendor-change. Thus repo priority has no influence whatsoever on a zypper dup in TW.

1 Like

I understand you want me to look at that movie, but you could tell if there is anything there that denies my statement above that repo prios do not influence zypper dup on TW? And isn’t the Title of this thread meaning something like “How do (repo) priorities influence zypper dup on TW”? Or am I misinterpreting your thread title?

I’m not sure that’s quite right. It should still affect where new packages come from. And there are occasional new packages.

In most cases, where there are new packages they probably only exist in one repo. But a new package might have a dependency that it pulls in. And with those priorities it will pull in that dependency from “packman” if it exists there (which is probably appropriate).

I do it, I’ve set priorities since I have Tumbleweed and it works great

zypper dup --allow-vendor-change + prioritizing repos is superior to zypper dup --no-allow-vendor-change. The movie details why.

I ran the following commands:

zypper dup --no-allow-vendor-change # reported “Nothing to do.”
zypper dup --allow-vendor-change # moved some 30 packages to product repo oss.
zypper dup --no-allow-vendor-change # reported “Nothing to do.”
Thus allowing vendor change on prioritized repos results in a minimal set of changes, which I think is a good thing.

I do not think that is what you proved with this. It shows that allowing Vendor change will install packages from another vendor’s repo. Which is what it allows. And the reason for the switch might be higher version numbers of the packages.

When you want to prove what you want, you have to do allow-vendor-change on a set of repos with all the same priority and again on the same set with different priorities.

BTW, I do not state that using different priorities is bad or useless. I state that it has no consequences for a plain zypper dup (which in TW includes --no-allow-vendor-change). I admit that the special case mentioned by nrickert did not come to my mind though.

I’m pretty sure that depends on what repos you are using and how carefully you have set your priorities.

I actually do use “zypper dup --allow-vendor-change”. However, the only additional repo that I use is “packman” which I have set to priority 98.

Once you add additional repos for special purposes, you have to be careful that you don’t get the wrong library version for software that you are using. My preference is to disable all additional repos other than packman, but to occasionally re-enable to check whether there’s a newer version.

The video advocates simple heuristics:

  • product repos have default priority 99.
  • repos providing enhancements to product packages (e.g. packman) have higher proiority, e.g. 90.
  • repos providing packages not present in the product repos have lower priority, e.g. 100.

I actually do use “zypper dup --allow-vendor-change”. However, the only additional repo that I use is “packman” which I have set to priority 98.
Great to hear that it indeed works.

Once you add additional repos for special purposes, you have to be careful that you don’t get the wrong library version for software that you are using.
I am not sure about this. Anyway I think an enhanced or non product package should or will specify what version it needs. If it doesn’t the product version will do.

My preference is to disable all additional repos other than packman, but to occasionally re-enable to check whether there’s a newer version.
You are even more careful than I am! My objective is to avoid unnecessary questions asked by zypper dup --no-allow-vendor-change. I am confident the current setup will achieve this. Only installing new snapshots will tell whether it actually works.

I’ll just add some experience.

For a while, I experimented with “krypton” (basically unstable Plasma), installed with repo priorities from the live krypton at that time. And there was one package (I don’t remember which) that kept switching back and forth between the standard repos and the unstable repos. So priorities did not solve all problems. The disallowing of vendor change would have prevented that.

I have Tumbleweed since early 2006 and go on with the repo’s priorities, and it has always worked, I also often use Yast to update

I have corrected since 2006 with openSuse and since 2016 with Tumbleweed I have always set repository priorities

Tested both alternatives

  • zypper --verbose dup -D --no-allow-vendor-change: lengthy and pretty confusing prompting
  • zypper --verbose dup -D --allow-vendor-change: no prompting, clear message:
The following product is going to be upgraded:
  openSUSE Tumbleweed  20180528-0 -> 20180529-0

The following product is going to be reinstalled:
  openSUSE NonOSS Addon  2014-0

The following 4 packages are going to change vendor:
  gstreamer-plugins-bad        1.12.5-4.4 -> 1.14.1-1.1  http://packman.links2linux.de -> openSUSE
  gstreamer-plugins-bad-lang   1.12.5-4.4 -> 1.14.1-1.1  http://packman.links2linux.de -> openSUSE
  gstreamer-plugins-ugly       1.12.5-4.2 -> 1.14.1-1.1  http://packman.links2linux.de -> openSUSE
  gstreamer-plugins-ugly-lang  1.12.5-4.2 -> 1.14.1-1.1  http://packman.links2linux.de -> openSUSE

389 packages to upgrade, 6 new, 4  to change vendor.
Overall download size: 192.9 MiB. Already cached: 0 B. After the operation, additional 5.3 MiB will be used.
Continue? [y/n/...? shows all options] (y): 
committing (dry run)
CommitResult  (total 395, done 0, error 0, skipped 395, updateMessages 0)
erlangen:~ # 

Conclusion: Upgrade can wait until packman has caught up.

It might not be a matter of packman catching up. I’m guessing that the software has just moved to the openSUSE repos. It was in packman because of a license/patent restriction, but maybe that restriction has expired. At least that’s my guess.

I went ahead with that change.

I then ran into a file conflict


File /usr/lib64/gstreamer-1.0/libgstdvdspu.so
  from install of
     gstreamer-plugins-bad-1.14.1-1.1.x86_64 (openSUSE-Tumbleweed-Oss)
  conflicts with file from package
     gstreamer-plugins-bad-orig-addon-1.12.5-4.4.x86_64 (@System)

I told it to continue in spite of the conflict. And then, when the update was done, I uninstalled “gstreamer-plugins-bad-orig-addon-1.12.5-4.4.x86_64”.

You are absolutely right. I was too fast. Thanks for notifying!

I went ahead with that change.

I then ran into a file conflict

File /usr/lib64/gstreamer-1.0/libgstdvdspu.so
from install of
gstreamer-plugins-bad-1.14.1-1.1.x86_64 (openSUSE-Tumbleweed-Oss)
conflicts with file from package
gstreamer-plugins-bad-orig-addon-1.12.5-4.4.x86_64 (@System)

I told it to continue in spite of the conflict. And then, when the update was done, I uninstalled “gstreamer-plugins-bad-orig-addon-1.12.5-4.4.x86_64”.

Went ahead with zypper --verbose dup --allow-vendor-change, got notified of vendor change, no questions asked, no file conflicts. Done.

Yesterday I updated through Yast resolving addictions in favor of packman, and today launching zypper dup I have nothing to update

I also had a lightdm addiction that I solved
I tried the commands you posted, and do not give any updates

I now have:

erlangen:~ # zypper se --installed-only --details lightdm gstreamer-plugins-bad gstreamer-plugins-ugly
Loading repository data...
Reading installed packages...

S  | Name                                  | Type    | Version    | Arch   | Repository            
---+---------------------------------------+---------+------------+--------+-----------------------
i+ | gstreamer-plugins-bad                 | package | 1.14.1-1.1 | x86_64 | Haupt-Repository (OSS)
i+ | gstreamer-plugins-bad-lang            | package | 1.14.1-1.1 | noarch | Haupt-Repository (OSS)
i+ | gstreamer-plugins-ugly                | package | 1.14.1-1.1 | x86_64 | Haupt-Repository (OSS)
i+ | gstreamer-plugins-ugly-lang           | package | 1.14.1-1.1 | noarch | Haupt-Repository (OSS)
i+ | gstreamer-plugins-ugly-orig-addon     | package | 1.12.5-4.2 | x86_64 | Packman               
i+ | liblightdm-gobject-1-0                | package | 1.24.1-1.1 | x86_64 | Haupt-Repository (OSS)
i+ | lightdm                               | package | 1.24.1-1.1 | x86_64 | Haupt-Repository (OSS)
i  | lightdm-gtk-greeter                   | package | 2.0.5-1.1  | x86_64 | Haupt-Repository (OSS)
i  | lightdm-gtk-greeter-branding-upstream | package | 2.0.5-1.1  | noarch | Haupt-Repository (OSS)
i  | lightdm-gtk-greeter-lang              | package | 2.0.5-1.1  | noarch | Haupt-Repository (OSS)
i+ | lightdm-lang                          | package | 1.24.1-1.1 | noarch | Haupt-Repository (OSS)

Note: For an extended search including not yet activated remote resources please use 'zypper
search-packages'.
erlangen:~ # 

What is yours?

Strange. I have gnome too.

zypper lr -dRepository priorities are without effect. All enabled repositories share the same priority.

| Alias | Name | Enabled | GPG Check | Refresh | Priority | Type | URI | Service

–±-------------------------------------±----------------------------±--------±----------±--------±---------±-------±------------------------------------------------------------------±-------
1 | google-chrome | google-chrome | Yes | (r ) Yes | Yes | 99 | rpm-md | http://dl.google.com/linux/chrome/rpm/stable/x86_64 |
2 | packman.inode.at-openSUSE_Tumbleweed | Packman Repository | Yes | (r ) Yes | Yes | 99 | rpm-md | http://packman.inode.at/suse/openSUSE_Tumbleweed/ |
3 | repo-debug | openSUSE-Tumbleweed-Debug | No | ---- | ---- | 99 | NONE | http://download.opensuse.org/debug/tumbleweed/repo/oss/ |
4 | repo-non-oss | openSUSE-Tumbleweed-Non-Oss | Yes | (r ) Yes | Yes | 99 | rpm-md | http://download.opensuse.org/tumbleweed/repo/non-oss/ |
5 | repo-oss | openSUSE-Tumbleweed-Oss | Yes | (r ) Yes | Yes | 99 | rpm-md | http://download.opensuse.org/tumbleweed/repo/oss/ |
6 | repo-source | openSUSE-Tumbleweed-Source | No | ---- | ---- | 99 | NONE | http://download.opensuse.org/source/tumbleweed/repo/oss/ |
7 | repo-update | openSUSE-Tumbleweed-Update | Yes | (r ) Yes | Yes | 99 | rpm-md | http://download.opensuse.org/update/tumbleweed/ |
8 | standard | Kernel | No | ---- | ---- | 99 | rpm-md | https://download.opensuse.org/repositories/Kernel:/HEAD/standard/ |

zypper dup --from 2
Loading repository data…
Reading installed packages…
Computing distribution upgrade…
4 Problems:
Problem: problem with installed package gstreamer-plugins-bad-1.14.1-1.1.x86_64
Problem: problem with installed package gstreamer-plugins-ugly-1.14.1-1.1.x86_64
Problem: problem with installed package gstreamer-plugins-ugly-lang-1.14.1-1.1.noarch
Problem: problem with installed package gstreamer-plugins-bad-lang-1.14.1-1.1.noarch

Problem: problem with installed package gstreamer-plugins-bad-1.14.1-1.1.x86_64
Solution 1: Following actions will be done:
deinstallation of gstreamer-plugins-bad-1.14.1-1.1.x86_64
deinstallation of libcheese8-3.28.0-2.1.x86_64
deinstallation of libcheese-gtk25-3.28.0-2.1.x86_64
deinstallation of gnome-control-center-3.28.1-3.1.x86_64
deinstallation of gnome-contacts-3.28.2-1.1.x86_64
deinstallation of libfarstream-0_2-5-0.2.8-2.2.x86_64
deinstallation of libpurple-2.13.0-4.1.x86_64
deinstallation of pidgin-2.13.0-4.1.x86_64
deinstallation of gnome-shell-search-provider-documents-3.28.0-1.1.x86_64
deinstallation of gnome-shell-search-provider-bijiben-3.28.1-2.1.x86_64
deinstallation of gnome-shell-lang-3.28.2+20180509.e1ed4b25e-1.1.noarch
deinstallation of gnome-shell-extensions-common-3.28.1+20180413.6746061-1.1.noarch
deinstallation of gnome-shell-classic-3.28.1+20180413.6746061-1.1.noarch
deinstallation of gnome-shell-calendar-3.28.2+20180509.e1ed4b25e-1.1.x86_64
deinstallation of gdm-3.28.1-3.1.x86_64
deinstallation of gnome-session-default-session-3.28.1-1.1.x86_64
deinstallation of gnome-tweaks-lang-3.28.1-1.1.noarch
deinstallation of gnome-shell-extensions-common-lang-3.28.1+20180413.6746061-1.1.noarch
deinstallation of gnome-session-3.28.1-1.1.x86_64
deinstallation of gdm-lang-3.28.1-3.1.noarch
deinstallation of gdm-branding-openSUSE-42.3-3.1.noarch
deinstallation of patterns-gnome-gnome_x11-20180321-7.1.x86_64
deinstallation of patterns-gnome-gnome_utilities-20180321-7.1.x86_64
deinstallation of patterns-gnome-gnome_office-20180321-7.1.x86_64
deinstallation of patterns-gnome-gnome_imaging-20180321-7.1.x86_64
deinstallation of gnome-session-wayland-3.28.1-1.1.x86_64
deinstallation of gnome-session-lang-3.28.1-1.1.noarch
deinstallation of patterns-gnome-gnome-20180321-7.1.x86_64
Solution 2: keep obsolete gstreamer-plugins-bad-1.14.1-1.1.x86_64

Choose from above solutions by number or skip, retry or cancel [1/2/s/r/c] (c): c