openSUSE / opi

OBS Package Installer (CLI)
GNU General Public License v3.0
233 stars 20 forks source link

KeyError: <whatever repo the queried package is to be found in> #169

Closed Callisos closed 6 months ago

Callisos commented 6 months ago

When searching for Mesa-dri pkg w/ opi, I get the following error:

> LANG=c opi Mesa-dri
Searching repos for: Mesa-dri
 1. Mesa-dri
 2. Mesa-dri-devel
 3. Mesa-dri-32bit
 4. Mesa-dri-nouveau
 5. Mesa-dri-debuginfo
 6. Mesa-dri-nouveau-32bit
 7. Mesa-drivers-debugsource
 8. Mesa-dri-32bit-debuginfo
 9. Mesa-dri-nouveau-debuginfo
10. Mesa-dri-nouveau-32bit-debuginfo
Pick a number (0 to quit): 1
You have selected package name: Mesa-dri
Traceback (most recent call last):
  File "/usr/bin/opi", line 146, in <module>
    repo_query(args.query)
  File "/usr/bin/opi", line 85, in repo_query
    packages = opi.search_local_repos(selected_pkg_name) + packages
  File "/usr/lib/python3.6/site-packages/opi/__init__.py", line 214, in search_local_repos
    installable['repository'] = repos_by_name[repo_name]
KeyError: 'packman-essentials'

Note I've set a higher priority for the packman-essentials repo than the official one has by default where the Mesa-dri pkg is otherwise available in. So, when disabling the packman-essentials repo, I get the following error for a change:

> LANG=c opi Mesa-dri
Searching repos for: Mesa-dri
 1. Mesa-dri
 2. Mesa-dri-devel
 3. Mesa-dri-32bit
 4. Mesa-dri-nouveau
 5. Mesa-dri-debuginfo
 6. Mesa-dri-nouveau-32bit
 7. Mesa-drivers-debugsource
 8. Mesa-dri-32bit-debuginfo
 9. Mesa-dri-nouveau-debuginfo
10. Mesa-dri-nouveau-32bit-debuginfo
Pick a number (0 to quit): 1
You have selected package name: Mesa-dri
Traceback (most recent call last):
  File "/usr/bin/opi", line 146, in <module>
    repo_query(args.query)
  File "/usr/bin/opi", line 85, in repo_query
    packages = opi.search_local_repos(selected_pkg_name) + packages
  File "/usr/lib/python3.6/site-packages/opi/__init__.py", line 214, in search_local_repos
    installable['repository'] = repos_by_name[repo_name]
KeyError: 'repo-oss'

When disabling the repo-oss, opi starts to work OK for this specific queried pkg. Similarly, when searching for the wine pkg, I get the KeyError: 'wine' line at the end of the opi output and so on.

OS & opi versions:

> lsb-release -d
Description:    openSUSE Leap 15.5
> LANG=c zypper se -is opi
Loading repository data...
Reading installed packages...

S  | Name | Type    | Version           | Arch   | Repository
---+------+---------+-------------------+--------+----------------------
i+ | opi  | package | 4.2.0-bp155.2.9.1 | noarch | repo-backports-update
asdil12 commented 6 months ago

Could you send me the output of this command?

(cd /etc/zypp/repos.d; \ls | while read line ; do echo -e "\n----\n$line:"; cat "$line" ; done)
Callisos commented 6 months ago

Could you send me the output of this command?

(cd /etc/zypp/repos.d; \ls | while read line ; do echo -e "\n----\n$line:"; cat "$line" ; done)
> cd /etc/zypp/repos.d; \ls | while read line ; do echo -e "\n----\n$line:"; cat "$line" ; done

----
kde-extra.repo:
[kde-extra]
name=KDE Additional Packages
enabled=1
autorefresh=1
baseurl=https://download.opensuse.org/repositories/KDE:/Extra/openSUSE_Leap_$releasever/
type=rpm-md
priority=100
keeppackages=0

----
multimedia-apps.repo:
[multimedia-apps]
name=Multimedia Applications
enabled=1
autorefresh=1
baseurl=https://download.opensuse.org/repositories/multimedia:/apps/$releasever/
type=rpm-md
priority=100
keeppackages=0

----
packman-essentials.repo:
[packman-essentials]
name=PackMan/Essentials
enabled=1
autorefresh=1
baseurl=https://mirror.karneval.cz/pub/linux/packman/suse/openSUSE_Leap_$releasever/Essentials/
type=rpm-md
priority=98
keeppackages=0

----
packman-extra.repo:
[packman-extra]
name=PackMan/Extra
enabled=1
autorefresh=1
baseurl=https://mirror.karneval.cz/pub/linux/packman/suse/openSUSE_Leap_$releasever/Extra/
type=rpm-md
priority=100
keeppackages=0

