Cups-1.7.5

Introduction to Cups

The Common Unix Printing System (CUPS) is a print spooler and associated utilities. It is based on the "Internet Printing Protocol" and provides printing services to most PostScript and raster printers.

This package is known to build and work properly using an LFS-7.6 systemd platform.

Package Information

Additional Downloads

Cups Dependencies

Recommended

Optional

Avahi-0.6.31, GnuTLS-3.3.7 (if you have it installed, then libgcrypt-1.6.2 is required) or OpenSSL-1.0.1i, Linux-PAM-1.1.8, MIT Kerberos V5-1.12.2, OpenJDK-1.7.0.65/IcedTea-2.5.2, PHP-5.6.0, Python-2.7.8, xdg-utils-1.1.0-rc2, and libpaper

Required (Runtime)

cups-filters-1.0.58

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/cups

Kernel Configuration

[Note]

Note

There used to be a conflict between the Cups libusb backend and the usblp kernel driver. This is no longer the case and cups will work with both of these enabled.

If you want to use the kernel usblp driver (for example, if you wish to use escputil from Gutenprint-5.2.10) enable the following options in your kernel configuration and recompile the kernel:

Device Drivers  --->
  USB support  --->
    OHCI HCD (USB 1.1) support: Y or M
    UHCI HCD (most Intel and VIA) support: Y or M
    USB Printer support: Y or M

If you have a parallel printer, enable the following options in your kernel configuration and recompile the kernel:

Device Drivers  --->
  Parallel port support  --->
    PC-style hardware: Y or M
  Character devices  --->
    Parallel printer support: Y or M

Installation of Cups

You will need to add an lp user, as Cups will create some files owned by this user. (The lp user is the default used by Cups, but may be changed to a different user by passing a parameter to the configure script.) Use the following command as the root user:

useradd -c "Print Service User" -d /var/spool/cups -g lp -s /bin/false -u 9 lp

You will also need a dedicated group that will contain users allowed to do Cups administrative tasks. Add the group by running the following command as the root user:

groupadd -g 19 lpadmin

If you want to add a user to the Cups administrative group, run the following command as the root user:

usermod -a -G lpadmin <username>

If you didn't install xdg-utils-1.1.0-rc2, use the following sed to change the default browser that will be used to access the Cups web interface:

sed -i 's#@CUPS_HTMLVIEW@#firefox#' desktop/cups.desktop.in

Replace firefox with the web browser of your choice.

If you need to access a remote Cups print server, use the following patch:

patch -Np1 -i ../cups-1.7.5-content_type-1.patch

Install Cups by running the following commands:

patch -Np1 -i ../cups-1.7.5-blfs-1.patch &&
patch -Np1 -i ../cups-1.7.5-socket_activation-1.patch &&
aclocal -I config-scripts &&
autoconf -I config-scripts &&

./configure --libdir=/usr/lib                 \
            --with-rcdir=/tmp/cupsinit        \
            --with-docdir=/usr/share/cups/doc \
            --with-system-groups=lpadmin      \
            --with-systemdsystemunitdir=/lib/systemd/system &&
make

To test the results, issue: make -k check. An already active graphical session with bus address is necessary to run the tests. A small number of tests fail for unknown reasons.

Now, as the root user:

make install &&
rm -rf /tmp/cupsinit &&
ln -svf ../cups/doc /usr/share/doc/cups-1.7.5

Create a basic Cups client configuration file by running the following command as the root user:

echo "ServerName /var/run/cups/cups.sock" > /etc/cups/client.conf

Remove filters that are now part of the Cups Filters package by running the following commands as the root user:

rm -rf /usr/share/cups/banners &&
rm -rf /usr/share/cups/data/testprint
[Note]

Note

If you reinstall or update Cups, commands above will break cups-filters-1.0.58, so it needs to be reinstalled.

[Note]

Note

This package installs icon files into the /usr/share/icons/hicolor hierarchy and you can improve system performance and memory usage by updating /usr/share/icons/hicolor/index.theme. To perform the update you must have GTK+-2.24.24 or GTK+-3.12.2 installed and issue the following command as the root user:

gtk-update-icon-cache

Command Explanations

--with-rcdir=/tmp/cupsinit: This switch tells the build process to install the shipped bootscript into /tmp instead of /etc/rc.d.

