Kernel Configuration
        
        
          ![[Note]](../images/note.png) 
          
            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.
        
        
          Upstream prefers clang than gcc, but the building system will
          try to use a compiler warning option unsupported by clang. If clang is installed, remove this
          warning option:
        
        sed -e "s/format-truncation//" \
    -i configure \
       config-scripts/cups-compiler.m4
        
          Build Cups by running the
          following commands:
        
        ./configure --libdir=/usr/lib            \
            --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
        
          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]](../images/note.png) 
          
            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.34 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.
        
        
          --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 http://www.cups.org/documentation.php.
          
          
            For non-PostScript printers to print with Cups, you need to install ghostscript-9.56.1
            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-9.56.1 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
         
        
          
            
          
          
             Systemd Unit
          
          
            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