package naming, install directories for 2.0

"Wichmann, Mats D" <[email protected]> Fri, 9 Apr 2004 11:06:08 -0700
Newsgroups gmane.linux.lsb.implementation
Message-ID <[email protected]>
This has remained unresolved for long enough, let's see if we
can close on it.  We've had a desire to set up our packaging
to meet several criteria:

- follow our own rules for package naming and install locations
- be able to have packages for multiple architectures installed
  at the same time
- be able to have packages for multiple LSB versions installed
  at the same time.

All of these qualified by "when it makes sense" - for example,
some of our packages are not LSB conforming today, and some
probably never will be, and so perhaps it's not strictly
necessary to treat them as if they were.


Right now, we produce the following packages, not including 
the runtime tests suites:

Application tests:
lsbappchk
(unreleased) pkgchk
(unreleased) dynamic checker

Platform tests:
lsblibchk
(unreleased) cmdchk

Build packages:
lsbdev-base
lsbdev-cc
lsbdev-c++
lsbdev-chroot

Sample Implementation:
(tarballs): lsbsi, lsbsi-boot, lsbsi-test, lsbsi-uml
(package): lsb-umlsi

Application Battery:
lsb-apache, lsb-celestia, lsb-tcl, lsb-expect,
lsb-groff, lsb-lynx, lsb-python, lsb-rsync,
lsb-samba, lsb-xpaint, lsb-xpdf
(unreleased) lsb-build-libbat, lsb-openjade


An initial pass was made for "LSB 1.9" to rename some of 
these in a more LSB-conforming manner, so for now we have:
lsb-appchk, lsb-pkgchk, lsb-libchk, lsb-cmdchk
lsb-build-base, lsb-build-cc, lsb-build-c++, lsb-build-chroot
All of these now install to /opt/lsb, as does
lsb-build-libbat which is really a build tool
although it is constructed out of the application battery.

But this renaming didn't really help meet the objective
stated about, because:

1.lsb-xxx is not valid as a package name, unless we
  register xxx with LANANA.  We could use our registered
  provider name, but then we have to call the packages
  lsb-lsb-xxx
2.we hatched a plan to install to a path
  /opt/lsb/<lsbversion>/<arch> to handle the concurrent
  version/architecture issue, but this is not implemented yet
3.even if (2) were in place, the package names also need
  to encode version/arch in such a way that they don't
  conflict with one another.  E.g. if lsb-build-base for
  ia32/LSB 2.0 is installed, we can't install another package
  with the same name for a different architecture or version.
4. appbat programs (which DO strive to be LSB conforming in
  all cases) are named lsb-<app> and install to
   /opt/lsb-<app> as if they were packaged LSB conforming
  by the project rather than as a test program by the LSB.



My take is that this is getting too complicated and
we should give up on trying to solve so many different
problems at once.  So this is a possible proposal:

I. programs that developers/endusers might use should
   go into /opt/lsb; test suites to /opt/lsb/test; 
   application battery programs can go into /opt/lsb/appbat
   (or, alternatively, /opt/lsb/test), and the sample
   implementation to /opt/lsb/si
II. scrap the /opt/lsb/<lsbversion>/<arch> idea and whatever
   matching stuff would have to go into the package name as
   adding too much complexity for the "normal case" in favor
   a few special users (mainly, the LSB team)
III. reserve our "user" package names with LANANA to avoid
    any further renaming hassles
IV. Reserve "test" as a dummy provider name with LANANA,
    allowing lsb-test-xxx to be under our control, and
    use for test suites as well as appbat.

However, I'm not prepared to just make that as a
decision, and in particular I'm not wedded to item II.,
so consider the discussion (re) opened...

In considering this situaton I also decided to file
bugzilla #147 to clarify the naming rules.


=== these are the naming rules from the specification ===


FHS:

/opt : Add-on application software packages

/opt is reserved for the installation of add-on application software
packages.

A package to be installed in /opt must locate its static files in a
separate /
opt/<package> or /opt/<provider> directory tree, where <package> is a
name that
describes the software package and <provider> is the provider's LANANA
registered name


LSB:

Package Naming

Because there is no consistent packaging naming among the various Linux 
distributions, it is necessary for LSB-conformant packages to adhere the

following naming rules to avoid conflicts with packages provided by the 
distributions.

* All LSB package names shall begin with the prefix "lsb-" to avoid 
conflicting with existing packages used by Linux distributions.
    
* If the package name contains only one hyphen (including the one in 
the "lsb-" prefix) then the package name shall be assigned by the 
Linux Assigned Names and Numbers Authority (LANANA), which shall 
maintain a registry of LSB names.

* If the package name contains more than one hyphen (i.e., 
"lsb-www.redhat.com-redhat-database", "lsb-gnome-gnumeric"), then the 
portion of the package name between first and second hyphens shall 
either be an LSB provider name assigned by the LANANA, or it may be 
one of the owners' fully-qualified domain name in lower case (e.g., 
"debian.org", "staroffice.sun.com"). The LSB provider name assigned 
by LANANA shall only consist of the ASCII characters [a-z0-9].