如何禁用自动远程打印机安装?

在Raring中,每次我连接到网络时,Cups会自动安装所有网络中的打印机,有些甚至重复安装。
此外,我偶尔会将USB打印机连接到笔记本电脑上。尽管打印机已经配置好了,但列表中又添加了另一个打印机。
我希望禁用这个功能,只允许手动安装打印机。我该如何操作?

你找到答案了吗?我在14.04上遇到了类似的问题,这里的答案对我没有起作用。我的问题在http://askubuntu.com/questions/477082/hide-remove-network-printers-from-printing-dialog - Xu Wang
不,我不想禁用avahi-daemon,而且我不再连接到同一个网络。我现在所在的地方没有网络打印机。 - To Do
如何摆脱它安装的所有打印机? - khatchad
1@RaffiKhatchadourian 在禁用它之前(或在暂时重新启用它后),我关闭了我的Wi-Fi,然后它们就消失了。然后我在关闭Wi-Fi的情况下将其禁用。附言:嗨! - Michael Mandel
2我不明白这怎么能算是一个功能。 - Kiwy
链接 https://askubuntu.com/a/1436064/456438 - Dominic108
9个回答

我刚刚发现了一个可能是最佳解决方案来解决这个混乱的问题。有一个叫做"cups-browsed"的服务,它似乎负责在网络上寻找所有可用的打印机并为您安装它们(哇,谢谢你,真是太好了——不)。由于这是一个Upstart/Systemd任务,您可以使用以下命令停止该服务:

对于Ubuntu 15.04+版本(使用systemd)

sudo systemctl stop cups-browsed

随后:
sudo systemctl disable cups-browsed

如果你愿意,你仍然可以手动启动/停止服务。
sudo systemctl start cups-browsed
sudo systemctl stop cups-browsed

对于Ubuntu 15.04之前的版本(使用upstart)
sudo service cups-browsed stop

更好的是,您可以通过在/etc/init中添加一个简单的文本文件来阻止服务再次启动,该文件包含一个单词manual。该文件必须命名为cups-browsed.override
因此,只需启动gedit即可。
gksudo gedit /etc/init/cups-browsed.override