----
repo-backports-debug-update.repo:
[repo-backports-debug-update]
name=Update repository with updates for openSUSE Leap debuginfo packages from openSUSE Backports
enabled=0
autorefresh=1
baseurl=https://download.opensuse.org/update/leap/$releasever/backports_debug/
keeppackages=0

----
repo-backports-update.repo:
[repo-backports-update]
name=Update repository of openSUSE Backports
enabled=1
autorefresh=1
baseurl=https://download.opensuse.org/update/leap/$releasever/backports/
path=/
type=rpm-md
keeppackages=0

----
repo-debug-non-oss.repo:
[repo-debug-non-oss]
name=Debug Repository (Non-OSS)
enabled=0
autorefresh=1
baseurl=https://download.opensuse.org/debug/distribution/leap/$releasever/repo/non-oss/
keeppackages=0

----
repo-debug.repo:
[repo-debug]
name=Debug Repository
enabled=0
autorefresh=1
baseurl=https://download.opensuse.org/debug/distribution/leap/$releasever/repo/oss/
keeppackages=0

----
repo-debug-update-non-oss.repo:
[repo-debug-update-non-oss]
name=Update Repository (Debug, Non-OSS)
enabled=0
autorefresh=1
baseurl=https://download.opensuse.org/debug/update/leap/$releasever/non-oss/
keeppackages=0

----
repo-debug-update.repo:
[repo-debug-update]
name=Update Repository (Debug)
enabled=0
autorefresh=1
baseurl=https://download.opensuse.org/debug/update/leap/$releasever/oss/
keeppackages=0

----
repo-non-oss.repo:
[repo-non-oss]
name=Non-OSS Repository
enabled=1
autorefresh=1
baseurl=https://download.opensuse.org/distribution/leap/$releasever/repo/non-oss/
type=rpm-md
keeppackages=0

----
repo-oss.repo:
[repo-oss]
name=Main Repository
enabled=1
autorefresh=1
baseurl=https://download.opensuse.org/distribution/leap/$releasever/repo/oss/
type=rpm-md
keeppackages=0

----
repo-sle-debug-update.repo:
[repo-sle-debug-update]
name=Update repository with debuginfo for updates from SUSE Linux Enterprise 15
enabled=0
autorefresh=1
baseurl=https://download.opensuse.org/debug/update/leap/$releasever/sle/
path=/
keeppackages=0

----
repo-sle-update.repo:
[repo-sle-update]
name=Update repository with updates from SUSE Linux Enterprise 15
enabled=1
autorefresh=1
baseurl=https://download.opensuse.org/update/leap/$releasever/sle/
path=/
type=rpm-md
keeppackages=0

----
repo-source.repo:
[repo-source]
name=Source Repository
enabled=0
autorefresh=1
baseurl=https://download.opensuse.org/source/distribution/leap/$releasever/repo/oss/
keeppackages=0

----
repo-update-non-oss.repo:
[repo-update-non-oss]
name=Update Repository (Non-Oss)
enabled=1
autorefresh=1
baseurl=https://download.opensuse.org/update/leap/$releasever/non-oss/
type=rpm-md
keeppackages=0

----
repo-update.repo:
[repo-update]
name=Main Update Repository
enabled=1
autorefresh=1
baseurl=https://download.opensuse.org/update/leap/$releasever/oss/
type=rpm-md
keeppackages=0

----
science.repo:
[science]
name=Software for Scientists and Engineers
enabled=1
autorefresh=1
baseurl=https://download.opensuse.org/repositories/science/$releasever/
type=rpm-md
priority=100
keeppackages=0

----
security.repo:
[security]
name=Security Tools
enabled=1
autorefresh=1
baseurl=https://download.opensuse.org/repositories/security/$releasever/
priority=100

----
vivaldi.repo:
[vivaldi]
name=Vivaldi Browser
enabled=1
autorefresh=1
baseurl=https://repo.vivaldi.com/archive/rpm/x86_64
type=rpm-md
priority=100
keeppackages=0

----
wine.repo:
[wine]
name=Emulators: WINE
enabled=1
autorefresh=1
baseurl=https://download.opensuse.org/repositories/Emulators:/Wine/$releasever
type=rpm-md
priority=98

----
x11-xorg.repo:
[x11-xorg]
name=X.Org Development
enabled=0
autorefresh=0
baseurl=https://download.opensuse.org/repositories/X11:/XOrg/openSUSE_Leap_$releasever/
type=rpm-md
priority=97
asdil12 commented 6 months ago

I guess you did manually set the option showAlias = true in the [main] section of /etc/zypp/zypper.conf?

opi internally runs something like zypper se -sx Mesa-dri and tries to match the repos by name. Your system seems to show the repo aliases insteas, which it doesn't find, though.

asdil12 commented 6 months ago

The fix will be in opi 4.4.0 - until then you can workaround by setting showAlias to false.