Any comments or suggestions to this wikipage are welcome!!! ?BR Please openly discuss this on [http://lists.debian.org/debian-printing/ debian-printing mailing list].
Printer Driver Packages Suggested Changes
Created: 06/08/2006 by ?PascalDeVuyst ?BR Last update: 07/08/2006 ?BR
Introduction
This wikipage suggests the changes that should be made to the foomatic, prebuilt PPD and some other printing related packages in Debian to give users a better experience while setting up their printer queues. It mainly describes the changes that should be made to let the current packages in Debian, that provide printer drivers, conform with the PpdFileStructureSpecification. I invite the Debian maintainers of the packages described below in particular and everyone who is interested to discuss the changes I suggest in this wikipage on the [http://lists.debian.org/debian-printing/ debian-printing mailing list]. Any comments or suggestions are welcome!!!
Printer Driver Packages in Debian
The following binary printer driver, prebuilt PPD and Foomatic database packages are available at this moment in Debian (feel free to add missing ones):
- gs-gpl or gs-esp with foomatic-filters-ppds or PPDs generated from foomatic-db
- hpijs with hpijs-ppds or PPDs generated from foomatic-db-hpijs
- ijsgutenprint with PPDs generated from foomatic-db-gutenprint
- foo2zjs, pnm2ppa, min12xxw, c2050, cjet, lexmark7000linux: PPDs in foomatic-filters-ppds or generated from foomatic-db
- cupsys: rasterto binaries with cups-included PPDs
- cupsys-driver-gutenprint: rastertogutenprint.5.0 binary with PPDs generated on installation
- linuxprinting.org-ppds
- hp-ppd
Suggested changes to packages
foomatic-db-engine
Patch /usr/share/perl5/Foomatic/DB.pm to use the PpdFileStructureSpecification *NickName indication.
foomatic-filters-ppds
Since CUPS 1.2 it is possible to use dynamically generated PPD files by using driver programs under the /usr/lib/cups/driver directory. Driver programs must implement a specific command-line interface as described in the cups-driverd manpage, foomatic-ppdfile provides the needed command-line interface since 20060420.
We could drop the foomatic-filters-ppds package completely from Debian and replace it by providing a symlink from /usr/lib/cups/driver/foomatic to /usr/bin/foomatic-ppdfile. The symlink should be part of the cupsys package. Every printer queue setup tool using the CUPS API like CUPS web interface, gnome-cups-manager and KDE Print Manager will use these dynamically generated PPDs automatically. By using dynamically generated PPDs it would be easier to resolve the issues we have with the current static package, see below. Are there tools that still need the static foomatic-filters-ppds package?
If we still want to keep the static foomatic-filters-ppds package we should have 2 seperate packages with prebuilt PPDs: linuxprinting.org-gs-builtin-ppds and linuxprinting.org-gs-filter-ppds:
- linuxprinting.org-gs-builtin-ppds should have all the prebuilt PPDs for binary printer Ghostscript drivers built into in gs-gpl and/or gs-esp.
- linuxprinting.org-gs-filter-ppds should have all the prebuilt PPDs for Ghostscript filters like foo2zjs, pnm2ppa, ...
I think it is better to use the name linuxprinting.org instead of foomatic-filters since there are a lot of other packages that actually need foomatic-filters (e.g. hpijs, ijsgutenprint, ...) and they don't have foomatic-filters in their package name.
Suggested changes:
Remove real PostScript PPDs from foomatic-filters-ppds, these belong in linuxprinting.org-ppds ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=363052 see Debian bug #363052]).
- Include the custom PXL PPDs from Gestetner, Infotec, Lanier, NRG, Ricoh and Savin that were generated with their own tools instead of Foomatic. These PPDs use the pxlmono driver that is built into Ghostscript and should be in linuxprinting.org-gs-builtin-ppds package.
PPDs should be installed under /usr/share/ppd/foomatic-rip/linuxprinting.org-gs-builtin or /usr/share/ppd/foomatic-rip/ghostscript_filter_package_name, where ghostscript_filter_package_name is e.g. foo2zjs, pnm2ppa, ...
*NickName inside PPDs should use the PpdFileStructureSpecification indication.
If you currently set up a printer with CUPS web interface, e.g. a Minolta MagiColor 2430DL that uses foo2zjs binary driver you are able to do so without problems even if the foo2zjs package is not installed. This is also the case for printer drivers that have no Debian package, e.g. epl6100l. To avoid this linuxprinting.org-gs-filter-ppds package should depend on all the binary Ghostscript filter packages available in Debian and only include PPDs files for Ghostscript filter packages available in Debian. People only wanting a PPD for their printer can generate it from foomatic-db or use foomatic-configure or foomatic-gui to immediately setup their printer.
Currently the foomatic-filters-ppds package is generated from the tar.gz source with the same name from linuxprinting.org. If we decide to stick with static PPDs it would be better to generate these from foomatic-db source.
If we use dynamically generated PPDs we should decide what to do with the custom PXL PPDs from Gestetner, Infotec, Lanier, NRG, Ricoh and Savin that were generated with their own tools instead of Foomatic. My suggestion is to create a linuxprinting.org-ricoh-pxl-ppds package for them.
linuxprinting.org-ppds
We should have a package that only includes real PostScript PPDs, therefore the linuxprinting.org-ppds package should be renamed to linuxprinting.org-postscript-ppds.
- PPDs should be installed under /usr/share/ppd/postscript/linuxprinting.org/
Rename to linuxprinting.org-postscript-ppds and remove custom PXL PPDs from Gestetner, Infotec, Lanier, NRG, Ricoh and Savin that were generated with their own tools instead of Foomatic ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=363054 see Debian bug #363054]). The PXL custom PPDs should be part of linuxprinting.org-gs-builtin-ppds or linuxprinting.org-ricoh-ppds.
*NickName inside PPDs should have the PpdFileStructureSpecification indication.
hpijs-ppds
- PPDs should be installed under /usr/share/ppd/foomatic-rip/hpijs/
Add the missing non-HP hpijs PPDs ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=379863 see Debian bug #379863]).
*NickName inside PPDs should have the PpdFileStructureSpecification indication.
The above issues could easily be resolved by using dynamically generated PPDs through the CUPS API from foomatic-db-hpijs and remove the hpijs-ppds package from Debian.
One reason to keep a static hpijs-ppds package could be because the hp-setup printer queue setup tool from hplip needs static PPDs. We could keep the foomatic-rip PPDs together with real PostScript PPDs from hplip source but they shouldn't be installed under /usr/share/ppd to avoid duplicate entries when PPDs are retrieved via the CUPS API. It would still be better to alter hp-setup to use the CUPS API or the command line interface for driver programs for retrieving PPDs, because then the same PPD file would be used independent of the printer queue setup tool that was used.
foomatic-db
Repack after running "foomatic-cleanupdrivers" to remove unwanted drivers that are only used to list supported printers on the linuxprinting.org website. It is not possible to generate PPDs from these pseudo-drivers since there is no Ghostscript command line. This avoids errors in tools that use foomatic-db. If you currently try to install a HP DeskJet 520 printer in foomatic-gui with driver "gutenprint" this won't work and gives no error message or warning. This is because "gutenprint" is a pseudo-driver only used to list supported printers on the linuxprinting.org website. Only if you install the foomatic-db-gutenprint package you get the real "gutenprint-ijs.5.0" driver that is able to generate PPDs.
- Should include a Foomatic driver to Debian package mapping file. This would enable printer queue setup tools like foomatic-gui to give a warning message or give the possibility to install the needed Debian package immediately if you select a driver that is currently not installed on your system. This mapping file should list all Foomatic drivers with their corresponding Debian package, if there is no Debian package available for a driver this should be indicated by e.g. "nopackage". This would allow printer queue setup tools to give a different warning message that suggests to install the driver from source.
foomatic-db-hpijs
Remove driver/hpijs-rss.xml and opt/hpijs-rss-* ?BR These files are only used to generate hpijs 1.2.x supported PPDs. Debian no longer supports this old hpijs version. The PPDs are just very old and do not contain anything special to activate the rss patches, the only thing they do is confuse people. The rss patches are available in the hpijs version in Debian and will be used with PPDs generated form driver/hpijs.xml.
cupsys
- PPDs should be installed under /usr/share/ppd/cups-raster/cups-included/
dymo.ppd should have *Manufacturer: "Dymo-CoStar".
*NickName inside PPDs should have the PpdFileStructureSpecification indication.
- Should check if the /etc/ppd/ directory exists when this package is installed, if not create it and apply group-writable permissions for lpadmin user.
- Currently CUPS looks under /usr/share/ppd/ for PPDs. In /usr/share/ppd/ is cups-transitional-dir, a symlink pointing to /usr/share/cups/model/. In /usr/share/cups/model is cups-included, a symlink that points to /usr/share/ppd/cups-included/. This makes CUPS find duplicate cups-included PPDs, first by directly looking in /usr/share/ppd/cups-included/ and second by following the cups-transitional-dir and cups-included symlinks. The cups-included symlink should be removed to resolve this issue.
- Instead of using symlinks CUPS should directly look for PPDs in both /usr/share/ppd/, /usr/share/cups/model/ (for compatibility) and /etc/ppd/
- Include a symlink from /usr/lib/cups/driver/foomatic to /usr/bin/foomatic-ppdfile to allow dynamic generation of PPD files with foomatic-ppdfile.
cupsys-driver-gutenprint
- PPDs should be installed under /usr/share/ppd/cups-raster/gutenprint-5.0.0/
*NickName inside PPDs should have the PpdFileStructureSpecification indication.
Instead of providing static PPDs in the cupsys-driver-gutenprint package it would be better to have a driver program with the CUPS command line interface to allow dynamic generation of PPD files.
gs-esp
- pxlmono.ppd and pxlcolor.ppd should be installed under /usr/share/ppd/cups-raster/gs-esp/
- *Manufacturer inside these PPDs should be "Generic", nobody will look under "ESP".
*NickName inside PPDs should have the PpdFileStructureSpecification indication using "pstopxl" as driver_name.
lpr
- Should check if the /etc/ppd/ directory exists when this package is installed, if not create it and apply group-writable permissions for lpadmin user.
lprng
- Should check if the /etc/ppd/ directory exists when this package is installed, if not create it and apply group-writable permissions for lpadmin user.
hp-ppd
The hp-ppd package should be removed from Debian. ?BR Some ppds in this package are very old and nearly all are available at http://www.linuxprinting.org/foomatic-db/db/source/PPD/HP/ which are included in debian package linuxprinting.org-ppds.
HP_Business_Inkjet_2500C_Series.ppd: this seems to be the PPD for HP 2500C instead of Business Inkjet 2500C. According to HP's website only the HP 2500CM is able to understand PostScript. This file can not be found on www.linuxprinting.org, we should send it to them.
HP_ColorLaserJet_5-5M.ppd: newer PPD available at http://www.linuxprinting.org/foomatic-db/db/source/PPD/HP/color_laser/HP_Color_LaserJet_5M.ppd
HP_DeskJet_350C.ppd, HP_DeskJet_600C_Photo_Series.ppd, HP_DeskJet_600C_Series.ppd, HP_DeskJet_630C.ppd, HP_DeskJet_800C_Series.ppd, HP_DeskJet_900C_Series.ppd, HP_DeskJet_990C.ppd: this are very old PPDs generated from an alpha quality cupsomatic. All *omatic scripts no longer exists and have been merged into Foomatic, please remove them.
HP_LaserJet_3200M.ppd: newer PPD version available at http://www.linuxprinting.org/foomatic-db/db/source/PPD/HP/mono_laser/HP_LaserJet_3200.ppd
HP_LaserJet_5000_Series.ppd: same PPD version available at http://www.linuxprinting.org/foomatic-db/db/source/PPD/HP/mono_laser/HP_LaserJet_5000_Series.ppd
HP_LaserJet_5.ppd: newer PPD version available at http://www.linuxprinting.org/foomatic-db/db/source/PPD/HP/mono_laser/HP_LaserJet_5M.ppd
HP_LaserJet_5P.ppd: newer PPD available at http://www.linuxprinting.org/foomatic-db/db/source/PPD/HP/mono_laser/HP_LaserJet_5MP.ppd
HP_LaserJet_6P.ppd: same PPD version available at http://www.linuxprinting.org/foomatic-db/db/source/PPD/HP/mono_laser/HP_LaserJet_6MP.ppd
We need more printer driver packages in Debian
We should provide more printer drivers in Debian, the drivers listed below currently have no packages in Debian and have a GPL license. Feel free to add any drivers missing in the lists.
Ghostscript filter drivers
c2070: http://www.kornblum.i-p.com/2070/Lexmark2070.html, perhaps can be merged with c2050 into one package?
lz11-V2: http://sourceforge.net/projects/lz11
pbm2lwxl: http://www.freelabs.com/~whitis/software/pbm2lwxl/
pentaxpj: http://www.pragana.net/gdiprinters.html
cups-raster drivers
rastertokmXXXXdl: http://www.linuxprinting.org/show_driver.cgi?driver=rastertokmXXXXdl
Old resolved issues
hplip-ppds package (now hpijs-ppds) incorrectly uses *Manufacturer: "HP (HPLIP)" inside PPDs. See [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=347264 bug #347264] [SOLVED].
foomatic-filters-ppds package contains the same hpijs ppds as hplip-ppds package. To avoid this duplication hpijs PPDs should be provided by only one package. The hpijs ppds should be provided by hplip-ppds package so they always match with the installed version of binary HPIJS Ghostscript drivers. Hpijs ppds from hplip project should be removed from package foomatic-filters-ppds, see [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=347668 bug #347668] [SOLVED].
A package foomatic-db-postscript-ppds could be created to replace hp-ppd, this package should contain real PPDs for PostScript printers from foomatic-db project found at http://www.linuxprinting.org (this project currently contains real PPDs from different printer manufacturers). A new package linuxprinting.org-ppds has been created by ChrisLawrence [SOLVED].
CUPS does not yet include the symbolic link, see [http://bugs.debian.org/358186 bug #358186]. CUPS now directly looks for PPDs under /usr/share/ppd/ [SOLVED].
?MartinPitt: where to put user-provided PPD files? (Proposal: /usr/share/ppd/custom -> /etc/ppd/ symlink; which package owns that?) It needs to be group-writable by user lpadmin, so that printer admins can install PPDs through e.g. gnome-cups-manager. Has been addressed in the PpdFileStructureSpecification. Printer queue setup tools should directly look under /etc/ppd for user-provided and custom PPDs, there is no need for a symlink.