Subject: Re: Request for help from binary packaging people.

From: Sergey Vlasov <[email-masked]>
Date: Mon, 8 Aug 2005 22:20:51 +0400

On Mon, 08 Aug 2005 10:38:44 -0700 Junio C Hamano wrote:

> For RPM, from my lack of RPM expertise (and RPM capable
> environment until recently), I have not updated the "Prereq:"
> field in git-core.spec.in at all.

That "Prereq:" should be "Requires:" instead.  "Prereq:" also
enforces installation ordering between packages; it is required
when the package has some installation scripts (%pre, %post) -
in this case all packages which are needed to execute these
scripts must be listed in "Prereq:".  In case of git-core there
are no such scripts (at least for now), so "Requires:" should be
used - then the package manager will be free to install packages
in any order as long as all dependencies will be satisfied in
the end.

> I would appreciate somebody to sanity check the list of
> dependencies.  The dependency list Debian side has is more
> up-to-date and I am reasonably sure it is accurate.  It lists
> patch, diff, and rcs (for the "merge" command) as the
> essential dependency (aside from the shared libraries like
> libc), and libmail-sendmail-perl, rsync, curl, ssh, and
> libemail-valid-perl as the recommended dependency.  I do not
> even know if RPM has the notion of such multi-tier
> dependencies, but the latter list is meant to mean "you could
> live without these, but to exercise this package fully you may
> want them" (in our case of git-core, you could live without
> the networking if you do not do multi-user, multi-repository).

RPM does not have "Suggests" and "Recommends" like dpkg - all
RPM dependencies are strict.  Because of this limitation, a
single RPM package is often split into several binary
subpackages.

> If RPM spec file has a way to say something like that, I would
> like to see these packages (probably their names are different
> between Debian and RPM) listed on the recommended dependency
> list; otherwise I would want to see them added to the main
> "Prereq:" list.

Not only the names of packages are different between Debian and
RPM - the names of similar RPM packages are different between
different RPM-based distributions. :(

E.g., in ALT Linux distributions /usr/bin/ssh is contained in
the openssh-clients package; SuSE 9.3 seems to have it in the
package named "openssh".  There are lots of such differences.

Most modern RPM-based distributions have some mechanism to find
dependencies automatically (e.g., by scanning all Perl scripts
in the package for "use" statements).  But these mechanisms are
incompatible between different distributions too.

Different distributions also have different RPM packaging
conventions, different RPM macros, etc etc...

So the best thing you can really do is to provide an RPM package
for some distribution you choose, which would then be used as a
basis for packages on other distributions.