--with-system-groups=lpadmin: This switch ensures that only lpadmin will be used as the Cups administrative group.

--with-systemdsystemunitdir=/lib/systemd/system: This switch is used to set the correct installation directory for systemd units.

--disable-libusb: Use this switch if you have installed libusb-1.0.19, but wish to use the kernel usblp driver.

--enable-libpaper: Use this switch if you have installed libpaper and wish to use it with Cups.

--disable-gnutls --enable-openssl: This switch tells the build process to use OpenSSL-1.0.1i instead of GnuTLS-3.3.7. The current version of GnuTLS might produce lot of warnings during the Cups build.

Configuring Cups

Config Files

/etc/cups/*

Configuration Information

Configuration of Cups is dependent on the type of printer and can be complex. Generally, PostScript printers are easier. For detailed instructions on configuration and use of Cups, see http://www.cups.org/documentation.php. The Software Administrators Manual and Software Users Manual are particularly useful.

For non-PostScript printers to print with Cups, you need to install ghostscript-9.14 to convert PostScript to raster images and a driver (e.g., from Gutenprint-5.2.10) to convert the resulting raster images to a form that the printer understands. Foomatic drivers use Ghostscript to convert PostScript to a printable form directly, but this is considered to be a hack by Cups developers.

Systemd Units

To start the cupsd daemon when something tries to access it, enable the previously installed systemd units by running the following command as the root user:

systemctl enable cups

Contents

Installed Programs: accept, cancel, cupsaccept, cupsaddsmb, cups-config, cupsctl, cupsd, cupsdisable, cupsenable, cupsfilter, cupsreject, cupstestdsc, cupstestppd, ippfind, ipptool, lp, lpadmin, lpc, lpinfo, lpmove, lpoptions, lppasswd, lpq, lpr, lprm, lpstat, ppdc, ppdhtml, ppdi, ppdmerge, ppdpo and reject
Installed Libraries: libcupscgi.so, libcupsimage.so, libcupsmime.so, libcupsppdc.so and libcups.so
Installed Directories: /etc/cups, /usr/include/cups, /usr/lib/cups, /usr/share/cups, /usr/share/doc/cups-1.7.5, /var/cache/cups, /var/log/cups, /var/run/cups and /var/spool/cups

Short Descriptions

accept

instructs the printing system to accept print jobs to the specified destinations.

cancel

cancels existing print jobs from the print queues.

cupsaddsmb

exports printers to the Samba software for use with Windows clients.

cups-config

is a Cups program configuration utility.

cupsctl

updates or queries the cupsd.conf file for a server.

cupsd

is the scheduler for the Common Unix Printing System.

cupsfilter

is a front-end to the Cups filter subsystem which allows you to convert a file to a specific format.

cupstestdsc

tests the conformance of PostScript files.

cupstestppd

tests the conformance of PPD files.

ippfind

finds internet printing protocol printers.

ipptool

sends IPP requests to the specified URI and tests and/or displays the results.

lp

submits files for printing or alters a pending job.

lpadmin

configures printer and class queues provided by Cups.

lpc

provides limited control over printer and class queues provided by Cups.

lpinfo

lists the available devices or drivers known to the Cups server.

lpmove

moves the specified job to a new destination.

lpoptions

displays or sets printer options and defaults.

lppasswd

adds, changes or deletes passwords in the Cups digest password file passwd.md5.

lpq

shows the current print queue status on the named printer.

lpr

submits files for printing.

lprm

cancels print jobs that have been queued for printing.

lpstat

displays status information about the current classes, jobs, and printers.

ppdc

compiles PPDC source files into one or more PPD files.

ppdhtml

reads a driver information file and produces a HTML summary page that lists all of the drivers in a file and the supported options.

ppdi

imports one or more PPD files into a PPD compiler source file.

ppdmerge

merges two or more PPD files into a single, multi-language PPD file.

ppdpo

extracts UI strings from PPDC source files and updates either a GNU gettext or Mac OS X strings format message catalog source file for translation.

reject

instructs the printing system to reject print jobs to the specified destinations.

libcups.so

contains the Cups API functions.

Last updated on 2014-08-23 11:05:53 -0700