Skip to the content.

上一页      主目录      下一页

46. Printing


本章包含假脱机打印机管理系统和ghostscript应用程序,用于在终端或纸张上显示PostScript。

46.1 Cups-2.4.2


简介Cups

通用Unix打印系统(CUPS,Common Unix Printing System)是一个打印假脱机程序和相关实用程序。它基于“互联网打印协议”,为大多数PostScript和光栅打印机提供打印服务。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Cups 依赖

必要

GnuTLS-3.8.0

推荐

colord-1.4.6, dbus-1.14.6, libusb-1.0.26, Linux-PAM-1.5.2, 和 xdg-utils-1.1.3

可选

Avahi-0.8, libpaper-1.1.24+nmu5, MIT Kerberos V5-1.20.1, PHP-8.2.3, 和 Python-2.7.18

必要 (Postinstall)

cups-filters-1.28.16

可选 (Postinstall)

Gutenprint-5.3.4hplip (HP打印机)

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/cups

内核配置

注意

过去,Cups的libusb后端和usblp内核驱动程序之间存在冲突。现在情况不再是这样了,cups可以在启用这两个选项的情况下工作。

如果您想使用内核usblp驱动程序(例如,如果您希望使用escputil 从 Gutenprint-5.3.4),请在内核配置中启用以下选项并重新编译内核:

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]

如果你有一台并行打印机,在内核配置中启用以下选项并重新编译内核:

Device Drivers  --->
    <*/M> Parallel port support  --->       [CONFIG_PARPORT]
        <*/M> PC-style hardware             [CONFIG_PARPORT_PC]
    Character devices  --->
        <*/M> Parallel printer support      [CONFIG_PRINTER]

安装Cups

您需要添加一个lp用户,因为Cups将创建该用户拥有的一些文件。(lp用户是Cups使用的默认用户,但可以通过向configure脚本传递参数更改为不同的用户。)以root用户使用如下命令:

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

您还需要一个专用组,其中包含允许执行Cups管理任务的用户。以root用户执行如下命令添加组:

groupadd -g 19 lpadmin

如果要将一个用户添加到Cups管理组,以root用户运行以下命令:

usermod -a -G lpadmin <username>

如果你没有安装xdg-utils-1.1.3,使用下面的sed来修改默认的浏览器来访问Cups的web界面:

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

firefox替换为您选择的web浏览器。

运行以下命令构建Cups:

./configure --libdir=/usr/lib            \
            --with-system-groups=lpadmin \
            --with-docdir=/usr/share/cups/doc-2.4.2 &&
make

要测试结果,执行: LC_ALL=C make -k check. 运行测试需要具有总线地址的已激活图形会话。确保没有其他Cups实例在运行,否则至少会有4个测试失败,显示“address in use”。一个名为httpAddrGetList的测试已知会失败。

现在,作为root用户:

make install &&
ln -svnf ../cups/doc-2.4.2 /usr/share/doc/cups-2.4.2

root用户运行以下命令创建一个基本的Cups客户端配置文件:

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

注意

这个包安装图标文件到/usr/share/icons/hicolor层次结构,你可以通过更新/usr/share/icons/hicolor/index.theme来提高系统性能和内存使用。要执行更新,您必须安装GTK+-2.24.33GTK+-3.24.36,并以root用户发出以下命令:

gtk-update-icon-cache -qtf /usr/share/icons/hicolor

命令解释

sed … configure: 这个sed删除了一个不再支持的编译器选项。如果不进行此更改,编译将继续运行,但在每次编译器调用时都会发出关于无效警告选项的警告。

CC=gcc CXX=g++: 如果您更喜欢使用gcc而不是clang,则可以设置它们,后者现在是上游首选。

--with-system-groups=lpadmin: 此开关确保仅使用lpadmin作为Cups管理组。

--disable-libusb: 如果您已经安装了libusb-1.0.26,但希望使用内核usblp驱动程序,请使用此开关。

--enable-libpaper: 如果您已经安装了libpaper并希望在Cups中使用它,请使用此开关。

