Skip to content

can't download all the rpm using the zypper command #611

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
x-lugoo opened this issue May 7, 2025 · 2 comments
Open

can't download all the rpm using the zypper command #611

x-lugoo opened this issue May 7, 2025 · 2 comments
Labels

Comments

@x-lugoo
Copy link

x-lugoo commented May 7, 2025

I’m trying to download all files for SUSE-SLE-SERVER-12-SP5-2024-132 from SCC and
would like to use the zypper command instead. However, it always only downloads 5 RPM packages, even though there are actually 11 packages in total.

Our customer has had this requirement for a long time, and I’ve been searching for a solution for years without success.
Today, I finally decided to raise an issue, hoping this problem can be resolved.

https://scc.suse.com/patches#!/290254
SUSE-SLE-SERVER-12-SP5-2024-132

cpp48-4.8.5-31.29.1.x86_64.rpm
gcc48-32bit-4.8.5-31.29.1.x86_64.rpm
gcc48-4.8.5-31.29.1.src.rpm
gcc48-4.8.5-31.29.1.x86_64.rpm
gcc48-c++-4.8.5-31.29.1.x86_64.rpm
gcc48-info-4.8.5-31.29.1.noarch.rpm
gcc48-locale-4.8.5-31.29.1.x86_64.rpm
libasan0-32bit-4.8.5-31.29.1.x86_64.rpm
libasan0-4.8.5-31.29.1.x86_64.rpm
libstdc++48-devel-32bit-4.8.5-31.29.1.x86_64.rpm
libstdc++48-devel-4.8.5-31.29.1.x86_64.rpm

#zypper --pkg-cache-dir ./ in -d -f -t patch SUSE-SLE-SERVER-12-SP5-2024-132
[proxychains] config file found: /etc/proxychains.conf
[proxychains] preloading /usr/local/lib/libproxychains4.so
[proxychains] DLL init: proxychains-ng 4.14
Refreshing service 'Containers_Module_12_x86_64'.
Refreshing service 'Public_Cloud_Module_12_x86_64'.
Refreshing service 'SUSE_Linux_Enterprise_Server_12_SP5_x86_64'.
Refreshing service 'SUSE_Linux_Enterprise_Server_LTSS_12_SP5_x86_64'.
Refreshing service 'SUSE_Linux_Enterprise_Software_Development_Kit_12_SP5_x86_64'.
Refreshing service 'SUSE_Package_Hub_12_SP5_x86_64'.
Refreshing service 'Toolchain_Module_12_x86_64'.
Loading repository data...
Reading installed packages...
Forcing installation of 'patch:SUSE-SLE-SERVER-12-SP5-2024-132-1.noarch' from repository 'SLES12-SP5-Updates'.
Resolving package dependencies...

The following NEW patch is going to be installed:
SUSE-SLE-SERVER-12-SP5-2024-132

The following 5 packages are going to be upgraded:
cpp48 gcc48 gcc48-c++ libasan0 libstdc++48-devel

5 packages to upgrade.
Overall download size: 17.1 MiB. Already cached: 4.9 MiB. Download only.
Continue? [y/n/...? shows all options] (y):

@mlandres
Copy link
Member

mlandres commented May 7, 2025

@x-lugoo technically the patch in zypp does not contain packages:

# zypper info patch:openSUSE-2014-590
...
Information for patch openSUSE-2014-590:
----------------------------------------
Name: openSUSE-2014-590
Version: 1
Arch: noarch
...
Conflicts:
  mkinitrd.i586 < 2.8.1-9.1
  srcpackage:mkinitrd < 2.8.1-9.1
  mkinitrd-debuginfo.i586 < 2.8.1-9.1
  mkinitrd-debugsource.i586 < 2.8.1-9.1
  mkinitrd.x86_64 < 2.8.1-9.1
  mkinitrd-debuginfo.x86_64 < 2.8.1-9.1
  mkinitrd-debugsource.x86_64 < 2.8.1-9.1

That's how a patch looks like. After fixing an issue, the patch conflicts with the affected/vulnerable versions of a set of packages. As long as any of these affected/vulnerable versions is installed, the conflict triggers and the patch is classified as needed.

Selecting the patch, the conflict is resolved by updating all installed and affected/vulnerable packages mentioned in the patch.

That's why you only get the updates for actually installed affected/vulnerable packages and zypper always tries to update to the highest available version in the repo. So you get at least the version mentioned in the patch.

For packages - if you want to download a specific version of a package - you can use e.g zypper --pkg-cache-dir ./ download cpp48-4.8.5-31.29.1.x86_64. But there is no command that would try to guess and download a specific package set that could be associated with a patch. One could assume that a conflicts: IDENT[.ARCH] < VERSION-RELEASE in a patch maps to a package IDENT-VERSION-RELEASE[.ARCH], and download this. This might deliver a subset of packages SCC mentions on it's page (the ones with an architecture compatible to the local system).

It's probably doable to enhance zypper download to cover patches in this way, but to get this backported to SLE12, the customer probably needs a support contract.

@x-lugoo
Copy link
Author

x-lugoo commented May 7, 2025

@x-lugoo technically the patch in zypp does not contain packages:

# zypper info patch:openSUSE-2014-590
...
Information for patch openSUSE-2014-590:
----------------------------------------
Name: openSUSE-2014-590
Version: 1
Arch: noarch
...
Conflicts:
  mkinitrd.i586 < 2.8.1-9.1
  srcpackage:mkinitrd < 2.8.1-9.1
  mkinitrd-debuginfo.i586 < 2.8.1-9.1
  mkinitrd-debugsource.i586 < 2.8.1-9.1
  mkinitrd.x86_64 < 2.8.1-9.1
  mkinitrd-debuginfo.x86_64 < 2.8.1-9.1
  mkinitrd-debugsource.x86_64 < 2.8.1-9.1

That's how a patch looks like. After fixing an issue, the patch conflicts with the affected/vulnerable versions of a set of packages. As long as any of these affected/vulnerable versions is installed, the conflict triggers and the patch is classified as needed.

Selecting the patch, the conflict is resolved by updating all installed and affected/vulnerable packages mentioned in the patch.

That's why you only get the updates for actually installed affected/vulnerable packages and zypper always tries to update to the highest available version in the repo. So you get at least the version mentioned in the patch.

For packages - if you want to download a specific version of a package - you can use e.g zypper --pkg-cache-dir ./ download cpp48-4.8.5-31.29.1.x86_64. But there is no command that would try to guess and download a specific package set that could be associated with a patch. One could assume that a conflicts: IDENT[.ARCH] < VERSION-RELEASE in a patch maps to a package IDENT-VERSION-RELEASE[.ARCH], and download this. This might deliver a subset of packages SCC mentions on it's page (the ones with an architecture compatible to the local system).

It's probably doable to enhance zypper download to cover patches in this way, but to get this backported to SLE12, the customer probably needs a support contract.

Thank you for the detailed explanation. The customer does have a support contract,
but they have always asked us to download the RPMs for them (especially RPMs for SLES12 SP5).
They don’t really care how we obtain the RPMs—as long as we do.

If this issue were resolved, it would only make our support work easier (my email is [email protected]),
so I’m not in a position to use the customer's contract to submit a request for this fix.

In any case, I can use the following method to download packages from now on:
zypper --pkg-cache-dir ./ download cpp48-4.8.5-31.29.1.x86_64

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants