11/27/2006

Принтеры в Linux, или Как настроить печать в Linux с помощью CUPS

Задача: установка принтера в Linux и печать в Linux с помощью CUPS, выводить на печать документы через локально подключённые принтеры.
Решение: требуется установить систему печати CUPS и добавить принтер, на что требуется не больше минуты - после этого принтер в Linux будет печатать.


Няня, где же кружка... или Ставим CUPS
На самом деле
CUPS [?] с кружками и спиртным он ничего общего не имеет. Перед тем, как его ставить, хорошо бы посмотреть на поддержку ваших принтеров. Если с поддержкой полный порядок, ставим следующие пакеты:
aptitude install cupsys gs-esp foomatic-bin foo2zjs cups-pdf
вместе со всеми зависимостями. Последний пакет,
cups-pdf, добавляет возможность печатать сразу в PDF из любой программы в Linux. Важно поставить не только сам CUPS, но и программы, которые он использует, имеющие не вполне очевидные названия.

Кстати, весьма распространённая ошибка: ставят только cupsys, или забывают foo2zjs, в результате чего при отправке задания на печать из принтера ничего не вылезает, а в логах вот такие записи:
I [23/Aug/2005:14:41:46 +0400] Adding end banner page "none" to job 7.
I [23/Aug/2005:14:41:46 +0400] Job 7 queued on 'HPDeskJet930C' by 'penta4'.
E [23/Aug/2005:14:41:46 +0400] Unable to convert file 0 to printable format for job 7!
I [23/Aug/2005:14:41:46 +0400] Hint: Do you have ESP Ghostscript installed?
I [23/Aug/2005:14:41:46 +0400] Hint: Try setting the LogLevel to "debug".

Это может отхватить мегабайт 10-20, смотря сколько и чего уже поставлено в системе. Всё поставится, распакуется и настроится - теперь осталось добавить принтер и начать печатать.

В печать!
Подключаем принтер к компьютеру. Например, если у вас принтер с подключением по USB, о подключении можно узнать командой lsusb вот так:
root@dot:/dev# lsusb
Принтер в Linux себя проявит вот так:
Bus 008 Device 003: ID 04e8:3272 Samsung Electronics Co., Ltd
Bus 008 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 002: ID 046d:c52f Logitech, Inc.
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
В данном случае воткнут принтер Samsung CP-300. Чтобы добавить новый принтер или менять опции уже установленного, запускаем любой броузер и в адресной строке набираем:
http://localhost:631
Должна должна появиться страница с настройками принтеров в Linux, что-то вроде показанного на скриншоте:

From Записки дебианщика [beta]

Страница CUPS может долго загружаться, если указаны много других сетевых подключений или неправильно настроен DNS. Если машина локальная, и CUPS очень долго загружается, попробуйте на время вырубить сетевой интерфейс
ifconfig eth0 down
Например, как я подключал свой принтер HP DeskJet 930C в CUPS на Debian 3.1 Sarge. Нажимаем Find New Printers - CUPS должна найти наш принтер и скорее всего найдёт его. Если же принтеров нет, CUPS так об этом и скажет, No Printers - тогда можно нажать на Add printer. Но нам повезло и принтеры нашлись:

From Записки дебианщика [beta]


Далее пишем имя принтера, на латинице и без пробелов:
From Записки дебианщика [beta]

Выбираем драйвер для своей модели принтера:

From Записки дебианщика [beta]



Далее определяемся со способом подключения принтера, в моём случае (USB-шный принтер) соответственно:


Ещё пара кликов - и всё готово, теперь принтер установлен и настроен. Если теперь зайти в Printers, он появится и доложит о своей готовности к печати:

Соответствующими кнопками можно настроить доступные параметры печати: разрешение, размер бумаги и прочее. Всё, после этого принтер у вас появится в пользовательских приложениях. Например, в ОпенОфисе - и на него можно сразу чего-нибудь напечатать.


Печать из GiMP

Для этого потребуется установить ещё несколько пакетов и пожертвовать несколько мегабайт дискового пространства:
aptitude install cupsys-driver-gimpprint gimp-print
поставится и настроится. Теперь запускаем GiMP, открываем любое изображение и жмём Файл - Печать. После этого появится солидных размеров диалог, в котором можно настроить что угодно, относящееся к печати изображений.

