我不得不卸载它cupsd
,cups-browserd
因为在它们运行时我无法打印到远程打印机(并且在 3 小时后放弃了)。
现在,通过应用程序进行打印效果很好,但从 CLI 我必须执行如下操作:
enscript -p- reasons_i_love_linux.md | lpr -H server:631
我只想说:
enscript reasons_i_love_linux.md
就像我“升级” CUPS 之前那样。
事实证明,通过 Google 很难找到这一点……
同样,cups 守护进程是不是在本机上运行,仅在远程打印机服务器上运行。
有任何想法吗?
答案1
您至少应该安装了 CUPS 的“客户端”部分。然后将此行放入保存为/etc/cups/client.conf
(供系统范围使用)或保存为${HOME}/.cups/client.conf
(如果您想为不同用户使用不同的远程 CUPS 服务器)的文件中:
ServerName servername:631
或者
ServerName server-ip-address:631
请注意,它/etc/cups/client.conf
必须是全世界可读的,因为读取它的是用户空间应用程序(而不是 root 拥有的守护进程)。
如果远程 CUPS 服务器比较新,您必须告诉打印客户端要求远程服务器使用 IPP v1.1(而不是较新版本的 CUPS 所用的 v2.0):
ServerName servername:631/version=1.1
现在您的本地cupsd
将被绕过(如果它正在运行),或者不会尝试联系它(如果它没有运行)。打印客户端程序将首先直接与远程 CUPS 对话(而不是位于 上的那个,否则它们会在没有上述条目localhost:631
的情况下进行对话)。client.conf
回答您关于环境变量的问题:是的,有一个。它被称为CUPS_SERVER
。如果client.conf
不存在该条目,或者您想要覆盖 中指定的远程服务器client.conf
,或者它在非标准端口上侦听,您可以根据具体情况使用它。
CUPS_SERVER=other_server:631 lp -p printername jobfile
您还可以使用它列出远程服务器上(共享)打印机的名称和状态:
CUPS_SERVER=other_server:631 lpstat -p
CUPS_SERVER=other_server:631/version=1.1 lpstat -p
CUPS_SERVER=other_server:631 lpstat -v
CUPS_SERVER=other_server:631/version=1.1 lpstat -v