RPM Community Forums

Mailing List Message of <rpm-users>

Re: RPM Stub Package

From: Jeff Johnson <n3npq@mac.com>
Date: Thu 21 Jul 2011 - 13:36:17 CEST
Message-id: <1F3E2886-A105-4A2A-9FA9-98509C054EB2@mac.com>

On Jul 21, 2011, at 6:59 AM, Miller, Vincent (Rick) wrote:

> Hi,
> 
> I've got RPM installed via FreeBSD ports.  The next step is to create the stub package which contains all the files that are already installed.  The vpkg-provides.sh script does not specifically support FreeBSD.  I've considered modifying it to support it.
> 

Good.

You won't need " all the files .." generally (but you can do that if you wish).

RPM uses a database to find Provides: that match Requires:.

The stub package is a means to do a database import of certain items.

You will almost certainly need
	Provides: /bin/sh
Most other dependencies that are needed are library so names.

You can see what will be needed using /usr/lib/rpm/bin/rpmdeps.

E.g. here are the provides from /lib/* libraries:

	find /lib | /usr/lib/rpm/bin/rpmdeps --provides

Note that there is a --requires option, and rpmdeps can take files either
from stdin, or form the CLI argv list.

Building the stub package is little more than capturing output from rpmdeps
into a *.spec file used for markup
	Provides: libc.so.6
which when installed will satisfy dependencies of other packages.

(aside)
The vpkg generated stub pkg will also generate md5 digests, and has
the ability to verify those digests using a %verifyscript, which isn't
strictly needed for stubbing out a dependencies, but may be useful.

There's other means to verify digests on a file using a probe dependency.
E.g.
	Requires: digest(/path/to/file) = 123456789.
can be added to any @rpm5.org package, and will verify the content digest on
that file path.


> How much of the script will need to be modified to support FreeBSD?  Obviously, the case() setting OS defaults would be the first modification necessary, but is there more beyond this that should be modified?
> 

Its hard to guess  before hand because the hard task isn't modifying the
script, but rather identifying all the dependencies will be needed.

Simpler than the vpkg script is to supply Provides: dependencies from a file
(1 per line please):

	mkdir -p /etc/rpm/sysinfo
	echo "/bin/sh" >> /etc/rpm/sysinfo/Providename

and edit in whatever dependencies you need as found.

Its more tedious than hard. But it might help to see what needs to be done
before attempting to automate with a script.

hth

73 de Jeff

> 
> ==
> Vincent (Rick) Miller
> Systems Engineer
> vmiller@Verisign.com
> 
> t: 703-948-4395
> 21345 Ridgetop Cir Dulles, VA 20166
> 
> VerisignInc.com   
Received on Thu Jul 21 13:36:22 2011
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.