CUPS 打印服务完全指南 / 第 2 章:安装与初始配置
第 2 章:安装与初始配置
本章将详细介绍如何在各种 Linux 发行版上安装 CUPS,完成初始配置,掌握 Web 管理界面的使用,并学会安装打印机驱动。
2.1 系统要求与准备
2.1.1 硬件要求
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 1 核 | 2 核+ |
| 内存 | 256MB | 512MB+ |
| 磁盘空间 | 200MB | 1GB+(含驱动和日志) |
| 网络 | 可选 | 推荐(用于网络打印) |
| 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
包说明:
| 包名 | 说明 |
|---|---|
cups | CUPS 核心服务 |
cups-bsd | BSD 兼容命令(lpr, lpq, lprm) |
cups-client | CUPS 客户端工具 |
cups-filters | 额外的过滤器和后端 |
cups-pdf | PDF 虚拟打印机 |
printer-driver-gutenprint | Gutenprint 驱动集合 |
printer-driver-hpcups | HP 打印机驱动 |
printer-driver-foo2zjs | foo2zjs 驱动(支持多品牌) |
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 |
| HPLIP | HP 专用驱动 | hplip |
| Foomatic | 驱动数据库 | foomatic-db, foomatic-db-engine |
| 厂商驱动 | 制造商提供 | 因厂商而异 |
| 通用驱动 | PostScript/PCL | printer-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 CUPS | https://help.ubuntu.com/community/CUPS |
| Arch Wiki CUPS | https://wiki.archlinux.org/title/CUPS |
| HPLIP 项目 | https://developers.hp.com/hp-linux-imaging-and-printing |
| Gutenprint | https://gimp-print.sourceforge.io/ |
| OpenPrinting | https://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 练习题
安装题:在你的系统上安装 CUPS 并确认服务正常运行。
配置题:修改 cupsd.conf 配置文件,允许来自 192.168.1.0/24 网络的远程访问。
驱动题:安装 HP 打印机驱动(HPLIP),并使用
hp-setup工具添加一台 HP 打印机。命令题:使用命令行创建一个 PDF 虚拟打印机,并打印测试页。
故障题:如果你无法访问 Web 管理界面,请列出可能的原因和排查步骤。