Тут есть одни грабельки: по умолчанию gimp-print полагает, что ваш принтер сто пудов postscript-совместимый, что, конечно же, далеко не всегда так. Поэтому не спешите радостно печатать фотографии, иначе вместо них из принтера может поползти многостраничная греко-латинско-французская ересь вместо изображения. Для того, чтобы это не произошло, указываем gimp-print наш принтер явно:

То есть жмём "Настроить принтер", выбираем модель принтера, подтверждаем и сохраняем настройки. Теперь всё должно пойти нормально.

Ссылки
Признаться, когда я ещё на Debian Woody настраивал принтер в Linux, я удивлялся руководствам в сети на эту тему (да-да, я читал руководства, поставляющиеся с CUPS, но читать их стоит после того, как всё работает). Либо это решение уж слишком конкретной проблемы, либо попытка объять необъятное и в итоге мануал ни о чём. Есть общее руководство по установке принтеров, но оно жутко устарело, а это, хотя и свежее, но обзорное. Неплохое руководство здесь и у меня по настройке печати через Samba. Очень хороший перевод документации к CUPS тут, о настройке можно ещё почитать здесь. О поддержке принтеров в Linux можно узнать на официальном сайте CUPS.

35 комментариев:

  1. Печать с помощью CUPS первый раз настраивал тоже в Woody. По-моему, с помощью документации CUPS.

    Тогда еще небыло подобной этой статьи :)

    Сейчас у меня нет принтера, но может быть будет. Так что хотелось бы увидеть статьи про a2ps (оно все еще нужно?), и про печать из firefox. Раньше кажется были с этим проблемы.

    ОтветитьУдалить
  2. Так а foo2zjs исключительно принтеро-зависим, разве нет?
    Удивлён, что нет ссылки ни на сайт CUPS, ни на linuxprinting.org
    Печать с win-машины я настроил, но без Samba (нужно только печатать, а файлы передавать не надо). Печать с linux-машины я тоже настроил через cups. Могу написать что-нибудь по этой теме. Пока сам не забыл :)
    Похоже, что руководство исключительно debian-зависимо в части пакетов :), у меня все, кроме foo2zjs называются по-другому.

    ОтветитьУдалить
  3. Roman Lagunov, с печатью из Firefox проблем не обнаружил (debian testing, принтер hp deskjet 3820). Печатает вроде бы так, как должен. :)

    Лично мне все еще интересна печать PS либо PDF. :) С LaTeX все-таки хочется совладать. :) За информацию по печати из GIMP спасибо. Появилась бы эта статья неделю назад... :)

    ОтветитьУдалить
  4. 2 Roman Lagunov
    Так что хотелось бы увидеть статьи про a2ps (оно все еще нужно?), и про печать из firefox. Раньше кажется были с этим проблемы.

    a2ps вроде как не нужен, с Firefox проблем нет (в сарже, по крайней мере). Всё работает, лекго и просто (с), как говорится :-)


    2 Igor
    Так а foo2zjs исключительно принтеро-зависим, разве нет?

    Где-то в документации встречал, что это обязательный пакет. Надо будет погуглить.

    Удивлён, что нет ссылки ни на сайт CUPS, ни на linuxprinting.org
    Да, упустил. На linuxprinting надо поставить, а вот на cups... В последний раз, когда я там был, там не было ничего полезного. Может, что изменилось...

    Печать с win-машины я настроил, но без Samba (нужно только печатать, а файлы передавать не надо). Печать с linux-машины я тоже настроил через cups. Могу написать что-нибудь по этой теме. Пока сам не забыл :)
    Очень, очень было бы здорово! А то у меня всё руки не доходят. В общем, всячески одобрямс :-)

    Похоже, что руководство исключительно debian-зависимо в части пакетов :)
    Кхм... в общем, принимая во внимание название блога, это не удивительно :-)

    2 vonderer@darkstar
    Лично мне все еще интересна печать PS либо PDF. :) С LaTeX все-таки хочется совладать.
    А в чём проблема-то? Из xpdf легко и просто печатаем pdf-ники, ghostscript печатает ps. Из коробки. Более того, в Kile при запросе на quickbuild документа можно срау же и распечатать... Если что - пиши почтой, попробуем разобраться.

    За информацию по печати из GIMP спасибо. Появилась бы эта статья неделю назад... :)
    Пожалуйста, хоть и неделей позже :-) Если что, меня можно всегда пнуть по почте на предмет статей, которые ещё не опубликованы.

    Спасибо за критику и пожелания, учту при следующем редакторском рейде :-)

    ОтветитьУдалить
  5. "Так а foo2zjs исключительно принтеро-зависим, разве нет?

    Где-то в документации встречал, что это обязательный пакет. Надо будет погуглить."

    Пошу прощения, если я не в теме. :) Но у меня и без foo2zjs печатает. :)

    По поводу pdf - обязательно напишу, но я уже как-то писал тебе на эту тему. lpr не посылает документ на печать. Не работают ни acroread, ни xpdf, ни kpdf. gv тоже требует команды lpr.

    ОтветитьУдалить
  6. Да, к слову, еще такой вопрос. В выньдах драйвер принтера позволял регулировать расход чернил, что позволяло сократить оный и после завершения печати не размахивать бумажкой в ожидании, когда все это высохнет... Тут такое возможно?

    ОтветитьУдалить
  7. vonderer:
    попробуй lpr-cups. В своё время мне это помогло с OpenOffice :)
    foo2zjs нужен для 13 принтеров:
    http://linuxprinting.org/show_driver.cgi?driver=foo2zjs
    Просто я имел в виду, что в Debian странно названы пакеты (обычно cups и libcups, а тут cupsys; foomatic-bin - не знаю, что за пакет, бинарный, что ли?!).
    Хорошо, постараюсь в скором времени написать что-нибудь про сетевую печать с других компьютеров, тем более, что это уже сделано.

    ОтветитьУдалить
  8. Хорошая статья, добавил на news2.ru голоснуть можно здесь Настраивал я свою печать на сетевой виндовый принтер примерно так же, вот только методом тыка наставил быть может более пакетов чем требовалось. Отлично печатает из ff, gimp, OO, недавно печатал с xpdf - тоже всё ок. У меня к тебе вопрос по общей теме : ты какой нибудь методикой пользуешься для протоколирования действий при выполнении какой то новой задачи ? Или попутно рядом описываешь в текстовом документе ? Я вот подумываю о том, а не забабахать ли запись данных команд с комментариями в какой нибудь текстовый файлик дабы потом его можно было расширить и дополнить до howto... А то ведь бывает - возишься с чем нибудь, потом и хотелось бы описать процесс - а уже ни сил ни желания нет. Просто из хистори вытащить - слишком банально. Включённый микрофон - тоже вариант, вот только вполне может статься что при долгом и не слишком удачном опыте придётся вырезать слишком много мата :)

    ОтветитьУдалить
  9. 2 vonderer@darkstar
    По поводу pdf - обязательно напишу, но я уже как-то писал тебе на эту тему.
    Надо будет как-нибудь разрулить эту тему и по этому поводу изваять пост :-)

    Да, к слову, еще такой вопрос. В выньдах драйвер принтера позволял регулировать расход чернил, что позволяло сократить оный и после завершения печати не размахивать бумажкой в ожидании, когда все это высохнет... Тут такое возможно?
    Конечно. В расширенных настройках принтера (gimpprint) или через CUPS. У меня и на LaserJet5L и на DeskJet930C поддерживается режим экономии краски. Только я ими не пользуюсь :-)


    2 Igor
    попробуй lpr-cups.
    А что это? У меня в репозитории саржа такого не нашлось...

    foo2zjs нужен для 13 принтеров:
    Спасибо, добрый человек! Обязательно поправлю!

    Хорошо, постараюсь в скором времени написать что-нибудь про сетевую печать с других компьютеров, тем более, что это уже сделано.
    Жду с нетерпением :-)


    2 Dik
    Хорошая статья, добавил на news2.ru голоснуть можно здесь
    Спасибо, стараемся :-)

    У меня к тебе вопрос по общей теме : ты какой нибудь методикой пользуешься для протоколирования действий
    Эм... сложный вопрос. Ну, в текстовый файл копирую названия пакетов, которые ставил аптом. Отписываю краткие комментарии. Рядом запущен обычно гимп для скриншотов.
    Централизованной системы нет, но может быть, что-нибудь придумаю.

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

    Включённый микрофон - тоже вариант,
    Это лучше для подкастов :-) Так сказать, для эмоционального фона. Особенно при сборке собственного ядра...

    ОтветитьУдалить
  10. lpr-cups - это просто команда :)
    Причём сейчас уже её нет у меня. Возможно, в старом Debian есть, как была она в Slackware 10.0

    ОтветитьУдалить
  11. Оказывается, уже написал:
    http://lice.wordpress.com/2006/08/16/cups/
    Там ссылка на статью в ArchWiki, скоро переведу её и дам ссылку на русский перевод.

    ОтветитьУдалить
  12. 2 Igor
    lpr-cups - это просто команда :)
    У меня в Демьяне такое не растёт :-)

    Оказывается, уже написал:
    http://lice.wordpress.com/2006/08/16/cups/

    Маловато будет :-) Хочется побольше, поподробнее и на русском.

    скоро переведу её и дам ссылку на русский перевод.
    Вот этого ждём-с!

    ОтветитьУдалить
  13. В продолжение диалога о логгировании комманд - здесь

    ОтветитьУдалить
  14. Кажется, самую нужную часть я перевёл. Настройка CUPS
    Думаю, потом самые важные моменты из своего личного опыта себе на блог кину. По ссылке много написано того, что я ни разу не делал.

    ОтветитьУдалить
  15. Огромное спасибо! Очень пригодилось!

    ОтветитьУдалить
  16. 2 Igor пишет...
    Кажется, самую нужную часть я перевёл. Настройка CUPS
    Большое спасибо! Ссылка добавлена в пост.

    2 Анонимный пишет...
    Огромное спасибо! Очень пригодилось!
    Пожалуйста. Если один прошёлся по граблям и потратил на это время - лучше написать об этом, чтобы другие время не тратили :-)

    ОтветитьУдалить
  17. Спасибо, пригодилось весьма! Установил Epson Stylus Photo R320. Драйвер взял отюда -http://www.openprinting.org/show_printer.cgi?recnum=Epson-Stylus_Photo_R320. Там же и "How to install" имеется очень доходчивый, хоть и на английском. Затем установил "CUPS"(как выяснилось очерёдность установки роли не играет). Оставалось только в KControls>Peripherals>Printers(у меня KDE) добавить мой принтер, указав установщику, где лежит драйвер - /usr/share/ppd/gutenprint/Epson. И всё заработало на ура. Ещё раз спасибо.

    ОтветитьУдалить
  18. 2 Михаил пишет...
    Спасибо, пригодилось весьма!
    Пожалуйста, рад, что помогло.

    И всё заработало на ура.
    Обычно оно так и работает, если это не винпринтер или прочая безмозглая недо-железяка. :-)

    ОтветитьУдалить
  19. очень полезная статья! спасибо!
    а как насчсет подключения сетевых принтеров? с локальными - понятно.

    ОтветитьУдалить
  20. При указании Custom Command можно печатать только одну копию, так как поле ввода числа копий GIMP блокирует, или каждый раз указывать в Custom Command -n 10 (число копий). Есть ли для этого лекарство для GIMP?

    Знаю, в GIMP 2.4 можно выбрать принтер и не дефолтовый, и печатать без Custom Command, но у меня GIMP 2.2.

    ОтветитьУдалить
  21. Благодарю за вашу работу и за то что вы делаете!!

    ОтветитьУдалить
  22. Спасибо заработало, статья до сих пор актуальна. Вот только за место пакета foomatic-bin надо выбрать конкретно свой драйвер(на openprinting.org списки драйверов) и вроде gimp уже умеет напрямую печатать.

    ОтветитьУдалить
  23. Сасибо! Век живи - век учись!

    ОтветитьУдалить
  24. А что делать если название принтера не появилось в списке поддерживаемых принтеров?

    ОтветитьУдалить
  25. Спасиб большое за статью. Реально полезная штука.
    До того на своим НР плясал используя hplip-gui

    правда дополнительных пакетов к гимпу не нашел.
    сижу где-то недели 3 на squeeze.

    $ sudo aptitude install cupsys-driver-gimpprint gimp-print
    Не удалось найти пакеты, содержащих "cupsys-driver-gimpprint" в своём имени или описании
    Нет подходящей версии для gimp-print
    Не удалось найти пакеты, содержащих "cupsys-driver-gimpprint" в своём имени или описании
    Нет подходящей версии для gimp-print
    Ни одного пакета не будет установлено, обновлено или удалено.

    ОтветитьУдалить
  26. Без проблем установили HP LJ1200 по этому руководству в новом стабильном Debian Squeeze. Разве что панель управления принтерами видоизменилась немного и при установке пакетов пакет cupsys найден не был, но видимо изменились названия и он называется по другому. Поставил те пакеты которые apt предложил и все работает

    ОтветитьУдалить
  27. Здраствуйте. Следуя вашей статье удалось настроить CUPS и добавить в нем принтер. Но как теперь добавить сетевой принтер на windows машине? Нужно ли для этого использовать самбу? Сервер настроен на дебиане в консольном режиме, принтер HP 1018(драйвера вроде нормально стоят, но при печати тестовой страницы пишет что задание выполнено, а принтер даже не зажужал)

    ОтветитьУдалить
  28. Спасибо!!! Ты спас своей статьёй одно маленькое интернет-кафе)))

    ОтветитьУдалить
  29. Хотел бы обратиться к автору блога "Записки дебианщика". У вас появится обновленная статья как настроить принтер в Debian? Потому что ваш способ больше не работает, т.к. к настоящему времени кое-что изменилось. В репозитории Debian нет пакетов с названиями cupsys gs-esp foomatic-bin чтобы их установить, как вы инструктируете в статье.:(

    ОтветитьУдалить
  30. Да уж, update явно трэба... если у автора есть ещё желание покапаться...

    ОтветитьУдалить
  31. @Eustace комментирует...
    Хотел бы обратиться к автору блога "Записки дебианщика". У вас появится обновленная статья как настроить принтер в Debian?
    Да, появится. Вернее, я думаю обновить эту. Новую писать особенно не зачем, но старую таки надо бы обновить.

    В репозитории Debian нет пакетов с названиями cupsys
    Ну статье-то 5 лет уже. Так что оно понятно. Но я поправлю.

    @Анонимный комментирует...
    Да уж, update явно трэба
    Желание покопаться есть, но нет времени, Анонимус. На праздниках, отойдя от дегустирования разных субстанций, попробую что-нибудь придумать.

    ОтветитьУдалить
  32. Очень приятно, что Вы откликнулись... Будем ждать.
    Желаю Вам и Вашим близким тепла и радости в Наступаюшем.

    ОтветитьУдалить
  33. интересная штука: есть две машинки с LMDE в сети (кроме них больше никого и нет). На одной с принтерами все оК, а на второй весело: вторая машинка видит принтера первой, и даже печатать может, а вот на нее саму установить pdf-cups - облом-с, не позволяет. в http://localhost:631 принтер cups-pdf виден, но какой-то он калечный:

    [12/Nov/2012:22:30:03 +0100] cupsdAuthorize: Empty Basic password!
    E [12/Nov/2012:23:52:08 +0100] Avahi client failed, closing client to allow a clean restart
    E [14/Nov/2012:23:45:11 +0100] Avahi client failed, closing client to allow a clean restart
    E [16/Nov/2012:23:55:13 +0100] Avahi client failed, closing client to allow a clean restart
    E [17/Nov/2012:00:17:53 +0100] Returning HTTP Forbidden for CUPS-Get-Devices (no URI) from localhost
    E [17/Nov/2012:00:17:53 +0100] [CGI] CUPS-Get-Devices request failed with status 401: Forbidden

    то еще шаманство, увы.

    ОтветитьУдалить
  34. Можно спросить о печати в inkscape?

    ОтветитьУдалить
  35. Не пойму почему, но в inkscape перестал печать принтер, тоесть при нажатии на кноповку "ПЕЧАТЬ" принтер (Canon MP210)переходит в режим "ОБРАБАТЫВАЕТСЯ" и стоит долго, (Linux Mint 13 Mate), в других программах печатает, и в inkscape раньше печатал, потом не понятно когда и почему перестал...

    ОтветитьУдалить