Jim Ramsay schrieb:
I am planning on moving the install locations of all the rox-base/* and
rox-extra/* applications from their current location (/usr/lib/rox) to
something a little more FHS-correct[1] and tolerant of multilib support.
The main reason for this change is that I got a bug from amd64 because
the /usr/lib path is hard-coded all over the place (ie, not multilib
compliant), but it's always sort of bugged me that these packages are
in /usr/lib - They're not actually libaries (except for rox-clib).
These rox applications are a new special case that don't fit into the
FHS, called "Application Directories"[2], and I need a good place to
put them.
Let's see, /usr:
AFAIR App Dirs provide internal arch distinction, so why not just put it
in /usr/share/rox?
<fhs>
This hierarchy is intended to be shareable among all architecture
platforms of a given OS; thus, for example, a
site with i386, Alpha, and PPC platforms might maintain a single
/usr/share directory that is
centrally-mounted.
</fhs>
If you don't follow that rationale, as far as I read the FHS, Rox should
stay in /usr/lib/rox:
<fhs>
/usr/lib includes object files, libraries, and internal binaries that
are not intended to be executed directly by
users or shell scripts.
*Applications may use a single subdirectory under /usr/lib. If an
application uses a subdirectory, all
architecture-dependent data exclusively used by the application must be
placed within that subdirectory. *
</fhs>
Note that in that case, the Help files etc. would be aliens there.
The fact that Rox Apps can compile themselves on demand would make them
go into /var/, but I trust that all ebuilds precompile everything as
needed, so no write access is necessary.
If Gentoo hadn't the (useful) binary/from source distinction, I'd vote
for opt.
I'd like input from any interested parties on where the proper
location may be. Here are some ideas with their justifications and
problems, as I see them:
/usr/libexec/rox - libexec isn't actually in the FHS (that I could
see), and /usr/libexec is usually assumed to contain executable
code, so it may be a "safe" place to put things. That said, libexec
is considered by some to be dead or about to disappear[3], so it may
not be the right place to go.
If your motivation is FHS, dont use libexec.
/usr/rox - This isn't in the FHS either, I would be creating it. The
problem is that the FHS specifically says "Large software packages
must not use a direct subdirectory under the /usr hierarchy."
With a good reason (see below).
/usr/bin/rox-desktop - This may be the most correct, since the FHS
does allow subdirectories here, and doesn't explicitly prohibit new
ones. Also, these are actually executable commands. The problem is
that (at least considering my currently installed packages) no one
else has created any subdirectories in /usr/bin. I don't know if
that's a problem. Also, I can't use the name 'rox' in this place
because that conflicts with a filename from rox-base/rox.
Everything in /usr/bin is assumed to be a user callable executable. If
you follow the notion that an App Dir is a large bin that happens to be
in directory form (it could be a .jar, after all), this would make
sense. But again, for multiple Archs you'd have tons of duplicates.
If you read the FHS and don't concentrate on following it to the letter,
though, but read the motivation why it even exists and what it tries to
accomplish, namely to make the directory tree shareable as far as
possible, I'd really consider /usr/share/rox. If my assumption is
correct (that it would work).
I guess if you'd ask the FHS guys, they'd say "Chop those app dirs up to
the proper locations and symlink them together in one place if needed",
which would be much work for little gain.
Regards,
Thomas
--
gentoo-dev@gentoo.org mailing list