[Printing-architecture] [lsb-discuss] Agreement on directory structure for printing

Till Kamppeter till.kamppeter at gmail.com
Mon Aug 14 10:10:48 PDT 2006

I think we should agree on the version described below (including
lib64). The version with lib64 allows to provide both 32-bit and 64-bit
dynamic libraries for the case that the driver is interfaced by dynamic
library linking (as OpenPrinting vector without IPC). In a version
without lib64 every program dynamicxally linking drivers would need to
be of either 32-bit or 64-bit, not one of 32-bit and another of 64-bit,
as we can provide only one bit-width of the library. For executables
like IJS drivers or CUPS drivers it is enough to put them always in
../lib/.., as they do not need to be the same bit-width as the caller,
therefore only 64-bit libraries go into ../lib64/..



0. If we have ../lib/.. paths and as 64-bit system (with backward
   compatibility to a 32-bit system), 64-bit-only libraries go into the
   appropriate ../lib64/.. path and 32-bit libraries and all (32-bit and
   64-bit) executables into the ../lib/.. path.

1. Distro supplied files

         The filesystem layout as utilized by the distibutions when the
         ppd files and print drivers are initially installed on the
         system. It is presumed that this will also be used for patches
         and updates created and delivered by the distro.

         a. Installation path for ppd files

         b. Installation path for print drivers

2. Third Party Vendor supplied files

         The filesystem layout to be utilized by third party vendors
         for delivery of ppd files, print drivers and other vendor
         supplied files.

         a. Installation path for PPD files
                 /opt/<supplier>/<internal structure non specified>
            with symlink(s) to let the PPD files appear in

         b. Installation path for print drivers
                 /opt/<supplier>/<internal structure non specified>
            with symlink(s) to let the driver files appear in

         As the symlink paths are not (yet) registered with LANANA it
         should be taken care of not overwriting anything existing with
         them. Post-install script should not simply overwrite
         files/directories. In reality a permission of the sys admin
         would be needed, but in practice this is not always possible as
         post-install scripts called from a package installation need to
         be non-interactive.

3. Files created, downloaded, or modified by a system administrator.

         a. Installation path for PPD files

         b. Installation path for print drivers

4. Common features
         These features apply to each of the three supplier categories,
         distro, third party vendor, and administrator.

         a. PPD file naming convention

         b. The contents of the driver directories are entirely
         determined by the supplier.  The path to a driver is found
         by using an absolute path in the ppd file.

         c. Install scripts must be  written in Bourne Shell without
         any extensions.

5. Precedence Rules
         Highest precedence is given to the system administrator which
         allows for system by system modfications as determined by
         support personel.

         PPD files
         Admin :                 /usr/local/share/ppd           Highest
         Third Party Vendor :    /opt/<supplier>
         Distro :                /usr/share/ppd                 Lowest

         Admin :                 /usr/local/lib(64)/printdriver Highest
         Third Party Vendor :    /opt/<supplier>
         Distro :                /usr/lib(64)/printdriver       Lowest


Michael Sweet wrote:
> Christopher Yeoh wrote:
>> At 2006/8/10 18:43+0200  Andreas Jaeger writes:
>>> On x86-64, ppc64 and s390x I suggest:
>>> {/usr,/usr/local,/opt}/lib/printdriver for 32-bit x86, ppc, s390
>>> libraries
>>> {/usr,/usr/local,/opt}/lib64/printdriver for 64-bit x86-64, ppc64,s390x
>>> libraries
>>> Just don't hardcode lib but add a footnote that on lib64 systems,
>>> lib64 is used,
>> Yes, that would keep it consistent with the rest of the FHS.
> Actually, I'd expect both 32-bit and 64-bit drivers to be supported
> on a 64-bit system, and the default path we use in CUPS will include
> both the 32-bit and 64-bit paths when CUPS is configured for multiple
> architectures...

More information about the Printing-architecture mailing list