配置 Cups

配置文件

/etc/cups/*

配置信息

通常,打印机是通过网络浏览器设置的。Cups服务器通常通过url http://localhost:631 进行连接。从那里可以设置和管理打印机、打印作业和服务器配置。还可以设置远程系统管理。还可以通过lpadminlpoptionslpstat命令从命令行进行配置。

Cups的配置取决于打印机的类型,并且可能很复杂。一般来说,PostScript打印机更简单。有关Cups配置和使用的详细说明,请参见https://www.cups.org/documentation.html

对于使用Cups打印的非PostScript打印机,您需要安装ghostscript-10.00.0来将PostScript转换为栅格图像,并安装驱动程序(例如从Gutenprint-5.3.4)来将生成的栅格图像转换为打印机可以理解的形式。Foomatic)驱动程序使用ghostscript-10.00.0直接将PostScript转换为可打印的形式,但Cups开发人员认为这不是最优的。

Linux PAM 配置

如果CUPS是用Linux PAM支持构建的,那么您需要创建一个PAM配置文件,以使它能够正确地与BLFS一起工作。

root用户执行以下命令,创建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

要在有人试图访问cupsd守护进程时启动它,请以root用户运行以下命令启用之前安装的systemd单元:

systemctl enable cups

内容

安装程序: cancel, cupsaccept, cups-config, cupsctl, cupsd, cupsdisable, cupsenable, cupsfilter, cupsreject, cupstestppd, ippeveprinter, ipptool, lp, lpadmin, lpc, lpinfo, lpmove, lpoptions, lpq, lpr, lprm, lpstat, ppdc, ppdhtml, ppdi, ppdmerge, 和 ppdpo

安装库: libcupsimage.so 和 libcups.so

安装目录: /etc/cups, /usr/{include,lib,share}/cups, /usr/share/doc/cups-2.4.2, 和 /var/{cache,log,run,spool}/cups

简短描述

cancel 从打印队列中取消现有的打印作业。

cupsaccept 接受发送到目的地的作业。

cups-config 是Cups程序配置实用程序。

cupsctl 更新或查询服务器的cupsd.conf文件。

cupsd 是通用Unix打印系统的调度程序。

cupsdisable 停止打印和classes。

cupsenable 启动打印机和classes。

cupsfilter 是Cups过滤器子系统的前端,它允许您将文件转换为特定格式。

cupsreject 拒绝发送到目的地的作业。

cupstestppd 测试PPD文件的一致性。

ippeveprinter 是用于CUPS的IPP Everywhere打印机。

ipptool 向指定的URI发送IPP请求,并测试和/或显示结果。

lp 提交要打印的文件或更改挂起的作业。

lpadmin 配置Cups提供的打印机和类队列。

lpc 对Cups提供的打印机和类队列提供有限的控制。

lpinfo 列出Cups服务器已知的可用设备或驱动程序。

lpmove 将指定的作业移动到新的目的地。

lpoptions 显示或设置打印机选项和默认值。

lpq 显示指定打印机上的当前打印队列状态。

lpr 提交打印文件。

lprm 取消已排队等待打印的打印作业。

lpstat 显示有关当前类、作业和打印机的状态信息。

ppdc 将PPDC源文件编译成一个或多个PPD文件。

ppdhtml 读取驱动程序信息文件,并生成一个HTML摘要页面,其中列出了文件中的所有驱动程序和支持的选项。

ppdi 将一个或多个PPD文件导入PPD编译器源文件。

ppdmerge 将两个或多个PPD文件合并为一个多语言的PPD文件。

ppdpo 从PPDC源文件中提取UI字符串,并更新GNU gettext或Mac OS X字符串格式消息目录源文件进行翻译。

libcups.so 包含Cups API函数。

46.2 cups-filters-1.28.16


简介CUPS Filters

CUPS Filters包包含后端、过滤器和其他软件,这些软件曾经是核心CUPS发行版的一部分,但苹果公司已不再维护这些软件。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

CUPS Filters 依赖

必要

Cups-2.4.2, GLib-2.74.5, ghostscript-10.00.0, Little CMS-2.14, Poppler-23.02.0, 和 Qpdf-11.2.0

推荐

Dejavu fonts (如果没有安装它们,则构建失败,尽管它们仅用于测试), libexif-0.6.24, libjpeg-turbo-2.1.5.1, libpng-1.6.39, libtiff-4.5.0, 和 mupdf-1.21.1 (mutool)

可选

Avahi-0.8 (需要构建cups-browsed守护进程的DNSSD后端,这是操作一些网络打印机所需要的), OpenLDAP-2.6.4, PHP-8.2.3 (使用它可能会被破坏), Liblouis (Braille), 和 Liblouisutdml (Braille)

可选的打印机驱动程序 (运行时)

Gutenprint-5.3.4 (对于支持的打印机),或其他打印机驱动程序,例如 hplip

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/cups-filters

安装CUPS Filters

运行以下命令安装CUPS Filters:

./configure --prefix=/usr        \
            --sysconfdir=/etc    \
            --localstatedir=/var \
            --without-rcdir      \
            --disable-static     \
            --disable-avahi      \
            --docdir=/usr/share/doc/cups-filters-1.28.16 &&
make

要测试结果,执行: make check. 测试需要DejaVu字体。

现在,作为root用户:

make install

root用户运行以下命令安装systemd单元:

install -v -m644 utils/cups-browsed.service /lib/systemd/system/cups-browsed.service

命令解释

--disable-avahi: 如果未安装可选的Avahi-0.8,则需要此开关。如果安装了avahi并且需要网络打印机发现功能,请删除它。

--without-rcdir: 此开关禁用与BLFS不兼容的捆绑引导脚本的安装。

--disable-static: 此开关防止安装库的静态版本。

--with-test-font-path=`VALUE`: 如果您希望运行测试,但没有默认的/usr/share/fonts/dejavu/DejaVuSans.ttf,请使用此开关指定DejaVuSans.ttf(或者可能是其他文本TTF字体-未测试)的位置。

配置 CUPS Filters

Systemd Units

要在引导时启动cups-browsed守护进程,以root用户运行以下命令启用之前安装的systemd单元:

systemctl enable cups-browsed

内容

安装程序: cups-browsed, driverless, driverless-fax, 和 foomatic-rip

安装库: libcupsfilters.so 和 libfontembed.so

安装目录: /usr/include/{cupsfilters,fontembed}, /usr/lib/cups/{backend,driver,filter}, /usr/share/cups/{braille,charsets}, /usr/share/doc/cups-filters-1.28.16, 和 /usr/share/ppd/cupsfilters

简短描述

cups-browsed 是一个守护进程,用于浏览共享的远程CUPS打印机的Bonjour和CUPS广播。

driverless 是一个用于driverless打印的PPD生成器实用程序。

driverless-fax 是用于FAX类型设备的driverless的包装器。

foomatic-rip 是一种通用的印刷过滤器/RIP包装,可作为CUPS过滤器或独立使用,spooler-less,direct printing。

libcupsfilters.so 包含CUPS Filters API函数。

46.3 ghostscript-10.00.0


简介Ghostscript

Ghostscript是PostScript数据的通用处理器,具有将PostScript呈现给不同目标的能力。这是一个强制性的cups印刷堆栈的一部分。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

如果您愿意,您可以下载其他字体。

标准字体

其它字体

Ghostscript 依赖

推荐

Cups-2.4.2 (构建cups-filters所需要的“cups”设备后端所需), Fontconfig-2.14.2 (必需的,如果您正在安装任何建议的字体), FreeType-2.13.0, Little CMS-2.14, libjpeg-turbo-2.1.5.1, libpng-1.6.39, libtiff-4.5.0, 和 OpenJPEG-2.5.0

可选

Cairo-1.17.6, GTK+-3.24.36, libidn-1.41, libpaper-1.1.24+nmu5, 和 a graphical environment

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/gs

安装Ghostscript

注意

Ghostscript构建系统不是用户友好的。为了使用各种图形库的系统副本,您必须使用非常规的方法。

Ghostscript包含几个库的(旧)副本。其中一些似乎已经修补了已知的漏洞,但其他副本维护得不太好。为了确保将来的任何修复都在整个系统中应用,建议您首先安装这些库的发布版本,然后配置Ghostscript以链接到它们。

如果您已经在系统上安装了推荐的依赖项,请删除freetype, lcms2, libjpeg, libpng和openjpeg的副本:

rm -rf freetype lcms2mt jpeg libpng openjpeg

编译Ghostscript:

rm -rf zlib &&

./configure --prefix=/usr           \
            --disable-compile-inits \
            --with-system-libtiff   &&
make

注意

共享库依赖于 GTK+-3.24.36. 它只被外部程序使用,如 asymptote-2.85, dvisvgm-3.0.3, 和 ImageMagick-7.1.0-61.

要编译共享库libgs.so,以非特权用户运行以下附加命令:

make so

这个包没有附带测试套件。可以使用一组示例文件进行测试,但只有在安装了包之后才能进行测试。

现在,作为root用户:

make install

如果你也想要共享库:

make soinstall &&
install -v -m644 base/*.h /usr/include/ghostscript &&
ln -sfvn ghostscript /usr/include/ps

现在让文档可以从一个标准的地方访问:

mv -v /usr/share/doc/ghostscript/10.00.0 /usr/share/doc/ghostscript-10.00.0  &&
rm -rfv /usr/share/doc/ghostscript &&
cp -r examples/ /usr/share/ghostscript/10.00.0/

如果你已经下载了字体,将它们解压缩到/usr/share/ghostscript,并确保文件的所有权是root: root

tar -xvf ../ghostscript-fonts-std-8.11.tar.gz -C /usr/share/ghostscript --no-same-owner &&
tar -xvf ../gnu-gs-fonts-other-6.0.tar.gz     -C /usr/share/ghostscript --no-same-owner &&
fc-cache -v /usr/share/ghostscript/fonts/

你现在可以测试从/usr/share/ghostscript/10.00.0/examples中呈现的各种postscript和pdf文件。要做到这一点,运行以下命令(在X窗口显示中):

gs -q -dBATCH /usr/share/ghostscript/10.00.0/examples/tiger.eps

命令解释

rm -rf zlib : zlib是作为LFS的一部分安装的。

--disable-compile-inits: 这个选项使gslibgs.so稍微小一些。

--with-system-libtiff: 如果您没有安装 libtiff-4.5.0 ,请删除此选项。

install -v -m644 base/*.h… : 一些包(ImageMagick是其中之一)需要Ghostscript接口头来链接到共享库。这些命令安装头文件。

ln -sfvn ghostscript /usr/include/ps: 有些包希望在另一个位置找到接口头文件。

mv -v /usr/share/doc/ghostscript/10.00.0 /usr/share/doc/ghostscript-10.00.0: 这会将文档移动到预期的位置。

--disable-cups: 如果你已经安装了Cups-2.4.2库,这个选项将不会把gslibgs.so链接到这些库,从而节省少量的空间。

内容

安装程序: dvipdf, eps2eps, gs, gsbj, gsc (从 soinstall), gsdj, gsdj500, gslj, gslp, gsnd, gsx (从 soinstall), lprsetup.sh, pdf2dsc, pdf2ps, pf2afm, pfbtopfa, pphs, printafm, ps2ascii, ps2epsi, ps2pdf, ps2pdf12, ps2pdf13, ps2pdf14, ps2pdfwr, ps2ps, ps2ps2, 和 unix-lpr.sh

安装库: libgs.so

安装目录: /usr/include/ghostscript, /usr/share/ghostscript, 和 /usr/share/doc/ghostscript-10.00.0

简短描述

gs 是Adobe Systems的PostScript(tm)和可移植文档格式(PDF)的解释器。

libgs.so 为其他程序(如GSView、ImageMagick和libspectre)提供Ghostscript功能。

Ghostscript提供了许多不同的脚本,用于转换PostScript, PDF和其他格式。有关所提供功能的信息,请参阅HTML文档或手册页。

46.4 Gutenprint-5.3.4


简介Gutenprint

Gutenprint(以前的Gimp-Print)包包含许多品牌和型号的打印机的高质量驱动程序,用于Cups-2.4.2和GIMP-2.0。请参阅https://gutenprint.sourceforge.net/p_Supported_Printers.php上支持的打印机列表。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Gutenprint 依赖

推荐

Cups-2.4.2Gimp-2.10.32

推荐 (在运行时)

两个系列的DyeSub照片打印机在运行时都需要另一个库。除非您有这些设备之一,否则您不会需要这些库。

对于Sinfonia S6145和Ciaat Brava 21, libS6145ImageReProcess,请参阅Peachy Photos (Sinfonia),了解如何构建和测试它。

关于三菱D70系列和类似的柯达305,libMitsuD70ImageReProcess,请参阅Peachy Photos (Mitsubishi CP-D70),了解如何构建和测试它。

可选 (重新生成文档)

ImageMagick-7.1.0-61, texlive-20220321 (或 install-tl-unx), Doxygen-1.9.6, 和 DocBook-utils-0.6.14

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/gutenprint

内核配置

如果您打算将escputil与usb连接的爱普生Stylus打印机一起使用,以执行需要访问原始设备的命令,例如–ink-level,则必须启用内核的usblp驱动程序。在内核配置中启用以下选项并重新编译内核:

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]

安装Gutenprint

运行以下命令安装Gutenprint:

sed -i 's|$(PACKAGE)/doc|doc/$(PACKAGE)-$(VERSION)|' \
       {,doc/,doc/developer/}Makefile.in &&

./configure --prefix=/usr --disable-static &&
make

要测试结果,执行: make check. 测试需要很长时间,并且使用大量磁盘空间。在最后一次测试(2019年6月的5.2.15版本)时,需要75 SBU和13.5 GB才能完成测试(一次测试,光栅打印失败,因为CUPS ppds适用于以前的版本。也许应该在测试之前运行genppds)。请注意,测试只使用了一个CPU。

现在,作为root用户:

make install &&
install -v -m755 -d /usr/share/doc/gutenprint-5.3.4/api/gutenprint{,ui2} &&
install -v -m644    doc/gutenprint/html/* \
                    /usr/share/doc/gutenprint-5.3.4/api/gutenprint &&
install -v -m644    doc/gutenprintui2/html/* \
                    /usr/share/doc/gutenprint-5.3.4/api/gutenprintui2

命令解释

sed -i ‘…’ …Makefile.in: 使用此命令是为了将软件包文档安装在传统的/usr/share/doc目录结构中,而不是/usr/share/gutenprint/doc目录结构中。

--disable-static: 此开关防止安装库的静态版本。

配置 Gutenprint

配置信息

为了让CUPS看到新安装的打印驱动程序,它必须重新启动(作为root用户):

systemctl restart cups

然后将web浏览器指向http://localhost:631/,向CUPS添加一台新打印机。

内容

安装程序: cups-calibrate, cups-genppd.5.2, cups-genppdupdate, escputil, 和 testpattern

安装库: libgutenprint.so, libgutenprintui2.so 以及 /usr/lib/gutenprint/5.2/modules/ 下可选的各种CUPS过滤器和后端驱动程序

安装目录: /usr/{include,lib,share}/gutenprint, /usr/include/gutenprintui2 和 /usr/share/doc/gutenprint-5.3.4

简短描述

cups-calibrate 使用Gutenprint, CUPS或ESP Print Pro驱动程序校准打印机的颜色输出。

cups-genppd.5.2 生成用于CUPS的Gutenprint PPD文件。

cups-genppdupdate 重新生成CUPS使用的Gutenprint PPD文件。

escputil 是一个命令行实用程序,用于执行爱普生手写喷墨打印机的各种维护任务。

testpattern 是一个测试程序,学习如何使用libgutenprint。

上一页      主目录      下一页