Hi all,
I’ve had some hard-to-understand zypper issues recently. At first, the KDE Plasma “Software Updates” plasmoid started to show update errors because of unresolvable package dependencies. Same then in in bash, with zypper, but not comprehensable why. “sudo zypper update -t patch” failed for a docker package, starting yast and manually (!) select the newer version available from the resp. OpenSuse update repo worked fine. Whyever…
Chatting in #suse put me into the direction that the issue probably came from my “repo landscape”, which is the following:
$> LC_ALL=C zypper lr -d
Repository priorities in effect: (See 'zypper lr -P' for details)
20 (raised priority) : 1 repository
99 (default priority) : 7 repositories
120 (lowered priority) : 2 repositories
130 (lowered priority) : 1 repository
# | Alias | Name | Enabled | GPG Check | Refresh | Priority | Type | URI | Service
---+-------------------------------------+-------------------------------+---------+-----------+---------+----------+--------+--------------------------------------------------------------------------------------+--------
1 | homeSauerland42.3 | homeSauerland42.3 | Yes | (r ) Yes | Yes | 120 | rpm-md | http://download.opensuse.org/repositories/home:/Sauerland/openSUSE_Leap_42.3/ |
2 | homeSauerlandUpdate42.3 | homeSauerlandUpdate42.3 | Yes | (r ) Yes | Yes | 120 | rpm-md | http://download.opensuse.org/repositories/home:/Sauerland/openSUSE_Leap_42.3_Update/ |
3 | http-download.opensuse.org-171beb23 | home:ecsos | Yes | (r ) Yes | Yes | 130 | rpm-md | http://download.opensuse.org/repositories/home:/ecsos/openSUSE_Leap_42.3/ |
4 | http-download.opensuse.org-af03eba6 | openSUSE:Leap:42.3:Update | Yes | (r ) Yes | Yes | 99 | rpm-md | http://download.opensuse.org/repositories/openSUSE:/Leap:/42.3:/Update/standard/ |
5 | mozilla/Leap42.3 | mozilla/Leap42.3 | Yes | (r ) Yes | Yes | 99 | rpm-md | http://download.opensuse.org/repositories/mozilla/openSUSE_Leap_42.3 |
6 | packman | packman | Yes | (r ) Yes | Yes | 20 | rpm-md | http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_42.3/ |
7 | repo-42.3-non-oss | openSUSE-42.3 Non-OSS | Yes | (r ) Yes | Yes | 99 | yast2 | http://download.opensuse.org/distribution/leap/42.3/repo/non-oss/ |
8 | repo-42.3-oss | openSUSE-42.3 OSS | Yes | (r ) Yes | Yes | 99 | yast2 | http://download.opensuse.org/distribution/leap/42.3/repo/oss/ |
9 | repo-42.3-update-non-oss | openSUSE-42.3 Updates Non-OSS | Yes | (r ) Yes | Yes | 99 | rpm-md | http://download.opensuse.org/update/leap/42.3/non-oss/ |
10 | repo-42.3-update-oss | openSUSE-42.3 Updates OSS | Yes | (r ) Yes | Yes | 99 | rpm-md | http://download.opensuse.org/update/leap/42.3/oss |
11 | skype-stable | skype (stable) | Yes | (r ) Yes | Yes | 99 | rpm-md | https://repo.skype.com/rpm/stable/
OF COURSE I’m trying to avoid “unstable” home:… repos whenever possible. But if I specificly need a package not available from std repos, I’m searching for “trustworthy” repos. And I strongly believe that Sauerland and Ecsos are trustworthy
To keep the impact from these other repos as small as possible, I’ve lowered their priority by setting it to a higher value than the usual 99.
Usually works fine, except these last mystic cross-dep errors, which I was good-luck able to solve.
But there are two questions left, which I don’t understand:
- I really want to know why “zypper search -i -r homeSauerland42.3” on my 42.3 box lists “Bluefish” as “i” application from repo homeSauerland42.3. ALTHOUGH there seems to be not a single “Bluefish” pkg installed from repo homeSauerland42.3? Confused …
$> LC_ALL=c zypper info -t application --requires Bluefish
Loading repository data...
Reading installed packages...
Information for application Bluefish:
-------------------------------------
Repository : openSUSE:Leap:42.3:Update
Name : Bluefish
Version :
Arch : noarch
Vendor :
Summary : Text editor with many web and software development extra's
Description :
Bluefish is a powerful editor targeted towards programmers and web developers, with many options to write websites, scripts and programming code. Bluefish supports many
programming and markup languages and has many features, but is still a very fast and lightweight application.
A selection of the features:
If you are an occasional coder who is in need for a simple to learn editor, or a heavy coder who dislikes heavy IDE's like eclipse or netbeans, Bluefish is your editor of
choice!
- Well done syntax highlighting which for example supports languages inside languages (e.g. Javascript inside HTML inside PHP)
- All kind of powerful editor features like auto indenting and auto completion for many functions and libraries in many programming languages
- Project support
- Support for remote files over ftp, sftp, webdav, etc
- Powerful search and replace engine
- Customizable integration of external programs such as lint, make, etc
- Snippets plugin to automate often used code
- Code-aware in-line spell checking
- Zencoding or Emmet support
- Bookmarks panel
Requires : bluefish
$> LC_ALL=C zypper search -i -r homeSauerland42.3
Loading repository data...
Reading installed packages...
S | Name | Summary | Type
---+----------+------------------------------------------------------------+------------
i | Bluefish | Text editor with many web and software development extra's | application
i+ | davfs2 | FUSE-Filesystem to access WebDAV servers | package
$> LC_ALL=C zypper search -s Bluefish
Repository 'packman' is out-of-date. You can run 'zypper refresh' as root to update it.
Loading repository data...
Reading installed packages...
S | Name | Type | Version | Arch | Repository
---+----------+-------------+-------------+--------+--------------------------
i | Bluefish | application | | noarch | openSUSE:Leap:42.3:Update
i | Bluefish | application | | noarch | openSUSE-42.3 OSS
i | Bluefish | application | | noarch | openSUSE-42.3 Updates OSS
i | Bluefish | application | | noarch | homeSauerland42.3
| bluefish | srcpackage | 2.2.10-7.1 | noarch | openSUSE:Leap:42.3:Update
| bluefish | srcpackage | 2.2.10-7.1 | noarch | openSUSE-42.3 Updates OSS
| bluefish | srcpackage | 2.2.10-27.2 | noarch | homeSauerland42.3
i+ | bluefish | package | 2.2.10-7.1 | x86_64 | openSUSE:Leap:42.3:Update
i+ | bluefish | package | 2.2.10-7.1 | x86_64 | openSUSE-42.3 Updates OSS
v | bluefish | package | 2.2.7-5.3 | x86_64 | openSUSE-42.3 OSS
v | bluefish | package | 2.2.10-27.2 | x86_64 | homeSauerland42.3
Second question is more general, about dependencies and repos.
As said, I’ve set the home:… priority to 120. Now I’ve recognized the following thing: E.g. pkgB from repoB needs pkg1 as dependency. pkg1 is not available in OpenSuse std repos, but in repoB and also in repoA. It seems, that zypper takes dependency “pkg1” from first found repo, respecting priority first, but repo sort order or whatever as second criteria.
This leads or at least could lead to unwanted “cross-repo” dependencies. E.g. if “pkg1” is taken by zypper from repoA although it would be available in repoB, I can’t drop repoA anymore, even if the reason for adding repoB might be obsolete in future.
- Is there any way to “stick” a dependency to the repo where the pkg belongs which needs the dependency? A “Try to resolve from same repo first” - option for zypper?
Thanks in advance,
Michael