Debian-Project - Release Goals for Version 2.1
Make slink FHS-compliance
This has been proposed by Yann Dirson and elaborated by James R. Van Zandt.The FHS.
- Documentation
The first major change I see is that documentation has moved to /usr/share. To accommodate this, I suggest we take the following steps:
- Change the policy to specify man pages in /usr/share/man, info pages in /usr/share/info, and miscellaneous docs in /usr/share/doc. (Who is maintaining the policy now?)
- Modify the man and info readers to look for files in /usr/share/{man,info} in addition to the current places. Likewise info2www, man2html, dhelp, and dwww.
- Modify install-info (from the dpkg package) to work with files in /usr/share/info as well as /usr/info (that is, maintain a "dir" file in each directory). Likewise, modify dhelp_parse to generate its index in /usr/share/doc/HTML.
- Modify debhelper and debmake to put man and info files in /usr/share/{man,info}, and miscellaneous docs into /usr/share/doc.
- Ask developers to start using the new locations, and update the manpages* packages.
- Modify lintian to issue a warning for documentation outside /usr/share.
- (much later) Change the lintian warning to an error.
I think the steps have to be done in pretty close to this order. I may have missed some steps, though. In particular, I don't know how HTML docs are handled.
I am not proposing that we have to complete all these steps, let alone convert all our packages, before releasing slink. In fact, a mixed system will be somewhat awkward. Maybe we should get slink released before we go to step 4.
- /var/lib is deprecated
The other major change I see is that /var/lib is deprecated, in
favor of /var/state. That means of course that all the dpkg state
files get moved, which I suspect will have endless ramifications.
The FHS does allow for some leeway, though:
5.11 ... /var/lib is deprecated, but it may be used in parallel with the required /var/state hierarchy, as a transitional measure for application-specific data. Note, however, that this allowance will be removed in a future release of the standard. Alternately, /var/lib may be made a symbolic link to /var/state.
Maybe we should use that symbolic link option for a while, at least. - Exceptions from the FHS
I believe we will take exception to these parts of the FHS, and I
think we should adopt some official statement to that effect:
6.1.5 /usr/include : Header files included by C programs
(Note that even a "partially compliant" distribution is required to include "a list of all places at which it and the FHS document differ in addition to a brief explanation of the reasoning for this difference.")These symbolic links are required if a C or C++ compiler is installed.
/usr/include/asm -> /usr/src/linux/include/asm-<arch>
/usr/include/linux -> /usr/src/linux/include/linux6.1.6 /usr/src : Source code
The only source code that should be placed in a specific location is the Linux kernel source code. It is located in /usr/src/linux.
If a C or C++ compiler is installed, but the complete Linux kernel source code is not installed, then the include files from the kernel source code shall be located in these directories:
/usr/src/linux/include/asm-<arch>
<arch> is the name of the system architecture.
Note: /usr/src/linux may be a symbolic link to a kernel source code tree.
Alternative proposal by Raul Miller:
- Change the policy,
- Make some essential package for slink provide the symlink /usr/share -> ..
- Modify lintian to issue an error for use of /usr when /usr/share is appropriate, same for references to /usr/man, /usr/info, /usr/doc/.
- Update all packages and support programs.
- Eventually, when everything is converted, modify that essential package so that /usr/share is a proper directory, and the documenation directories are moved under /usr/share/.