强曰为道

与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

第 2 章:安装与初始配置

第 2 章:安装与初始配置

本章将详细介绍如何在各种 Linux 发行版上安装 CUPS,完成初始配置,掌握 Web 管理界面的使用,并学会安装打印机驱动。


2.1 系统要求与准备

2.1.1 硬件要求

组件最低要求推荐配置
CPU1 核2 核+
内存256MB512MB+
磁盘空间200MB1GB+(含驱动和日志)
网络可选推荐(用于网络打印)
USB 端口可选如需连接本地打印机

2.1.2 软件要求

# 检查系统版本
cat /etc/os-release

# 确认支持的发行版
# Ubuntu 20.04+, Debian 11+, CentOS 7+, Fedora 35+, Arch Linux

# 更新系统包(Ubuntu/Debian)
sudo apt update && sudo apt upgrade -y

# 更新系统包(CentOS/RHEL)
sudo yum update -y

2.1.3 权限要求

# 确认当前用户具有 sudo 权限
sudo whoami
# 输出: root

# 或者将用户添加到 sudo 组
sudo usermod -aG sudo $USER

2.2 CUPS 安装

2.2.1 Ubuntu/Debian 安装

# 方法 1: 使用 APT 安装(推荐)
sudo apt update
sudo apt install -y cups

# 方法 2: 安装完整套件(包含额外工具)
sudo apt install -y cups cups-bsd cups-client cups-filters

# 方法 3: 安装开发包(如需编译驱动)
sudo apt install -y libcups2-dev lib cups-dev

# 验证安装
cups-config --version
# 输出示例: 2.4.1

包说明

包名说明
cupsCUPS 核心服务
cups-bsdBSD 兼容命令(lpr, lpq, lprm)
cups-clientCUPS 客户端工具
cups-filters额外的过滤器和后端
cups-pdfPDF 虚拟打印机
printer-driver-gutenprintGutenprint 驱动集合
printer-driver-hpcupsHP 打印机驱动
printer-driver-foo2zjsfoo2zjs 驱动(支持多品牌)

2.2.2 CentOS/RHEL 安装

# CentOS 7 / RHEL 7
sudo yum install -y cups cups-libs cups-client

# CentOS 8+ / RHEL 8+ / Fedora
sudo dnf install -y cups cups-libs cups-client

# 验证安装
rpm -qa | grep cups

2.2.3 Arch Linux 安装

# 安装 CUPS
sudo pacman -S cups cups-pdf

# 安装打印机驱动
sudo pacman -S ghostscript gsfonts

# 启用服务
sudo systemctl enable --now cups.service

2.2.4 openSUSE 安装

# 安装 CUPS
sudo zypper install cups cups-client cups-filters

# 启动服务
sudo systemctl start cups
sudo systemctl enable cups

2.3 服务管理

2.3.1 systemd 服务管理

# 启动 CUPS 服务
sudo systemctl start cups

# 停止 CUPS 服务
sudo systemctl stop cups

# 重启 CUPS 服务
sudo systemctl restart cups

# 重新加载配置(不中断服务)
sudo systemctl reload cups

# 查看服务状态
sudo systemctl status cups

# 设置开机自启
sudo systemctl enable cups

# 禁用开机自启
sudo systemctl disable cups

服务状态输出示例

