Thanks again, Jeff.

I get an error when I attempt to run rpmdeps.  It complains of a missing magic 
file (see error below).  I can't say this surprises me, but I am hoping there 
is a simple fix, instead of recompiling/installing from ports with different 
options…

[root@bsdsandbox2 /home/vmiller]# find /lib | /usr/local/lib/rpm/bin/rpmdeps 
--provides
error: magic_load(ms, /usr/local/share/file/magic) failed: could not find any 
magic files!
Assertion failed: (mg != NULL), function rpmfcClassify, file rpmfc.c, line 1132.
Abort trap: 6 (core dumped)

I think the magic file it needs is /usr/share/misc/magic

Thoughts?
==
Vincent (Rick) Miller
Systems Engineer
vmil...@verisign.com

t: 703-948-4395
21345 Ridgetop Cir Dulles, VA 20166

VerisignInc.com

From: Jeff Johnson <n3...@mac.com<mailto:n3...@mac.com>>
Reply-To: <rpm-users@rpm5.org<mailto:rpm-users@rpm5.org>>
Date: Thu, 21 Jul 2011 07:36:17 -0400
To: <rpm-users@rpm5.org<mailto:rpm-users@rpm5.org>>
Subject: Re: RPM Stub Package


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
vmil...@verisign.com<x-msg://1866/vmil...@verisign.com>

t: 703-948-4395
21345 Ridgetop Cir Dulles, VA 20166

VerisignInc.com<http://VerisignInc.com>

Reply via email to