[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Moving to FHS: A new proposal



I've spent some time thinking up various ways to move to the FHS
without breaking compatibility.  Everything I came up with had fatal
flaws in it, except one.  I'll spare you the failures and just present
a proposal that I think will work :-)

The elements do not have to be completed in a specific order, so this
time I did not number them:

  - Policy change:
    No package may install files in /usr/share/doc, /usr/share/info,
    or /usr/share/man.
    The directories /usr/doc, /usr/info, and /usr/man are off-limits for
    architecture-specific files.

  - Lintian checks are written for the points above.  A preliminary scan
    shows that only /usr/share/man is currently used, by gnats-tk.
    There are some ELF binaries in /usr/doc/*/examples/ directories.

  - base-files provides a utility "fhsconfig" that moves these directories
    to their counterparts in /usr/share, and installs these symlinks:
       /usr/doc -> share/doc
       /usr/info -> share/info
       /usr/man -> share/man
    fhsconfig is intended to be run interactively by the sysadmin.
    If the destination directories exist and are not empty, fhsconfig will
    fail and report the problem.  Its role is similar to "shadowconfig".
    ("fhsconfig off" can be provided if someone figures out a way to
     make it reversible.)

  - The installation procedure is modified so that new installations start
    out with those symlinks.

  - Packages will install their doc, info, and man files in /usr/doc,
    /usr/info, and /usr/man for ever after.  dpkg will install them there
    on FSSTND systems, and will follow the symlinks on FHS systems.

In the meantime, we can start addressing other FHS issues:

  - Policy change: Maintainers are encouraged to move files from FSSTND
    directories to FHS directories, if they can be moved without needing
    a compatibility symlink.
    New packages must not create new non-FHS directories.

  - A list is made of what sort of files need to be moved.  So far
    I know of /usr/lib to /usr/share (for architecture-independent files),
    and /var/lib to /var/cache and /var/state (whichever is appropriate).

Primary Advantage:

  We maintain full backwards compatibility.  No files are moved on a
  system until the administrator decides to move them.  People can
  install packages from slink and beyond without any hassle.  (At the
  same time, they can convert whenever they want, and there are no messy
  hybrid situations).

Secondary Advantage:

  Most packages will not need to be changed.  This saves us a lot of work.

Primary Disadvantage:

  The directories /usr/doc, /usr/man, and /usr/info will never be available
  as architecture-specific counterparts to the /usr/share directories.

Secondary Disadvantage:

  As the rest of the world moves to the FHS, upstream makefiles may
  start installing files in /usr/share/man and /usr/share/info, which
  our policy won't allow.  Fortunately this is easily corrected in the
  debian/rules file.

What do you think?

Richard Braakman


--  
To UNSUBSCRIBE, email to debian-devel-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org


Reply to: