故障现象
尝试在Debian系统从源码编译、自动构建HPLIP,编译流程失败,耗费大量时间仍无法正常使用打印机。
机型:HP LaserJet P1102(P1102w)。
痛点:源码编译需要大量编译依赖包,还需要处理hp‑plugin专有插件、SmartInstall等一系列问题,配置门槛很高。
重要说明:HP LaserJet P1102/P1102w并不强制依赖HPLIP套件,Debian软件源提供成熟的
foo2zjs驱动,可以绕开HPLIP整套环境直接实现打印功能。printer‑driver‑all是Debian的驱动元包,安装后自动包含printer‑driver‑foo2zjs驱动包,专门适配P1102这类Zenographics协议惠普激光打印机。
方案一:直接安装Debian源驱动包(推荐,无需编译源码)
不需要下载HPLIP源码、不需要make编译,一条命令完成驱动部署。
sudo apt update
sudo apt install printer‑driver‑all cups
printer‑driver‑all:元数据包,自动拉取大量打印机驱动,其中包含printer‑driver‑foo2zjs;cups:打印服务核心组件。
安装完成后重启打印服务:
sudo systemctl restart cups
添加打印机两种方式
方式 A:系统图形打印机设置
打开系统设置‑打印机‑添加打印机,系统会自动识别 USB 连接的 HP LaserJet P1102,驱动自动选用 foo2zjs,保存打印队列,打印测试页。
方式 B:CUPS 网页管理界面
浏览器访问 http://localhost:631 → Administration → Add Printer,选中 USB 接口 P1102,PPD 选择 foo2zjs 对应型号驱动,完成配置。
注意:foo2zjs 仅提供打印功能,没有扫描支持;P1102/P1102w 本身不具备扫描硬件,不影响使用。
方案二:单独安装 foo2zjs 驱动(不想安装全部 printer‑driver‑all)
如果不想安装全套打印机驱动集合,可以只单独安装 foo2zjs 驱动包:
sudo apt update
sudo apt install printer‑driver‑foo2zjs cups
sudo systemctl restart cups
误区澄清
- ❌误区:HP 打印机在 Linux 必须安装 HPLIP ✅事实:部分惠普激光机型(P1102、1020、1018 等)使用 Zenographics 协议,foo2zjs 驱动原生支持,可以完全脱离 HPLIP 运行OpenPrinti…。
- ❌误区:一定要下载 foo2zjs 源码手动编译 ✅事实:Debian/Ubuntu 官方源已经打包好 foo2zjs,普通用户优先 apt 安装,无需源码编译。
- 局限提醒:foo2zjs 只负责打印;如果你的机器是一体机需要扫描,则依旧需要 HPLIP 套件。
与 HPLIP 方案对比
表格
| 方案 | 优点 | 缺点 |
|---|---|---|
| foo2zjs(apt) | 无需编译源码,不用处理 hp‑plugin,部署简单 | 只有打印,无扫描功能 |
| HPLIP 源码编译 | 完整支持打印 + 扫描 | 编译依赖繁多,插件、SmartInstall 问题多,排错复杂 |
故障排查
- 安装完驱动依旧找不到打印机:确认 USB 连接正常;若为 P1102w,记得先关闭打印机的 SmartInstall 功能,避免 USB 设备被识别为虚拟光驱。
- 打印任务提交但不输出:检查 cups 服务状态
systemctl status cups;重启打印机,部分机型开机需要重新上传固件,foo2zjs 的 udev 脚本会自动完成固件加载。 - 用户权限:把当前用户加入 lp 用户组,注销重登生效
sudo usermod -aG lp $USER
快速总结
- HPLIP 源码编译构建失败时,HP LaserJet P1102 可以放弃 HPLIP,改用 foo2zjs 驱动;
- Debian 执行
sudo apt install printer‑driver‑all,自动包含 foo2zjs,最简单;也可以单独安装printer‑driver‑foo2zjs; - foo2zjs 仅实现打印,一体机需要扫描功能仍要使用 HPLIP;
- 配置完成后通过系统打印机设置或者 CUPS 631 页面添加打印机。