Using delta RPM's with zypper

I am trying to use delta RPM’s with zypper and having no success. I have a remote zypper repo called remote-repo that contans v1 for package A and a delta RPM between v1 and v2. On my SLES 11 SP3 system, I have added zypper repo remote-repo with --keep-packages enabled.

After installing v1 of A, I want to do a [FONT=Courier New]zypper up[/FONT] with the expectation that the delta RPM will be downloaded and then applied to the previously installed (and preserved) v1 package. I only get a message stating that the highest version, v1, is already installed.

I used [FONT=Courier New]create-repo --deltas --max-delta-rpm-size=10000000000 --oldpackagedirs …/oldpackages .[/FONT] to generate the remote zypper repo.

Can I do this with zypper?

[QUOTE=jayvi;26777]I am trying to use delta RPM’s with zypper and having no success. I have a remote zypper repo called remote-repo that contans v1 for package A and a delta RPM between v1 and v2. On my SLES 11 SP3 system, I have added zypper repo remote-repo with --keep-packages enabled.

After installing v1 of A, I want to do a [FONT=Courier New]zypper up[/FONT] with the expectation that the delta RPM will be downloaded and then applied to the previously installed (and preserved) v1 package. I only get a message stating that the highest version, v1, is already installed.

I used [FONT=Courier New]create-repo --deltas --max-delta-rpm-size=10000000000 --oldpackagedirs …/oldpackages .[/FONT] to generate the remote zypper repo.

Can I do this with zypper?[/QUOTE]

I assume you used the command createrepo not create-repo.

Did you run

$ zypper refresh
on the machine you’re installing your package on after you updated the repo? Maybe sounds obvious, but I’ve got myself briefly confused before by forgetting to refresh.

What happens if you ask zypper to update just your package?

$ zypper up your_package_name_here

The output of

$ zypper packages -r your_repo_name_here | grep your_package_name_here

might also be interesting.

I’ve never messed with delta rpms myself. My repos are on the network as the machines that use them so transfer time is negligible and I find transferring full packages is preferable to transferring delta packages then having zypper thrash spinning metal disk to apply them.

CODE tags are the best way to format stuff like commands rather than specifying a font. Look for the # button in the toolbar when composing the message.

# zypper refresh --repo eng
Repository 'eng' is up to date.
Specified repositories have been refreshed.

# sudo zypper --verbose up --repo eng my-aix
Verbosity: 1
Non-option program arguments: 'my-aix'
Initializing Target
Loading repository data...
Reading installed packages...
Force resolution: No
No update candidate for 'my-aix-99.0.0.master-1503021820.125.noarch'. The highest available version is already installed.
Resolving package dependencies...
Force resolution: No

Nothing to do.

# zypper packages -r eng | grep my-aix
i | eng        | my-aix                | 99.0.0.master-1503021820.125 | noarch
v | eng        | my-aix                | 99.0.0.master-1503021820.124 | noarch
v | eng        | my-aix                | 99.0.0.master-1502231319.122 | noarch
v | eng        | my-aix                | 99.0.0.master-1502231319.121 | noarch
v | eng        | my-aix                | 99.0.0.master-1502231319.120 | noarch
v | eng        | my-aix                | 99.0.0.master-1502231319.119 | noarch

On the repository side:

# ls -l repo/drpms
-rw-r--r-- 1 eng users   63681 Mar  4 00:23 my-aix-99.0.0.master-1503021820.125_99.0.0.master-1503021820.126.noarch.drpm

# ls -l repodata
-rw-r--r-- 1 root root  12620 Mar  6 03:25 filelists.xml.gz
-rw-r--r-- 1 root root   4101 Mar  6 03:25 other.xml.gz
-rw-r--r-- 1 eng  users  1583 Mar  4 02:23 prestodelta.xml.gz
-rw-r--r-- 1 root root  13195 Mar  6 03:25 primary.xml.gz
-rw-r--r-- 1 root root   1152 Mar  6 03:25 repomd.xml
-rw-r--r-- 1 eng  users   197 Mar  3 23:59 repomd.xml.asc

I tried moving the delta RPM up a directory to where the regular packages are stored with the same result.

I tried changing the delta RPM extension to .rpm:

# zypper --verbose up --repo eng
Verbosity: 1
Initializing Target
Checking whether to refresh metadata for eng
Loading repository data...
Reading installed packages...
Force resolution: No

The following package is going to be upgraded:
  my-aix  99.0.0.master-1503021820.125 -> 99.0.0.master-1503021820.126


The following package is not supported by its vendor:
  my-aix  99.0.0.master-1503021820.126


1 package to upgrade.
Overall download size: 63.0 KiB. No additional space will be used or freed after the operation.
Continue? [y/n/? shows all options] (y):
committing
Retrieving package my-aix-99.0.0.master-1503021820.126.noarch (1/1), 63.0 KiB (46.8 MiB unpacked)
Installing: my-aix-99.0.0.master-1503021820.126 [error]
Installation of my-aix-99.0.0.master-1503021820.126 failed:
(with --nodeps --force) Error: Subprocess failed. Error: RPM failed: error: my-aix-99.0.0.master-1503021820.126.noarch is a Delta RPM and cannot be directly installed
error: error reading from file /var/cache/zypp/packages/eng/my-aix-99.0.0.master-1503021820.125_99.0.0.master-1503021820.126.noarch.rpm

I have verified that the zypp.conf has support for delta RPM’s enabled. I have manually run applydeltarpm to generate the full v126 package to verify that the delta RPM is valid.

Do you know where there is documentation on this subject? I have spent a long time on google without success.