手动放在第一行并保存文件。
下次重启时,服务将不会重新启动。但是,如果您已经停止了服务,则无需重新启动。一旦您将此文件放置在/etc/init目录中,只能手动启动服务(如果需要/想要的话),使用以下命令:
sudo service cups-browsed start
-or-
sudo service cups-browsed stop`

我已经在一次重启后进行了测试。打印依然正常,而且重启后不再出现数百台打印机被安装的情况。只有我手动安装的那些显示出来。

28Ubuntu 15.04及以后版本(它们转向systemd):sudo systemctl disable cups-browsed - Hitechcomputergeek
如果可以的话,我会给你点赞+100。这个解决了我在16.04关机卡住的问题。 - Organic Marble
您还可以使用友好的ncurses程序来设置服务,例如rcconfcsysv-rc-conf - Pablo Bianchi
你现在就可以执行 sudo systemctl mask cups-browsed 吗? - carestad
5它不适用于18.04。 - eetsurt
@eetsurt确认在18.04.2上工作正常。 - haku
6在20.04版本上,对我来说不起作用。 - joel
1Ubuntu自动添加打印机有两种机制。第一种是cups-browsed,可以通过以下方式停止。第二种是cups自己添加打印机。除非使用一堆混乱的补丁,否则没有简单的方法来停止第二种机制。真是太愚蠢了。 - Thomas Wana
4确认在20.04版本上无法工作...这个混乱的灾难仍在持续。 - Amos Folarin
离线时似乎可以完成这个操作。 - Amos Folarin
第一个解决方案在我的Mint 20.3上完美奏效,谢谢! - FumbleFingers
就记录而言,看起来这个解决方案适用于 22.04 LTS 版本。所以我已经执行了 sudo systemctl stop cups-browsedsudo systemctl disable cups-browsed 命令。请注意,我手动删除了自动安装的打印机,并重新启动了系统。到目前为止,远程/网络打印机不再自动安装。 - Clemens

在/etc/cups/cups-browsed.conf中,设置指令:
BrowseProtocols none

之后,运行service cups-browsed restartservice cups restart。除了您自己添加的打印机外,不应该看到任何其他打印机。

这是15.10最直接的解决方案。 - Mustafa
那是为了将当前设备的打印机共享到网络上,而不是用于显示网络打印机。 - Alex R
正确,只有第二步是必要的,并且比当前得到赞同的回答中的hack更正确。请修正您的回答,以避免给已经令人困惑的回答增加混乱! - kiko
我的网络上有一台特定的打印机,即使被删除后仍然会重新添加。我设置了这个选项,重新启动后问题得到解决。我使用的是Debian 9。 - jbrock
2这个解决方案适用于18.04。 - eetsurt
这应该是被接受的答案。在20.04 LTS上运行得非常好。 - Patrick Rynhart
Ubuntu自动添加打印机有两种机制。第一种是cups-browsed,可以通过以下方式停止。第二种是cups自己添加打印机。除非使用一堆混乱的补丁,否则没有简单的方法来停止第二种机制。真是太愚蠢了。 - Thomas Wana
在我的情况下,BrowseRemoteProtocols none - Pau Coma Ramirez

如前所述,这现在是在客户端的cups库(即libcups.so,GNOME和KDE应用程序链接到的库)中完成的,而不是在cupsd服务器中。因此,在cups服务器中更改“浏览”设置是行不通的。
$ ldd /usr/lib/x86_64-linux-gnu/libcups.so.2
...
libavahi-common.so.3 => /usr/lib/x86_64-linux-gnu/libavahi-common.so.3
libavahi-client.so.3 => /usr/lib/x86_64-linux-gnu/libavahi-client.so.3
...

IE这种行为(在打印对话框中显示远程打印机)即使关闭本地cups服务器也会发生。您可以通过关闭avahi服务来禁用它,但这将禁用所有的零配置/多播DNS相关功能。
然而,至少有一种方法可以关闭大部分avahi的功能(包括将远程打印机添加到CUPS客户端),同时保留DNS功能(例如在查找foo.local样式的主机名时):
编辑/etc/avahi/avahi-daemon.conf,在[server]部分中添加enable-dbus=no,然后重新启动avahi-daemon服务。

如果有线连接没有与其他计算机网络连接,那么它可能无法从始终运行的avahi-daemon中获益。如果不使用,可以卸载它。 - noobninja
在所有页面上的答案中,这是唯一一个对我有用的解决方法:如何在Gnome中摆脱幽灵打印机? - Stephen Ostermiller
2为什么 enable-dbus=no 会阻止 Avahi 发现打印机,这个配置更改还会影响其他 Avahi 功能吗? - gene_wood
2我进行了这个更改,确实防止了自动发现的打印机显示在打印机列表中,但是我的目标是让打印机对话框更快地弹出(通常需要5到10秒)。这个更改导致打印机对话框弹出时间更长(长到足够让Ubuntu暗淡对话框,以为它没有响应)。嗯。 - gene_wood
1对我来说有效。但是我和gene_wood有同样的问题。加载缩短后的打印机列表需要大约5秒钟。 - Hoseung Choi
1尝试在avahi-daemon.conf中添加browse-domains=local.local,而不是禁用d-bus。这样应该可以避免延迟。 - istepaniuk
2我在使用"enable-dbus=no"时遇到了一个非常糟糕的副作用。每次打开某些文件时,Libreoffice Writer都会停顿30-40秒钟。 LO在文件打开时尝试通过avahi来查找打印机,并且每次都会停顿30到40秒钟。如果新文件还没有被打印过,则没有问题。当我进入LO的打印菜单或Ubuntu的打印机配置菜单时,也会出现这种延迟。在18.04和20.04中进行了测试。花了我一年多的时间才发现这与禁用avahi中的dbus有关,所以我不建议使用这种方法。 - jjchico

我尝试了上述的所有方法。在基于Ubuntu 20.4的Linux Mint 20中,修改Cups并没有起作用。显然,Ubuntu和Mint不再使用Cups进行打印机发现,而是改用Avahi。我认为这是一个Systemd的问题。在avahi-daemon.conf中设置enable-dbus=no有一定效果,但会导致LibreOffice中的打印菜单出现延迟(可能需要20-30秒),因此并不是一个好的解决方案。
然而,以下方法确实非常有效:
sudo nano /etc/avahi/avahi-daemon.conf

在那个文件中:
change “use-ip4=yes” to “use-ip4=no”

change “use-ip6=yes” to “use-ip6=no”

现在,只有我手动添加的打印机显示在“打印机”控制面板(打印机-本地主机)、HPLIP工具箱和LibreOffice中。

1这是一件天才之作!它在不禁用avahi的情况下禁用了它! :-) - ciampix
1@ciampix 是的,在Ubuntu 20.04中,它确实能够完成我的工作 - 除非我发现,如果我将ipv4和ipv6都配置为"no",在执行systemctl start avahi-daemon命令时,守护进程无法启动。因此,通过执行systemctl stop avahi-daemon命令,可能会达到相同的效果,然后可以跟随一个"disable"命令以防止在下次启动时自动重新出现... - frr

杯子客户端库现在也可以从Avahi获取网络打印机列表(Avahi实现了被称为zeroconf、Bonjour、mdns或dns-sd的协议)。在较旧的cups版本中,这只能由cups服务器完成。

您可以使用类似于avahi-browse -a | grep Printer的Shell命令查看网络上正在广播的内容。

您可以使用sudo service avahi-daemon stop来禁用avahi,但这将停止所有基于zeroconf的设置,而不仅仅是打印机。


要禁用它,只需打开终端 Ctrl+Alt+T 并输入命令

 sudo cupsctl --no-remote-printers

或者编辑该内容
 /etc/cups/cupsd.conf

设置
Browsing Off

此解决方案可以在这里找到。

一些较新的Ubuntu版本(15.04及更高版本)可能需要使用以下命令:

sudo cupsctl --no-share-printers

5我仍然遇到这个问题,尽管我的cupsd.conf文件已经包含了"Browsing Off"。运行cupsctl命令会出现以下错误:cupsctl: 未知选项 "--no-remote-printers" 用法: ... - Catalin Hritcu
忘了提一下,我使用的是Ubuntu 13.10。 - Catalin Hritcu
1@CatalinHritcu,设置BrowseLocalProtocols none怎么样? - user.dz
1这是用于本地机器共享的,不适用于添加远程打印机。 - Alex R

停下来其实很简单。
删除不需要的打印机。然后: sudo nano /etc/cups/cups-browsed.conf
将这一行改为:BrowseRemoteProtocols none(或者在其后面的任何内容),以便它变成:BrowseRemoteProtocols none。
然后保存文件并重新启动。
解决了我的问题。

这似乎是对2014年3月20日和2014年12月5日的回答的重复。 - Charles Green

找到了解决办法,如果你在惠普(可能也适用于其他打印机)中禁用Bonjour,那么神秘打印机的检测问题就成为过去时了。

在被这个问题困扰了几个月之后,最终发现这是最简单且最可靠的解决方案。 - Patrick F

尝试:

打开 http://localhost:631/admin/ → 编辑配置文件或编辑 /etc/cups/cupsd.conf 更改:
# 在本地网络上显示共享打印机。 Browsing Off BrowseLocalProtocols none 参考:cupsd.conf: BrowseLocalProtocols

1很不幸,这并没有阻止远程打印机被添加到我的设备中。 - azimut