openSUSE / zypper

World's most powerful command line package manager
http://en.opensuse.org/Portal:Zypper
Other
392 stars 107 forks source link

Installing local RPMs is no longer possible #551

Closed bwoodsend closed 3 weeks ago

bwoodsend commented 1 month ago

I used to be able to install a local RPM using zypper install /local/package.rpm. Now it seems to reject them, deferring to searching (and usually failing) in capabilities.

I'm using the latest tumbleweed Docker container ( docker.io/opensuse/tumbleweed@sha256:9e65b8bf919cd51723d588025da9d22cf87ca993367fb1350c7a8682466f27ef) which contains zypper 1.14.73.

$ docker run -it docker.io/opensuse/tumbleweed@sha256:9e65b8bf919cd51723d588025da9d22cf87ca993367fb1350c7a8682466f27ef

6bf6507f2649:/ # zypper download wget
...
Retrieving: wget-1.24.5-1.1.x86_64 (openSUSE-Tumbleweed-Oss)                                                                                                                                                              (1/1), 375.8 KiB    
...
(1/1) /var/cache/zypp/packages/repo-oss/x86_64/wget-1.24.5-1.1.x86_64.rpm

6bf6507f2649:/ # zypper install -y --name /var/cache/zypp/packages/repo-oss/x86_64/wget-1.24.5-1.1.x86_64.rpm
Loading repository data...
Reading installed packages...
Package '_tmpRPMcache_:wget=0:1.24.5-1.1' not found in specified repositories.

Note that without the --name option to zypper install, it goes on to search in repositories for wget=0:1.24.5-1.1 in capabilities which actually works in this case because (I think) wget's package name is the same as one of its capabilities and wget is in the repository (which usually isn't the case if you're installing a custom local package).

I can't easily downgrade but I do have a rather stale Docker image containing zypper 1.14.62 which behaves normally.

mlandres commented 3 weeks ago

It's a duplicate of openSUSE/libsolv#567. The libsolv-tools-base package lacks a requirement to findutils and does not indicate the missing find as an error. It returns 0 and creates an empty packagecache instead.