● cups.service - CUPS Scheduler
     Loaded: loaded (/lib/systemd/system/cups.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2026-05-10 09:00:00 CST; 5min ago
       Docs: man:cupsd(8)
   Main PID: 1234 (cupsd)
     Status: "Scheduler is running..."
      Tasks: 1 (limit: 4567)
     Memory: 2.3M
        CPU: 123ms
     CGroup: /system.slice/cups.service
             └─1234 /usr/sbin/cupsd -l

2.3.2 cupsd 进程管理

# 直接启动 cupsd
sudo /usr/sbin/cupsd

# 以调试模式启动
sudo /usr/sbin/cupsd -f

# 查看 cupsd 进程
ps aux | grep cupsd

# 查看 cupsd 监听的端口
sudo netstat -tlnp | grep cupsd
# 或
sudo ss -tlnp | grep cupsd

# 输出示例:
# tcp  0  0  0.0.0.0:631   0.0.0.0:*  LISTEN  1234/cupsd
# tcp  0  0  127.0.0.1:631 0.0.0.0:*  LISTEN  1234/cupsd

2.3.3 查看 CUPS 信息

# 查看 CUPS 版本
cups-config --version

# 查看 CUPS 安装路径
cups-config --serverbin
# 输出: /usr/lib/cups

cups-config --datadir
# 输出: /usr/share/cups

cups-config --cupsdconf
# 输出: /etc/cups/cupsd.conf

# 查看所有 CUPS 配置信息
cups-config --all

2.4 初始配置

2.4.1 配置文件结构

# CUPS 主要配置文件位置
/etc/cups/
├── cupsd.conf          # 主配置文件
├── cups-files.conf     # 文件路径配置
├── printers.conf       # 打印机配置(自动生成)
├── classes.conf        # 打印机组配置
├── subscriptions.conf  # 订阅配置
├── mime.types          # MIME 类型定义
├── mime.convs          # MIME 转换规则
├── raw.convs           # 原始转换规则
├── raw.types           # 原始类型定义
├── ppd/                # PPD 文件目录
├── ssl/                # SSL 证书目录
└── cupsd.conf.default  # 默认配置备份

2.4.2 主配置文件 cupsd.conf

# 备份默认配置
sudo cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.backup

# 编辑配置文件
sudo vim /etc/cups/cupsd.conf

基本配置示例

# /etc/cups/cupsd.conf

# 日志级别:none, emerg, alert, crit, error, warn, notice, info, debug
LogLevel info

# 监听地址
# 仅本地访问
Listen localhost:631
# 或监听所有网络接口
# Listen 0.0.0.0:631
# 或监听特定 IP
# Listen 192.168.1.100:631

# 监听 Unix 域套接字
Listen /run/cups/cups.sock

# Web 管理界面访问控制
<Location />
  Order allow,deny
  Allow localhost
  Allow 192.168.1.0/24
</Location>

# 管理界面访问控制
<Location /admin>
  Order allow,deny
  Allow localhost
  Allow 192.168.1.0/24
  AuthType Default
  Require user @SYSTEM
</Location>

# 配置文件访问控制
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
  Allow localhost
</Location>

# 打印机管理访问控制
<Location /admin/log>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
  Allow localhost
</Location>

# 默认认证方式
DefaultAuthType Basic

# 默认加密
DefaultEncryption IfRequested

# 最大并发客户端
MaxClients 100

# 最大日志大小 (MB)
MaxLogSize 1m

# 打印任务保留时间
JobHistory 1d
JobFiles 1d

# 自动共享本地打印机
BrowseLocalProtocols dnssd

# 默认打印机共享
# 共享所有打印机(需要配置)
# DefaultShared Yes

2.4.3 cups-files.conf 配置

# /etc/cups/cups-files.conf

# 文件位置配置
ServerBin /usr/lib/cups
DataDir /usr/share/cups
DocumentRoot /usr/share/doc/cups
RequestRoot /var/spool/cups
CacheDir /var/cache/cups
TempDir /tmp

# 日志文件位置
AccessLog /var/log/cups/access_log
ErrorLog /var/log/cups/error_log
PageLog /var/log/cups/page_log

# 打印机配置文件
Printcap /var/run/cups/printcap

# 默认用户
User lp
Group lp

# 权限设置
ConfigFilePerm 0640
LogFilePerm 0644

# SSL 证书位置
ServerKeychain /etc/cups/ssl

2.4.4 应用配置更改

# 方法 1: 重启 CUPS 服务
sudo systemctl restart cups

# 方法 2: 发送 HUP 信号重新加载配置
sudo killall -HUP cupsd

# 方法 3: 使用 systemctl 重新加载
sudo systemctl reload cups

# 验证配置文件语法
sudo cupsd -t
# 输出: "cupsd.conf" is OK

2.5 Web 管理界面

2.5.1 访问 Web 界面

# 确认 CUPS 服务正在运行
sudo systemctl status cups

# 访问 Web 界面
# 本地访问: http://localhost:631
# 远程访问: http://<服务器IP>:631

# 如果远程无法访问,检查防火墙
sudo ufw allow 631/tcp
# 或
sudo firewall-cmd --permanent --add-port=631/tcp
sudo firewall-cmd --reload

2.5.2 Web 界面功能导航

Web 界面分为以下几个主要部分:

菜单功能路径
Home首页概览/
Administration管理打印机和任务/admin
Classes打印机组管理/admin/classes
Jobs打印任务管理/admin/jobs
Printers打印机列表和详情/printers
Help帮助文档/help

2.5.3 添加打印机(Web 界面)

步骤 1:进入管理页面

1. 打开浏览器访问 http://localhost:631
2. 点击 "Administration" 标签
3. 点击 "Add Printer" 按钮

步骤 2:认证

输入具有 lpadmin 权限的用户名和密码
通常是 root 或 sudo 用户

步骤 3:选择打印机

- Local Printers: 本地连接的打印机(USB、并口)
- Discovered Network Printers: 自动发现的网络打印机
- Internet Printing Protocol (IPP): 手动添加 IPP 打印机
- AppSocket/HP JetDirect: 使用 Socket 协议
- LPD/LPR Host or Printer: 使用 LPD 协议

步骤 4:配置打印机

- Name: 打印机名称(必填,不含空格)
- Location: 位置描述(可选)
- Description: 描述信息(可选)
- Sharing: 是否共享此打印机

步骤 5:选择驱动

- 选择打印机制造商
- 选择打印机型号
- 或上传 PPD 文件
- 或选择"Generic"通用驱动

步骤 6:设置默认选项

- 纸张大小 (Media Size)
- 打印质量 (Print Quality)
- 双面打印 (Duplex)
- 颜色模式 (Color Mode)

2.5.4 Web 界面管理任务

# 查看打印任务
# 访问 http://localhost:631/admin/jobs

# 或使用命令行
lpstat -o
# 输出示例:
# myprinter-1  user  1024  Thu 10 May 2026 09:00:00 AM
# myprinter-2  user  2048  Thu 10 May 2026 09:05:00 AM

# 取消指定任务
cancel myprinter-1

# 取消所有任务
cancel -a myprinter

# 暂停打印机
cupsdisable myprinter

# 恢复打印机
cupsenable myprinter

# 接受任务
cupsaccept myprinter

# 拒绝任务
cupsreject myprinter

2.6 命令行管理工具

2.6.1 CUPS 原生命令

# lpadmin - 管理打印机和类
# 添加打印机
sudo lpadmin -p myprinter -E -v socket://192.168.1.100 \
  -P /usr/share/ppd/HP/hp-laserjet_pro_m404.ppd

# 删除打印机
sudo lpadmin -x myprinter

# 设置默认打印机
sudo lpadmin -d myprinter

# 设置打印机选项
sudo lpadmin -p myprinter -o media=A4 -o sides=two-sided

# lpstat - 查看打印状态
# 查看所有打印机
lpstat -p -d

# 查看打印队列
lpstat -o

# 查看特定打印机状态
lpstat -p myprinter

# 查看默认打印机
lpstat -d

# 查看 CUPS 服务器状态
lpstat -r

# lpoptions - 管理打印选项
# 查看打印机选项
lpoptions -p myprinter -l

# 设置默认选项
lpoptions -p myprinter -o media=A4

# 查看当前选项
lpoptions -p myprinter

# cupsenable/cupsdisable - 启用/禁用打印机
sudo cupsenable myprinter
sudo cupsdisable myprinter

# cupsaccept/cupsreject - 接受/拒绝打印任务
sudo cupsaccept myprinter
sudo cupsreject myprinter

# lpmove - 移动打印任务
sudo lpmove myprinter-123 otherprinter

# lpc - 行式打印机控制
sudo lpc status
sudo lpc restart myprinter

2.6.2 BSD 兼容命令

# 需要安装 cups-bsd 包
sudo apt install cups-bsd

# lpr - 打印文件
lpr -P myprinter document.pdf

# lpq - 查看打印队列
lpq -P myprinter

# lprm - 删除打印任务
lprm -P myprinter 123

# lpc - 打印机控制
lpc status

2.6.3 打印测试页

# 方法 1: 使用 lp 命令打印测试页
sudo lp -d myprinter /usr/share/cups/data/testprint

# 方法 2: 使用 cupsenable 测试
sudo cupsenable myprinter
sudo cupsaccept myprinter
sudo lp -d myprinter /etc/cups/cupsd.conf

# 方法 3: 通过 Web 界面
# 访问 http://localhost:631/printers/myprinter
# 点击 "Print Test Page"

# 方法 4: 使用 PPD 文件中的测试页
sudo lp -d myprinter /usr/share/ppd/HP/hp-laserjet_pro_m404.ppd

2.7 打印机驱动安装

2.7.1 驱动类型概览

驱动类型说明包名示例
Gutenprint开源驱动,支持广泛printer-driver-gutenprint
HPLIPHP 专用驱动hplip
Foomatic驱动数据库foomatic-db, foomatic-db-engine
厂商驱动制造商提供因厂商而异
通用驱动PostScript/PCLprinter-driver-brlaser
IPP Everywhere无需驱动CUPS 2.2+ 内置

2.7.2 安装通用驱动

# Ubuntu/Debian
sudo apt install -y \
  printer-driver-gutenprint \
  printer-driver-hpcups \
  printer-driver-postscript-hp \
  printer-driver-splix \
  printer-driver-brlaser \
  printer-driver-foo2zjs

# CentOS/RHEL
sudo yum install -y \
  cups-filters \
  cups-filters-libs \
  ghostscript

2.7.3 安装 HP 驱动 (HPLIP)

# 安装 HPLIP
sudo apt install -y hplip

# 验证安装
hp-check

# 运行 HP 打印机设置向导
hp-setup

# 命令行添加 HP 打印机
hp-makeuri 192.168.1.100
# 输出: HP LaserJet Pro M404
#        uri: hp:/net/HP_LaserJet_Pro_M404?ip=192.168.1.100

# 使用 URI 添加打印机
sudo lpadmin -p HPM404 -E -v "hp:/net/HP_LaserJet_Pro_M404?ip=192.168.1.100" \
  -P /usr/share/ppd/HP/hp-laserjet_pro_m404.ppd

HPLIP 常用命令

# 查看已安装的 HP 打印机
hp-probe

# 检查打印机状态
hp-info -p HPM404

# 打印测试页
hp-testpage -p HPM404

# 清洁打印头
hp-clean -p HPM404

# 对齐打印头
hp-align -p HPM404

# 固件升级
hp-firmware -p HPM404

2.7.4 安装 Gutenprint 驱动

# 安装 Gutenprint
sudo apt install -y printer-driver-gutenprint

# 查看支持的打印机列表
lpinfo -m | grep -i gutenprint | head -20

# 使用 Gutenprint 驱动添加打印机
sudo lpadmin -p CanonPrinter -E \
  -v socket://192.168.1.101 \
  -P /usr/share/ppd/gutenprint/5.3/C/stp-inkjet-6l.5.3.ppd

2.7.5 使用厂商驱动

# 下载厂商驱动
# 以 Brother 为例
wget https://download.brother.com/welcome/dlf103557/brgen3lpr-3.1.5-1.i386.deb
wget https://download.brother.com/welcome/dlf103558/brgen3cupswrapper-3.1.5-1.i386.deb

# 安装驱动
sudo dpkg -i --force-all brgen3lpr-3.1.5-1.i386.deb
sudo dpkg -i --force-all brgen3cupswrapper-3.1.5-1.i386.deb

# 修复依赖
sudo apt -f install

# 添加打印机
sudo lpadmin -p BrotherPrinter -E \
  -v socket://192.168.1.102 \
  -P /usr/share/ppd/brother/brgen3lpr.ppd

2.7.6 使用 Foomatic 数据库

# 安装 Foomatic
sudo apt install -y foomatic-db foomatic-db-engine foomatic-db-ppds

# 搜索打印机驱动
foomatic-ppdfile -l | grep -i "HP LaserJet"

# 生成 PPD 文件
foomatic-ppdfile -p "HP LaserJet Pro M404" > hp-m404.ppd

# 使用 PPD 文件添加打印机
sudo lpadmin -p HPM404 -E \
  -v socket://192.168.1.100 \
  -P hp-m404.ppd

2.8 使用 lp 命令打印

2.8.1 基本打印命令

# 打印文件到默认打印机
lp document.pdf

# 打印到指定打印机
lp -d myprinter document.pdf

# 打印多份
lp -n 3 document.pdf

# 打印指定页面
lp -P 1-5 document.pdf    # 打印第 1-5 页
lp -P 1,3,5 document.pdf  # 打印第 1、3、5 页

# 设置打印选项
lp -d myprinter -o media=A4 -o sides=two-sided document.pdf

# 打印到文件(PDF)
lp -d PDF-Printer -o outputfile=output.pdf document.pdf

# 从标准输入打印
echo "Hello, World!" | lp -d myprinter
cat document.txt | lp -d myprinter

2.8.2 打印选项

# 常用打印选项

# 纸张大小
lp -o media=A4 document.pdf         # A4 纸
lp -o media=Letter document.pdf     # Letter 纸
lp -o media=A3 document.pdf         # A3 纸

# 双面打印
lp -o sides=one-sided document.pdf      # 单面
lp -o sides=two-sided-long-edge doc.pdf # 双面(长边翻转)
lp -o sides=two-sided-short-edge doc.pdf # 双面(短边翻转)

# 方向
lp -o orientation-requested=3 document.pdf  # 纵向
lp -o orientation-requested=4 document.pdf  # 横向

# 颜色模式
lp -o ColorModel=Gray document.pdf   # 灰度
lp -o ColorModel=RGB document.pdf    # 彩色

# 打印质量
lp -o Resolution=600dpi document.pdf
lp -o Resolution=1200dpi document.pdf

# 每页多版
lp -o number-up=2 document.pdf   # 每页 2 版
lp -o number-up=4 document.pdf   # 每页 4 版

# 组合选项
lp -d myprinter \
  -o media=A4 \
  -o sides=two-sided-long-edge \
  -o ColorModel=Gray \
  -o Resolution=600dpi \
  -n 2 \
  document.pdf

2.8.3 查看和管理选项

# 查看打印机支持的所有选项
lpoptions -p myprinter -l

# 输出示例:
# PageSize/Media Size: *A4 Letter Legal A3 A5
# Duplex/Double-Sided: *None DuplexNoTumble DuplexTumble
# Resolution/Resolution: 150x150 300x300 *600x600 1200x1200
# ColorModel/Color Mode: *Gray RGB

# 设置默认选项
lpoptions -p myprinter -o media=A4
lpoptions -p myprinter -o sides=two-sided-long-edge

# 查看当前默认选项
lpoptions -p myprinter

# 恢复默认选项
lpoptions -p myprinter -o media=Default

2.9 防火墙配置

2.9.1 ufw (Ubuntu)

# 允许 CUPS 端口
sudo ufw allow 631/tcp

# 仅允许特定网络
sudo ufw allow from 192.168.1.0/24 to any port 631

# 查看规则
sudo ufw status

# 删除规则
sudo ufw delete allow 631/tcp

2.9.2 firewalld (CentOS/RHEL)

# 添加 CUPS 服务
sudo firewall-cmd --permanent --add-service=ipp

# 或添加端口
sudo firewall-cmd --permanent --add-port=631/tcp

# 仅允许特定网络
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="631" accept'

# 重新加载
sudo firewall-cmd --reload

# 查看规则
sudo firewall-cmd --list-all

2.9.3 iptables

# 允许 CUPS 端口
sudo iptables -A INPUT -p tcp --dport 631 -j ACCEPT

# 仅允许特定网络
sudo iptables -A INPUT -p tcp --dport 631 -s 192.168.1.0/24 -j ACCEPT

# 保存规则
sudo iptables-save > /etc/iptables/rules.v4

2.10 验证安装

2.10.1 检查清单

# 1. 检查 CUPS 服务状态
sudo systemctl status cups
# 应该显示 "active (running)"

# 2. 检查 CUPS 版本
cups-config --version

# 3. 检查端口监听
sudo ss -tlnp | grep 631
# 应该显示 cupsd 监听在 631 端口

# 4. 检查 Web 界面
curl -I http://localhost:631
# 应该返回 HTTP 200 或 401

# 5. 检查打印机列表
lpstat -p -d
# 如果没有打印机,会显示 "no system default destination"

# 6. 检查日志文件
ls -la /var/log/cups/
# 应该看到 access_log, error_log, page_log

# 7. 检查配置文件语法
sudo cupsd -t
# 应该显示 "cupsd.conf" is OK

# 8. 运行测试打印
echo "CUPS Test Page" | lp

2.10.2 常见安装问题

问题原因解决方案
无法访问 Web 界面防火墙阻止开放 631 端口
认证失败用户不在 lpadmin 组sudo usermod -aG lpadmin $USER
打印机未显示后端权限不足检查 /usr/lib/cups/backend 权限
服务启动失败配置文件错误sudo cupsd -t 检查语法
无法远程访问监听地址限制修改 cupsd.conf 的 Listen 配置
# 修复用户权限
sudo usermod -aG lpadmin $USER
# 需要重新登录生效

# 修复后端权限
ls -la /usr/lib/cups/backend/
# 确保后端程序具有正确权限
sudo chmod 755 /usr/lib/cups/backend/*

# 检查 SELinux 状态(CentOS/RHEL)
getenforce
# 如果是 Enforcing,可能需要设置 SELinux 策略
sudo setsebool -P cupsd_disable_trans 1

2.11 扩展阅读

资源链接
CUPS 官方文档https://www.cups.org/documentation.html
Ubuntu Wiki CUPShttps://help.ubuntu.com/community/CUPS
Arch Wiki CUPShttps://wiki.archlinux.org/title/CUPS
HPLIP 项目https://developers.hp.com/hp-linux-imaging-and-printing
Gutenprinthttps://gimp-print.sourceforge.io/
OpenPrintinghttps://www.openprinting.org/

2.12 本章小结

主题关键要点
安装方法APT (Debian/Ubuntu)、DNF (Fedora/RHEL)、Pacman (Arch)
服务管理systemctl start/stop/restart/enable cups
配置文件/etc/cups/cupsd.conf (主配置)、cups-files.conf (文件路径)
Web 界面http://localhost:631,图形化管理打印机
驱动安装HPLIP (HP)、Gutenprint (通用)、厂商驱动、Foomatic
打印命令lp (打印)、lpstat (状态)、lpoptions (选项)、cancel (取消)

下一章预告:我们将深入学习打印机管理,包括添加、删除、配置打印机选项以及使用 lp 命令的各种技巧。


2.13 练习题

  1. 安装题:在你的系统上安装 CUPS 并确认服务正常运行。

  2. 配置题:修改 cupsd.conf 配置文件,允许来自 192.168.1.0/24 网络的远程访问。

  3. 驱动题:安装 HP 打印机驱动(HPLIP),并使用 hp-setup 工具添加一台 HP 打印机。

  4. 命令题:使用命令行创建一个 PDF 虚拟打印机,并打印测试页。

  5. 故障题:如果你无法访问 Web 管理界面,请列出可能的原因和排查步骤。