Kernel Configuration
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.3.4) enable the following options in your kernel
configuration and recompile the kernel:
Device Drivers --->
[*] USB support ---> [CONFIG_USB_SUPPORT]
<*/M> OHCI HCD (USB 1.1) support [CONFIG_USB_OHCI_HCD]
<*/M> UHCI HCD (most Intel and VIA) support [CONFIG_USB_UHCI_HCD]
<*/M> USB Printer support [CONFIG_USB_PRINTER]
If you have a parallel printer, enable the following options in your
kernel configuration and recompile the kernel:
Device Drivers --->
<*/M> Parallel port support ---> [CONFIG_PARPORT]
<*/M> PC-style hardware [CONFIG_PARPORT_PC]
Character devices --->
<*/M> Parallel printer support [CONFIG_PRINTER]
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.3, 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.
Build Cups by running the following commands:
./configure --libdir=/usr/lib \
--disable-systemd \
--with-rcdir=/tmp/cupsinit \
--with-system-groups=lpadmin \
--with-docdir=/usr/share/cups/doc-2.4.2 &&
make
To test the results, issue: LC_ALL=C make -k check. An already
active graphical session with bus address is necessary to run the tests.
Make sure that there is not other instance of Cups
running, otherwise at least 4 tests will fail with "address in use".
One test, httpAddrGetList
, is known to fail.
Now, as the root
user:
make install &&
ln -svnf ../cups/doc-2.4.2 /usr/share/doc/cups-2.4.2
Remove the shipped bootscript, which is incompatible with LFS:
rm -rf /tmp/cupsinit &&
Create a basic Cups client configuration file
by running the following command as the root
user:
echo "ServerName /run/cups/cups.sock" > /etc/cups/client.conf
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.33 or
GTK+-3.24.36 installed and issue the following command as the
root
user:
gtk-update-icon-cache -qtf /usr/share/icons/hicolor
Command Explanations
sed ... configure: This sed removes a compiler
option which is no longer supported. Leaving this change out, the
compilation will run thru but a warning about an invalid
warning option will be emitted on every compiler invocation.
CC=gcc CXX=g++
: Setting them if you prefer to use
gcc instead of clang, which is
now preferred by the upstream.
--disable-systemd
: Systemd is not supported by
this version of BLFS.
--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.
--disable-libusb
: Use this switch if you have installed
libusb-1.0.26, 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.
Configuring Cups
Configuration Information
Normally, printers are set up via a web browser. The
Cups server will normally connect via
the url http://localhost:631. From there printers, print
jobs, and the server configuration can be set up and managed.
Remote system administration can also be set up. Configuration
can also be done from the command line via the
lpadmin, lpoptions,
and lpstat commands.
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 https://www.cups.org/documentation.html.
For non-PostScript printers to print with
Cups, you need to install ghostscript-10.00.0 to convert PostScript to raster images and a driver
(e.g. from Gutenprint-5.3.4) to convert the resulting
raster images to a form that the printer understands. Foomatic
drivers use ghostscript-10.00.0 to convert PostScript to a printable
form directly, but this is considered suboptimal by
Cups developers.
Linux PAM Configuration
If CUPS has been built with
Linux PAM support, you need to create a
PAM configuration file to get it working
correctly with BLFS.
Issue the following command as the root
user to create the configuration
file for Linux PAM:
cat > /etc/pam.d/cups << "EOF"
# Begin /etc/pam.d/cups
auth include system-auth
account include system-account
session include system-session
# End /etc/pam.d/cups
EOF
Boot Script
If you want the Cups print service to start
automatically when the system is booted, install the init script
included in the blfs-bootscripts-20230101 package:
make install-cups