Multiple repos for the same package... Which do I choose?

Hi folks,

I was planning to install google-drive-ocamlfuse:

And noticed there were several repos to choose from. Being new to Opensuse, I was just wondering what’s best practice? Is it simply a matter of choosing which versions one wants or are there other considerations? Thanks.

Just get the version you want. Note if pulling from a personal repo rather then the official repos then best to not keep that repo active

Thanks. I’ll do that and deactivate. Curious as to your reasons?

Because there may be much more then the package you want on such a repo. And a zypper up might then replace another package you have from the standard repo for one of that special repo. It is not sure that you want that.

So better disable it, and sometimes look if your package has a newer version there, then enable, update and disable again.

I suggest to ultimately decide according to the ratio of the number of packages and the number of build errors for individual repos. But first to make it simpler, let’s cherry-pick only those repos providing the newest version of google-drive-ocamlfuse pkg: **devel:languages:haxe, ****devel:languages:ocaml, ****home:onthewings and ****home:sleep_walker:aggregate.
Now, click on those respective repos to get redirected from to site. You find yourself on the overview page of the google-drive-ocamlfuse pkg. On top of the page, click on the repo name to move to the overview page of the repo. There, you can see how many pkgs the repo contains and a red sign with how many build errors the repo is plagued with.

Now a simple math, for every repo calculate: <number of packages> divided by <number of build errors>. Then arrange those repos from the highest to the lowest number:

Repository # of packages # of build errors Ratio
devel:languages:ocaml 195 80 2,4375
home:sleep_walker:aggregate 86 71 1,21126760563
home:onthewings 5 15 0,333333333333
devel:languages:haxe 3 11 0,272727272727

I consider the most favourable <# of pkgs>/<# of build errors> ratio indicative of the overall quality of repo.

Why not just lower the priority of that new repo? Default priority is 99, so lets add the new repo with a higher number for priority (which actually means lower priority) and thus only the pkgs non-existing in standard repos will be pulled in from the new repo. Pkgs existing in both the standard and the new repo will be prioritized in a way that only the packages from the std repos will be installed and updated:

When adding a new repo:

david@atronach-opensuse:~> LANG=c sudo zypper addrepo --refresh --priority 100 --name "OCaml-related pkgs" devel-languages-ocaml
Adding repository 'devel-languages-ocaml' .....................................................................................[done]
Repository 'devel-languages-ocaml' successfully added

URI         :
Enabled     : Yes
GPG Check   : Yes
Autorefresh : Yes
Priority    : 100 (lowered priority)

Repository priorities in effect:                                                                     (See 'zypper lr -P' for details)
      98 (raised priority)  :  3 repositories
      99 (default priority) :  6 repositories
     100 (lowered priority) :  7 repositories

Or when modifying an existing repo:

david@atronach-opensuse:~> LANG=c sudo zypper modifyrepo --priority 100 devel-languages-ocaml
Repository 'devel-languages-ocaml' priority has been set to 100.

This way, millstonepoet doesn’t have to be bothered with disabling and enabling repo everytime he wants to install something from it and pkgs from std repos will be protected from overwriting with pkgs of the same name from the new repo.

Moreover, by default Zypp is configured with the vendor stickiness rule so packages won’t be “jumping” from one vendor to another during installation or updating. So the priority thing isn’t actually required. But if he would like to disable vendor stickiness in /etc/zypp/zypp.conf by uncommenting and changing solver.allowVendorChange = false -> true and solver.dupAllowVendorChange = false -> true, he’s still covered by priorities.

Finally, there’s a good video about Zypp priorities from a SUSE developer and a discussion thread around it: ​

I know there are more sophisticated ways to do reach your goal with zypper. I prefer the one with disabling (BTW, at the moment I have only Packman as non-official and that I leave that enabled). I am already glad when people, after using a 1-click, have the simple idea of disabeing the repo.