Package: debian-policy Version: 3.8.3.0 We are approaching the point at which it will be useful to begin having packages in the archive that install to the multiarch library paths ({/usr,}/lib/<triplet>), for use with the multiarch-capable package manager that's in progress. However, installing libraries to these paths instead of directly under {/usr,}/lib is an FHS violation and therefore is currently a Policy violation as well.
The following patch grants an exception to the FHS while strictly defining the conditions under which these paths may be used (i.e.: biarch packages must not use these paths), to ensure forward-compatibility with multiarch as it's deployed. I'm aware of only one package in the archive that's buggy with this change in Policy, wine-unstable, which currently (in unstable) has amd64 packages installing libraries to /usr/lib/i486-linux-gnu/; however, this package is already violating Policy at present and is using these directories in a manner inconsistent with the overall plan for multiarch and without coordination. I plan to file a serious bug against that package, pending the outcome of discussion on this bug report. The content of this particular change can also probably use refining - in particular, we may wish to spell out use of /usr/lib/<triplet>/<package> subdirs and /usr/include/<triplet> - but I thought it would be worth getting feedback on this preliminary patch first. --- policy.sgml | 29 +++++++++++++++++++++++++++++ 1 files changed, 29 insertions(+), 0 deletions(-) diff --git a/policy.sgml b/policy.sgml index 0bf8253..9a28f5f 100644 --- a/policy.sgml +++ b/policy.sgml @@ -5584,6 +5584,35 @@ libbar 1 bar1 (>= 1.0-1) </item> <item> <p> + The requirement for libraries, including + <file>libc.so.*</file>, to be located directly under + <file>/lib{,32}</file> and <file>/usr/lib{,32}</file> is + amended, permitting libraries to instead be installed to + <file>/lib/<var>triplet</var></file> and + <file>/usr/lib/<var>triplet</var></file>, where + <tt><var>triplet</var></tt> is the value returned by + <tt>dpkg-architecture -qDEB_HOST_GNU_TYPE</tt> for the + architecture of the package. Packages may <em>not</em> + install libraries to any <var>triplet</var> path other + than the one matching the architecture of that package; + for instance, an <tt>Architecture: amd64</tt> package + containing 32-bit x86 libraries may not install these + libraries to <file>/usr/lib/i486-linux-gnu</file>. + <footnote> + This is necessary in order to reserve the directories for + use in cross-installation of library packages from other + architectures, as part of the planned deployment of + <tt>multiarch</tt>. + </footnote> + </p> + <p> + The execution time linker/loader, ld*, must still be made + available in the existing location under /lib or /lib64 + since this is part of the ELF ABI for the architecture. + </p> + </item> + <item> + <p> The requirement that <file>/usr/local/share/man</file> be "synonymous" with <file>/usr/local/man</file> is relaxed to a -- 1.6.3.1 Thanks, -- Steve Langasek Give me a lever long enough and a Free OS Debian Developer to set it on, and I can move the world. Ubuntu Developer http://www.debian.org/ slanga...@ubuntu.com vor...@debian.org
signature.asc
Description: Digital signature