CUPS (Русский)

From ArchWiki
Jump to: navigation, search
Состояние перевода: На этой странице представлен перевод статьи CUPS. Дата последней синхронизации: 19 августа 2017. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

CUPS - это стандартная система печати с открытым исходным кодом, разработанная Apple Inc. для MacOS® и других UNIX®-подобных операционных систем.

Установка

Установите пакет cups.

Для печати из приложений GTK3 вам потребуется дополнительно установить пакет gtk3-print-backends.

Если вы намерены "распечатать" документ PDF, тогда вам необходимо установить пакет cups-pdf. По умолчанию файлы PDF хранятся в /var/spool/cups-pdf/$USER. Местоположение можно изменить в /etc/cups/cups-pdf.conf.

Включите и запустите службу org.cups.cupsd.service.

Интерфейсы подключения

Дополнительные шаги для обнаружения принтера приведены ниже для различных интерфейсов подключения.

Примечание: Вспомогательные программы CUPS запускаются с использованием группы lp и daemon. Это позволяет вспомогательным программам получать доступ к файлам устройств принтера и в файлах конфигурации /etc/cups/, которые все принадлежат группе lp. Это поведение по умолчанию может привести к конфликту с доступом к устройствам с параллельным портом без принтера:
  • Добавление дополнительных пользователей в группу lp позволит этим пользователям читать файлы CUPS и
  • Вспомогательные программы CUPS могут получить доступ к любым устройствам с параллельным портом, не относящимся к принтеру.
