Patch RPM's and the -P option
The rpm command on SuSE 9.1 and 9.3 provides a patch select option (-P, --patches). I have not had a chance to review rpm on OpenSUSE, yet but will be doing that soon, so apologies if this message appears to be a bit misdirected - it's not. :-) Anyway, I'm guessing that a patch RPM is a "partial package" that does not contain all files, instead providing only the files that have been updated? If I issue the "rpm -qPa" command, I see a small subset of RPMs - notably, those that appear to have been applied as part of an online update. The Red Hat/Fedora/rpm.org guides and the master RPM change list do not document a -P option. Can someone give me some background? Is this a SuSE creation? What distinguishes a patch RPM from a regular RPM? I do know that any RPM can be considered a "patch" or "update", but I have a need to track RPMs that have been specifically applied in response to customer problem reports - this feature seems to meet that need. Thanks for your help. -Scott Lowrey
"Scott Lowrey" <slowrey@nextone.com> writes:
The rpm command on SuSE 9.1 and 9.3 provides a patch select option (-P, --patches). I have not had a chance to review rpm on OpenSUSE, yet but will be doing that soon, so apologies if this message appears to be a bit misdirected - it's not. :-)
Anyway, I'm guessing that a patch RPM is a "partial package" that does not contain all files, instead providing only the files that have been updated?
Correct, that's what we call a "patch RPM".
If I issue the "rpm -qPa" command, I see a small subset of RPMs - notably, those that appear to have been applied as part of an online update.
The Red Hat/Fedora/rpm.org guides and the master RPM change list do not document a -P option. Can someone give me some background? Is this a SuSE creation? What distinguishes a patch RPM from a regular RPM?
Yes, it's a SUSE local change. A patch RPM is really only a partial RPM, it can only be applied if the package is already installed.
I do know that any RPM can be considered a "patch" or "update", but I have a need to track RPMs that have been specifically applied in response to customer problem reports - this feature seems to meet that need.
Andreas -- Andreas Jaeger, aj@suse.de, http://www.suse.de/~aj SUSE Linux Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126
From: Andreas Jaeger [mailto:aj@suse.de] Subject: Re: [opensuse-packaging] Patch RPM's and the -P option [snip]
The Red Hat/Fedora/rpm.org guides and the master RPM change list do not document a -P option. Can someone give me some background? Is this a SuSE creation? What distinguishes a patch RPM from a regular RPM?
Yes, it's a SUSE local change.
A patch RPM is really only a partial RPM, it can only be applied if the package is already installed.
Thanks, Andreas. How, then, do I develop a patch RPM? Are there spec file macros that tell rpmbuild that this is a patch? Sorry for all the questions. If you can steer me to relevant documentation, I'll go there. :-) -Scott
On Wed, 30 Nov 2005, Scott Lowrey wrote:
Thanks, Andreas. How, then, do I develop a patch RPM? Are there spec file macros that tell rpmbuild that this is a patch?
Basically you just need two different version of a package to create a patch from a to b. The creation of a patch rpm is done by a special program, which isn't publicly available to my knowledge - but AFAIK there are attempts to change this. Michael will know for sure ;) Regards Christoph
On Wed, Nov 30, 2005 at 11:26:45PM +0100, Christoph Thiel wrote:
On Wed, 30 Nov 2005, Scott Lowrey wrote:
Thanks, Andreas. How, then, do I develop a patch RPM? Are there spec file macros that tell rpmbuild that this is a patch?
Basically you just need two different version of a package to create a patch from a to b. The creation of a patch rpm is done by a special program, which isn't publicly available to my knowledge - but AFAIK there are attempts to change this. Michael will know for sure ;)
ftp://ftp.suse.com/pub/projects/patchrpm/patchrpm-1.0.tar.bz2 Enjoy, Michael. -- Michael Schroeder mls@suse.de main(_){while(_=~getchar())putchar(~_-1/(~(_|32)/13*2-11)*13);}
On Thu, 1 Dec 2005, Michael Schroeder <mls@suse.de> wrote:-
On Wed, Nov 30, 2005 at 11:26:45PM +0100, Christoph Thiel wrote:
On Wed, 30 Nov 2005, Scott Lowrey wrote:
Thanks, Andreas. How, then, do I develop a patch RPM? Are there spec file macros that tell rpmbuild that this is a patch?
Basically you just need two different version of a package to create a patch from a to b. The creation of a patch rpm is done by a special program, which isn't publicly available to my knowledge - but AFAIK there are attempts to change this. Michael will know for sure ;)
ftp://ftp.suse.com/pub/projects/patchrpm/patchrpm-1.0.tar.bz2
Enjoy, Michael.
Since there's no RPMs available, I've created a spec file[0] and built the packages. Source and binary RPMs are available from: <URL:http://www.davjam.org/~davjam/linux/patchrpm/index.htm> [0] quick and nasty, but does the job :) Regards, David Bolt -- Member of Team Acorn checking nodes at 50 Mnodes/s: http://www.distributed.net/ AMD1800 1Gb WinXP/SUSE 9.3 | AMD2400 256Mb SuSE 9.0 | A3010 4Mb RISCOS 3.11 AMD2400(32) 768Mb SUSE 10.0 | RPC600 129Mb RISCOS 3.6 | Falcon 14Mb TOS 4.02 AMD2600(64) 512Mb SUSE 10.0 | A4000 4Mb RISCOS 3.11 | STE 4Mb TOS 1.62
Op woensdag 30 november 2005 23:26, schreef Christoph Thiel:
On Wed, 30 Nov 2005, Scott Lowrey wrote:
Thanks, Andreas. How, then, do I develop a patch RPM? Are there spec file macros that tell rpmbuild that this is a patch?
Basically you just need two different version of a package to create a patch from a to b. The creation of a patch rpm is done by a special program, which isn't publicly available to my knowledge - but AFAIK there are attempts to change this. Michael will know for sure ;)
linux:~ # rpm -qi deltarpm Name : deltarpm Relocations: (not relocatable) Version : 3.3 Vendor: SUSE LINUX Products GmbH, Nuernberg, Germany Release : 0.1 Build Date: Tue Oct 11 15:30:17 2005 Install date: Sun Oct 30 10:42:22 2005 Build Host: vivaldi.suse.de Group : System/Packages Source RPM: deltarpm-3.3-0.1.src.rpm Size : 534916 License: BSD Signature : DSA/SHA1, Tue Oct 11 15:40:41 2005, Key ID a84edae89c800aca Packager : http://www.suse.de/feedback URL : ftp://ftp.suse.com/pub/projects/deltarpm Summary : Tools to Create and Apply deltarpms Description : This package contains tools to create and apply deltarpms. A deltarpm contains the difference between an old and a new version of an RPM, which makes it possible to recreate the new RPM from the deltarpm and the old one. You do not need to have a copy of the old RPM, because deltarpms can also work with installed RPMs. -- Richard Bos Without a home the journey is endless
On Thu, 1 Dec 2005, Richard Bos wrote:
Op woensdag 30 november 2005 23:26, schreef Christoph Thiel:
On Wed, 30 Nov 2005, Scott Lowrey wrote:
Thanks, Andreas. How, then, do I develop a patch RPM? Are there spec file macros that tell rpmbuild that this is a patch?
Basically you just need two different version of a package to create a patch from a to b. The creation of a patch rpm is done by a special program, which isn't publicly available to my knowledge - but AFAIK there are attempts to change this. Michael will know for sure ;)
linux:~ # rpm -qi deltarpm Name : deltarpm Relocations: (not relocatable) Version : 3.3 Vendor: SUSE LINUX Products GmbH, Nuernberg, Germany Release : 0.1 Build Date: Tue Oct 11 15:30:17 2005 Install date: Sun Oct 30 10:42:22 2005 Build Host: vivaldi.suse.de Group : System/Packages Source RPM: deltarpm-3.3-0.1.src.rpm Size : 534916 License: BSD Signature : DSA/SHA1, Tue Oct 11 15:40:41 2005, Key ID a84edae89c800aca Packager : http://www.suse.de/feedback URL : ftp://ftp.suse.com/pub/projects/deltarpm Summary : Tools to Create and Apply deltarpms Description : This package contains tools to create and apply deltarpms. A deltarpm contains the difference between an old and a new version of an RPM, which makes it possible to recreate the new RPM from the deltarpm and the old one. You do not need to have a copy of the old RPM, because deltarpms can also work with installed RPMs.
deltarpm != patchrpm Regards Christoph
participants (6)
-
Andreas Jaeger
-
Christoph Thiel
-
David Bolt
-
Michael Schroeder
-
Richard Bos
-
Scott Lowrey