Supporting third party software in /usr/local

Mike Hearn mike at plan99.net
Thu Oct 20 15:32:39 UTC 2005


Hi,

Every so often people pop up and give us (the autopackage team) flak for
using a default install path of /usr instead of /usr/local.

The reasoning is that as RPM and friends don't check to see if the
software they're installing already exists on the filesystem, it's
possible for a user to install some program (say Inkscape, or AbiWord)
from the upstream autopackage and then install an RPM over the top by
accident, for instance by doing a group install, or if the application is
resolved as part of some other dependency (deps on applications are
bizarre in my mind, but they do happen ...)

This set of problems could be traded for an entirely different set (on
Fedora at least) if /usr/local was fully supported. Currently there are
lots of ways in which software installed here is a second class citizen.
These problems affect source code installs too as most configure scripts
default to /usr/local.

Here are a few I noticed a while back - apologies if these have changed in
rawhide or if I am misremembering:

 * /etc/ld.so.conf doesn't include /usr/local/lib
 * /etc/xdg/menus/applications.menu doesn't merge
   /usr/local/share/applications   [bug #117671]
 * $XDG_DATA_DIRS doesn't include /usr/local/share
 * $BONOBO_ACTIVATION_PATH doesn't include /usr/local/lib/bonobo/servers
 * $KDEDIRS doesn't include /usr/local
 * $PKG_CONFIG_PATH doesn't include /usr/lib/pkgconfig
 * DBUS configuration file does not <includedir> /usr/local/etc/dbus-1/system.d
 * fontconfig doesn't have a <dir> element for /usr/local/share/fonts
 * Actually I'm not even sure regular $PATH includes /usr/local/bin, but
   maybe that was some other distro ...

And at least one weird oddity:

 * Info looks in /usr/share/info and /usr/local/info. Is it top level or
   not?

I think there are some more I missed.

I filed a bug for the menu entries long ago as this is the most visible
thing that breaks when we install out of /usr but I guess for obvious
reasons I didn't bother filing bugs for all of them. There are just too
many and there's bound to be some I forget or miss out.

As this is a policy issue that touches many packages, I think maybe a
better solution would be for the owner of each package to take a 2-minute
break and think "Does my package have a $FOO_DIR or <include>foo</include>
type configuration option? If so, should it include /usr/local?" and then
just go in and fix it. The issues are normally with config files, startup
scripts and so on anyway.

I know I shouldn't really make requests without patches, but in most cases
it'd be faster for the relevant maintainer to just add the line themselves
than read a patch then apply it. 

Does anybody have any objections to doing this? If not, what is the best
thing for me to do - file a single bug and just CC the maintainers of any
affected packages I can think of?

thanks -mike




More information about the fedora-devel-list mailing list