Если это вызывает беспокойство, подумайте об использовании правила Udev, чтобы назначить другую группу для любого устройства с параллельным портом без принтера (FS#50009). Группа и пользователь, использующие CUPS, могут быть изменены, но, возможно, необходимо будет вручную разрешить некоторые файлы.

USB

Чтобы узнать, обнаружен ли ваш USB-принтер:

$ lsusb
(...)
Bus 001 Device 007: ID 03f0:1004 Hewlett-Packard DeskJet 970c/970cse

Параллельный порт

Чтобы использовать принтер с параллельным портом, требуются модули ядра lp, parport и parport_pc.

$ dmesg | grep -i parport
 parport0: Printer, Hewlett-Packard HP LaserJet 2100 Series
 lp0: using parport0 (polling)

Cеть

Avahi можно использовать для сканирования принтеров в локальной сети. Чтобы использовать имена хостов Avahi для подключения к сетевым принтерам, настройте .local hostname resolution и перезапустите org.cups.cupsd.service.

Если система подключена к сетевому принтеру с использованием протокола Samba, или если система должна быть сервером печати для клиентов Windows, установите пакет samba.

Драйверы принтеров

Драйверы для принтеров можно получить из любого из источников, приведенных ниже. Смотрите CUPS/Printer-specific problems для неполного списка драйверов, которые работают.

Для управления принтером CUPS требуется файл PPD, а для большинства принтеров - некоторые фильтры. Подробнее о том, как CUPS использует PPD и фильтры, смотрите на [1].

Список принтеров OpenPrinting содержит рекомендации для драйверов для многих принтеров. Он также поставляет файлы PPD для каждого принтера, но большинство из них доступны через foomatic или рекомендованный пакет драйверов.

Когда файлы PPD предоставляются CUPS, тогда сервер CUPS будет регенерировать файлы PPD и сохранять их в /etc/cups/ppd/.

CUPS

CUPS по умолчанию предоставляет несколько PPD и фильтры двоичных файлов, которые должны работать из коробки. CUPS также обеспечивает поддержку принтеров AirPrint и IPP Everywhere.

Foomatic

Проект foomatic предоставляет PPD для многих драйверов принтеров, как свободных, так и проприетарных. Для получения дополнительной информации о том, что делает foomatic смотрите Обзор foomatic от разработчиков.

Чтобы использовать foomatic, установите foomatic-db-engine и по крайней мере один из пакетов foomatic-db, foomatic-db-ppds, foomatic-db-nonfree-ppds, или foomatic-db-gutenprint-ppds.

Для PPD foomatic могут потребоваться дополнительные фильтры, такие как gutenprint, ghostscript или другие (например min12xxwAUR). Для ghostscript также может потребоваться gsfonts.

Специфические для производителя драйвера

Многие производители принтеров поставляют свои собственные драйверы Linux. Они часто доступны в официальных хранилищах Arch или в AUR.

Некоторые из этих драйверов описаны более подробно в CUPS/Printer-specific problems.

URI принтера

Ниже перечислены дополнительные шаги для ручного создания URI, если это необходимо.

USB

CUPS должен иметь возможность автоматически генерировать URI для USB-принтеров, например usb://HP/DESKJET%20940C?serial=CN16E6C364BH.

Если этого не происходит, смотрите CUPS/Troubleshooting#USB printers для устранения неполадок.

Параллельный порт

URI должен иметь вид parallel:device. Например, если принтер подключен к /dev/lp0, используйте parallel:/dev/lp0. Если вы используете адаптер USB для параллельного порта, используйте parallel:/dev/usb/lp0 в качестве URI принтера.

Сеть

Если вы настроили Avahi, как в #Сеть, CUPS должен определить URI принтера. Вы также можете использовать avahi-discover, чтобы найти имя вашего принтера и его адрес (например, BRN30055C6B4C7A.local/10.10.0.155:631).

URI также можно создать вручную, не используя Avahi. Список доступных схем URI для сетевых принтеров доступен в документации CUPS [2]. Поскольку точные данные URI отличаются между принтерами, проверьте руководство принтера или CUPS/Printer-specific problems.

К удаленным серверам печати CUPS можно получить доступ через URI формы ipp://hostname:631/printers/queue_name. Подробнее о настройке удаленного сервера печати смотрите CUPS/Printer sharing#Between GNU/Linux systems.

Смотрите CUPS/Troubleshooting#Networking issues для получения дополнительной информации о проблемах и их решений.

Важно: Не следует настраивать как сервер, так и клиент с помощью фильтра принтера - либо очереди печати на клиенте, либо сервер должен быть 'raw'. Это позволяет избежать отправки заданий печати через фильтры для принтера дважды, что может вызвать проблемы (например, [3]). Смотрите #Использование для примера установки очереди печати на 'raw'.

Использование

CUPS можно полностью контролировать с помощью инструментов командной строки (CLI) из пакетов lp* и cups*. В качестве альтернативы можно использовать #Веб интерфейс или одно из нескольких #Приложения с GUI.

  • Имя принтера - короткое, но описательное имя, используемое в системе для идентификации принтера. Это имя не должно содержать пробелов или специальных символов. Например, принтер, соответствующий HP LaserJet 5P, может быть назван "hpljet5p". С каждым физическим принтером можно связать более одной очереди.
  • Расположение - это описание физического расположения принтера (например, "спальня", или "кухня"). Это помогает поддерживать несколько принтеров.
  • Описание - полное описание принтера. Обычно используется полное имя принтера (например, "HP LaserJet 5P").

Инструменты CLI

Смотрите локальную документацию CUPS для получения дополнительных сведений об инструментах командной строки.

Примечание: Нельзя сгруппировать переключатели командной строки
Список устройств
# lpinfo -v # 
$ /usr/lib/cups/backend/snmp ip_address # Используйте SNMP для поиска URI
Список драйверов;
$ lpinfo -m
Добавление нового принтера
# lpadmin -p имя принтера -E -v uri -m model

Имя принтера зависит от тебя. Например:

# lpadmin -p HP_DESKJET_940C -E -v "usb://HP/DESKJET%20940C?serial=CN16E6C364BH" -m drv:///HP/hp-deskjet_940c.ppd.gz
# lpadmin -p AirPrint -E -v "ipp://10.0.1.25/ipp/print" -m everywhere    # Принтеры без драйверов (Apple AirPrint или IPP Everywhere)
# lpadmin -p SHARED_PRINTER -m raw    # Необработанный принтер; нет PPD или фильтра
Установите принтер по умолчанию
$ lpoptions -d имя принтера
Изменение параметров
$ lpoptions -p имя принтера -l # Список параметров
$ lpoptions -p имя принтера -o option=value # Установка параметра

Например:

$ lpoptions -p HP_DESKJET_940C -o PageSize=A4
Проверка cостояния принтера
$ lpstat -s
$ lpstat -p имя принтера
Отключение принтера
# cupsdisable имя принтера
Включение принтера
# cupsenable имя принтера
Настройка принтера для приема заданий
# cupsaccept имя принтера
Удаление принтера

Сначала настройте принтер для отклонения всех входящих записей:

# cupsreject имя принтера

Затем отключите его.

# cupsdisable имя принтера

Наконец, удалите его.

# lpadmin -x имя принтера
Печать файла
$ lpr файл
$ lpr -# 17 файл            # распечатать файл 17 раз
$ echo "Привет, мир!" | lpr -p # распечатать результат команды. Переключатель -p добавляет заголовок.
Проверка очереди
$ lpq
$ lpq -a # во всех очередях
Очистка очереди
# lprm   # удаляет только последнюю запись
# lprm - # удаляет все записи

Веб интерфейс

Сервером CUPS можно полностью управлять через веб-интерфейс, доступный по адресу http://localhost:631/.

Примечание: Если используется HTTPS-соединение с CUPS, оно может длиться очень долго, прежде чем интерфейс появится при первом доступе. Это связано с тем, что первый запрос инициирует создание SSL-сертификатов, которое может занимать много времени.

Для выполнения административных задач требуется аутентификация веб-интерфейса. Аутентифицируйте себя либо как root, либо убедитесь, что ваш пользователь входит в группу с полномочиями управления принтерами, для получения дополнительной информации смотрите #Настройка.

Добавление принтера

Перейдите на страницу Administration.

Изменение существующих принтеров

Перейдите на страницу Printers и выберите принтер для изменения.

Проверка принтера

Перейдите на страницу Printers и выберите принтер.

Приложения с GUI

Если у вашего пользователя нет достаточных привилегий для администрирования CUPS, приложения будут запрашивать пароль root при запуске. Чтобы предоставить пользователям права администратора без необходимости доступа root, смотрите #Настройка.

  • print-manager — Инструмент для управления заданиями печати и принтерами (KDE).
https://projects.kde.org/projects/kde/kdeutils/print-manager || print-manager
  • system-config-printer — Инструмент настройки принтера CUPS и апплет состояния (GNOME и другие)
http://cyberelk.net/tim/software/system-config-printer/ || system-config-printer
  • gtklp — Интерфейс GTK + для CUPS.
http://gtklp.sirtobi.com/index.shtml || gtklpAUR

Настройка

Настройки сервера CUPS находятся в /etc/cups/cupsd.conf и /etc/cups/cups-files.conf. После редактирования любого из этих файлов, перезапустите org.cups.cupsd.service, чтобы применить произведенные изменения. Настройки по умолчанию подходят для большинства пользователей.

Группы с привилегиями администрирования принтера определены в SystemGroup в /etc/cups/cups-files.conf. Группа sys используется по умолчанию.

Пакет cups собран с поддержкой libpaper и значением по умолчанию для формата бумаги Письмо для файла libpaper. Чтобы избежать необходимости изменять размер бумаги для каждого принтера, отредактируйте /etc/papersize и задайте размер бумаги по умолчанию для вашей системы. Для получения дополнительной информации смотрите papersize(5).

По умолчанию все журналы отправляются в файлы в /var/log/cups/. Изменив значения директив AccessLog, ErrorLog и PageLog в /etc/cups/cups-files.conf на syslog, то CUPS сможет отправлять логи в журнал systemd. Смотрите вики-страницу fedora для получения информации об исходном предлагаемом изменении.

cups-browsed

CUPS может использовать Avahi для обнаружения неизвестных общих принтеров в вашей сети. Это может быть полезно при больших настройках, где сервер неизвестен. Чтобы использовать эту функцию, настройте разрешение .local hostname и запустите службы avahi-daemon.service и cups-browsed.service. Задания отправляются непосредственно на принтер без какой-либо обработки, поэтому созданные очереди могут не работать, однако для принтеров, не требущих драйверов, такие как те, которые поддерживают IPP Everywhere или AirPrint все должно работать из коробки.

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

Серверы печати и удаленное администрирование

Для получения дополнительной информации смотрите CUPS/Совместное использование принтеров и CUPS/Printer sharing#Remote administration.

Разрешение аутентификации администратора через PolicyKit

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

Вот пример, который позволяет членам группы wheel управлять принтерами без пароля:

/etc/polkit-1/rules.d/49-allow-passwordless-printer-admin.rules
polkit.addRule(function(action, subject) { 
    if (action.id == "org.opensuse.cupspkhelper.mechanism.all-edit" && 
        subject.isInGroup("wheel")){ 
        return polkit.Result.YES; 
    } 
});

Без локального сервера CUPS

CUPS можно настроить для прямого подключения к удаленным серверам принтеров вместо запуска локального сервера печати. Для этого потребуется установить пакет libcups. Некоторым приложениям по-прежнему потребуется пакет cups для печати.

Важно: Доступ к удаленным принтерам без локального сервера CUPS не рекомендуется разработчиками. [4]

Чтобы использовать удаленный сервер CUPS, установите переменную окружения CUPS_SERVER в printerserver.mydomain:port. Например, если вы хотите использовать другой сервер печати для одного экземпляра Firefox (замените printserver.mydomain:port на имя/порт своего сервера печати):

$ CUPS_SERVER=printserver.mydomain:port firefox

Исправление проблем

Для получения дополнительной информации смотрите CUPS/Troubleshooting.

Смотрите также