CUPS: удалить системный основной принтер

Вопрос или проблема

В CUPS вы можете установить системный принтер по умолчанию с помощью:

lpadmin -d <printer_name>

или с помощью:

lpoptions -d <printer_name>

Однако я не смог найти способ удалить принтер по умолчанию (чтобы в системе его не было).

Ещё хуже, если вы удалите принтер, а затем снова добавите его под тем же именем, он автоматически станет принтером по умолчанию!

Есть идеи, как сделать принтер неумолчальным?

CUPS всегда будет считать один из установленных принтеров по умолчанию своим принтером.

Если вы не настроите явным образом один из них (с помощью указанной вами команды), он применит следующую логику:

  1. Проверьте, установлены ли переменные окружения LPDEST и/или PRINTER в текущем окружении. Если да, он использует их.

  2. Если ни одна из ‘1.’ не установлена, он проверит, предоставили ли вы целевой принтер по умолчанию с помощью команды lpoptions -d (это может отличаться в зависимости от пользователя!).

  3. Если проверка ‘2.’ не удастся, он проверит, установил ли lpadmin -d системный принтер по умолчанию.

И я думаю, если и это не удастся, он выберет другой как принтер по умолчанию: первый установленный или первый, который появляется в списке (в алфавитном порядке) — но в данный момент я не могу вспомнить, какой именно.

Одно, что вы могли бы попробовать, это установить переменные окружения LPDEST и PRINTER на неверное/несуществующее имя принтера (после удаления также этих потенциально установленных значений по умолчанию, сделанных с помощью lpadmin/lpoptions).

Какова причина, по которой вы хотите, чтобы в вашей системе не было принтера CUPS по умолчанию?

Я только что нашел этот пост. Для всех, кто хочет удалить принтер по умолчанию в CUPS, есть файл lpoptions в /etc/cups, который содержит информацию о принтере по умолчанию. Просто удалите эту строку из файла с помощью текстового редактора и сохраните, и принтер по умолчанию должен исчезнуть. Моя ОС — RHEL 7.

Я только что наткнулся на тот же вопрос.

Чтобы переопределить системный принтер по умолчанию для текущего пользователя, я сделал следующее:

% lpoptions -d Samsung_M332x_382x_402x_Series_SNIP

% lpstat -d
  системный принтер по умолчанию: Samsung_M332x_382x_402x_Series_SNIP

Следующий файл был создан:

% cat .cups/lpoptions
  По умолчанию Samsung_M332x_382x_402x_Series_SNIP

Как упомянул @James, файл можно удалить или использовать lpoptions -x

% lpoptions -x Samsung_M332x_382x_402x_Series_SNIP           
% cat .cups/lpoptions 
% 

То же самое должно быть верно для lpadmin -d и lpadmin -x.

Если честно, я не уверен, как прочитать страницу man lpoptions(8):

  -d destination[/instance]
     Устанавливает принтер пользователя по умолчанию на destination.
     Если указано instance, то используется именно этот экземпляр.
     Эта опция переопределяет системный принтер по умолчанию для текущего пользователя.
  -x destination[/instance]
     Удаляет параметры для указанного назначения и экземпляра, если он указан.
     Если указанный экземпляр не существует, то это ничего не делает.
     Удалить назначения можно только с помощью команды lpadmin(8).

На мой взгляд, последнее предложение звучит как “Системный принтер по умолчанию можно удалить только с помощью команды lpadmin(8).”

Страница man lpadmin(8) тоже не идеальна для меня:

  Первая форма команды (-d) устанавливает принтер или класс по умолчанию на designation.
  [сокращено]
  Третья форма команды (-x) удаляет принтер или класс назначения.
  Все задания, ожидающие на назначение, будут удалены, а любое задание, которое в настоящее время печатается, будет прервано.

На мой взгляд, это должно звучать примерно так: “[…] удаляет принтер или класс назначения по умолчанию.”

Ответ или решение

Как удалить системный принтер по умолчанию в CUPS

В Common UNIX Printing System (CUPS) управление принтерами и настройками осуществляется через различные команды и конфигурационные файлы. Одной из распространенных задач является удаление принтера по умолчанию из системы, что может быть непростой задачей, так как CUPS требует наличия как минимум одного принтера по умолчанию.

Установка и управление принтером по умолчанию

Для установки принтера по умолчанию часто используются следующие команды:

lpadmin -d <имя_принтера>

или

lpoptions -d <имя_принтера>

Тем не менее, CUPS всегда требует, чтобы как минимум один принтер был установлен в качестве принтера по умолчанию, и если вы пытаетесь удалить принтер, а затем повторно добавить его с тем же именем, он автоматически становится принтером по умолчанию.

Логика выбора принтера по умолчанию

Когда CUPS выполняет выбор принтера по умолчанию, он следует следующей логике:

  1. Проверка переменных окружения LPDEST и PRINTER: Если одна из этих переменных установлена в текущем окружении, то CUPS использует заданное значение.
  2. Настройки lpoptions: Если предыдущие проверки не дали результата, CUPS проверяет, был ли установлен принтер по умолчанию с помощью команды lpoptions -d, что может отличаться для разных пользователей.
  3. Системный принтер по умолчанию: Если и это не сработает, система проверяет, установлен ли системный принтер по умолчанию с помощью команды lpadmin -d.
  4. Случайный выбор: Если ни один из вышеуказанных методов не дал результата, CUPS может выбрать любой установленный принтер, в зависимости от его списка или алфавитного порядка.

Удаление системного принтера по умолчанию

На данный момент CUPS требует наличие принтера по умолчанию и не предоставляет прямой возможности полностью сбросить эту настройку. Однако есть обходные решения, которые можно попробовать:

  1. Не устанавливать принтер по умолчанию: Чтобы как-то «осложнить выбор» принтера, вы можете попытаться установить LPDEST и PRINTER на несуществующее имя принтера в вашей среде. Это можно сделать командой:

    export LPDEST=invalid_printer
    export PRINTER=invalid_printer
  2. Изменение файла конфигурации: В большинстве дистрибутивов, работающих на базе Linux, таких как RHEL 7, существует файл lpoptions, расположенный в /etc/cups/. Вы можете открыть этот файл с помощью текстового редактора и удалить строку, соответствующую вашему принтеру по умолчанию. Пример команды:

    sudo nano /etc/cups/lpoptions

    Удалите строчку с Default <имя_принтера> и сохраните изменения.

  3. Использование команды lpoptions -x: Для удаления настроек конкретного принтера можно использовать:

    lpoptions -x <имя_принтера>
  4. Полное удаление принтера: Если вам действительно нужно удалить все настройки для принтера, вы можете воспользоваться командой:

    lpadmin -x <имя_принтера>

Такое действие должно удалить принтер и все связанные с ним настройки, однако по умолчанию система может выбрать другой принтер в качестве замены.

Заключение

Удаление принтера по умолчанию в CUPS требует нестандартного подхода, поскольку система требует хотя бы одного принтера для функционирования. Если у вас есть необходимость в специфических конфигурациях, рассмотренные методы могут значительно помочь. Помните, что важность конфигурации принтеров может зависеть от специфики вашей работы и особых требований, так что подходите к процессу с учетом ваших нужд.

Оцените материал
Добавить комментарий

Капча загружается...