From Fedora Project Wiki
(add some packages using each solution)
(add the remaining packages using each solution)
Line 22: Line 22:
* fedora-usermgmt
* fedora-usermgmt
* gcin
* gcin
* gridengine
* ibus
* imsettings
* java-1.6.0-openjdk
* kinput2
* libextractor
* mx4j
* nabi
* openmpi
* scim
* ssmtp (bad!)
* tomcat5
* uim
* unison213
* unison227
* ushare


=== Using %ghost ===
=== Using %ghost ===
Line 42: Line 58:
Packages using this solution:
Packages using this solution:
* antlr
* antlr
* cdrkit
* classpathx-jaf
* classpathx-jaf
* classpathx-mail
* classpathx-mail
* ettercap (incomplete)
* ettercap
* jakarta-commons-dbcp
* java-1.5.0-gcj
* OpenEXR_Viewers
* pinentry
* saxon
* xalan-j2
* xemacs
* xerces-j2


=== Using Provides: ===
=== Using Provides: ===
Line 63: Line 88:
Packages using this solution:
Packages using this solution:
* cups
* cups
* esmtp (incomplete)
* esmtp
* exim (incomplete)
* exim
* postfix
* sendmail


[[Category:Packaging guidelines drafts]]
[[Category:Packaging guidelines drafts]]

Revision as of 22:59, 17 February 2009

Warning.png
This page is a draft only
It is still under construction and content may change. Do not rely on the information on this page.

Motivation

Current usage of alternatives is inconsistent, and rpm -qf /some/file will often say the file is unowned, even if it's been created by some package, which is especially misleading and annoying in case of binaries.

Solutions

All of the options below are currently used in Fedora packages.

Ignoring alternativized files

Pros:

  • less work for packager(?)

Cons:

  • alternativized files are unowned, which means:
    • rpm -qf /usr/bin/foo doesn't work
    • yum install /usr/bin/foo doesn't work
    • repoquery --whatprovides /usr/bin/foo doesn't work

Packages using this solution:

  • emacs
  • fedora-usermgmt
  • gcin
  • gridengine
  • ibus
  • imsettings
  • java-1.6.0-openjdk
  • kinput2
  • libextractor
  • mx4j
  • nabi
  • openmpi
  • scim
  • ssmtp (bad!)
  • tomcat5
  • uim
  • unison213
  • unison227
  • ushare

Using %ghost

%files
...
%ghost %{_bindir}/foo

Pros:

  • allows globs and generated file lists
  • alternativized files are owned, which means:
    • rpm -qf /usr/bin/foo works
    • yum install /usr/bin/foo works
    • repoquery --whatprovides /usr/bin/foo works

Cons:

  • files owned by multiple packages are forbidden by FPG.

Packages using this solution:

  • antlr
  • cdrkit
  • classpathx-jaf
  • classpathx-mail
  • ettercap
  • jakarta-commons-dbcp
  • java-1.5.0-gcj
  • OpenEXR_Viewers
  • pinentry
  • saxon
  • xalan-j2
  • xemacs
  • xerces-j2

Using Provides:

Provides: %{_bindir}/foo

Pros:

  • alternativized files are provided, which means:
    • rpm -qf /usr/bin/foo works
    • yum install /usr/bin/foo works
    • repoquery --whatprovides /usr/bin/foo works
    • can be processed by yum without downloading additional filelists even if the file lies outside common directories

Cons:

  • unwieldy with lots of alternativized files

Packages using this solution:

  • cups
  • esmtp
  • exim
  • postfix
  • sendmail