Home Wiki > SDB:Vendor change update
Sign up | Login

SDB:Vendor change update

tagline: From openSUSE

This article explains vendor stickiness concept and provides information about how to override the default behaviour.

Overview

Version: 11.2+The following applies to openSUSE starting from 11.2 release.

The package manager Zypp uses the vendor stickyness concept. This means that when you update your system, already installed packages will not be updated to a newer version, if the newer version is provided by a different vendor.

Advantages of vendor stickyness:

  • You don't risk accidentally replacing stable versions of installed packages with experimental versions from a different repository when updating.
  • You won't risk packages ping-ponging between different repositories every time you update, when the same package exists in more than one repository.

Disadvantages of vendor stickyness:

  • Available updates requiring a vendor change are somewhat hidden in YaST
  • Updating/changing a package to a different vendor requires a bit more work
  • Now and then the package manager will ask you if you want to allow vendor change, which can be annoying, scary or confusing.

Performing Vendor change updates

These are the different methods you can use to perform vendor change updates.

Single package Vendor change

Using YaST

Search for the package you want to update, and then go to the Versions tab and select the version you want to install.

Yast-vendor-package.png

Using zypper

Install the package with zypper specifying the version you want, example:

zypper install 'amarok=2.3.1'

Or by specifying a repository:

zypper install --from [repository] [package]

Full repository Vendor change

Using YaST

If you want to switch all installed packages to the versions in a specific repository, open the Repositories tab, select the desired repository and click on Switch system packages to the versions in this repository

Yast-vendor-repo.png

Using zypper

You can switch vendor for all packages in a repository using zypper too:

zypper dup --from [repository]

Allowing Vendor change in general

Allowing Vendor change for selected repositories

You can define a list of repositories having different "vendors" as equivalent by creating a file in the /etc/zypp/vendors.d/ directory with a similar content:

[main]

vendors = suse,opensuse,obs://build.suse.de,Packman,http://packman.links2linux.de

You can find the vendor with YaST ("Versions" tab) or the command line "zypper if <package>".

  • You can use any file name, but each file in this directory reflects a group of equivalent vendors.
  • Libzypp makes an string comparision (like strncmp, case-insensitive) whereas the beginning of the strings are compared only.e.G. vendor "opensuse11.0" is compatible to "openSUSE".

Disabling Vendor stickiness

If you wish you can disable vendor stickyness completely - in this case the package manager will not ask permission to change vendor for packages, and updating will just install whatever package has the highest version number, regardless of where it comes from.

In /etc/zypp/zypp.conf set

solver.allowVendorChange = true

Now zypper up will install the newest versions available from any vendor. And YaST will mark packages where an update is available with blue text, even if the update is from a different vendor.