Принтеры в 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 комментариев: |высказаться!| RSS-лента дискуссии.|
Roman Lagunov комментирует...

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

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

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

Igor комментирует...

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

vonderer@darkstar комментирует...

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

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

virens комментирует...

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 спасибо. Появилась бы эта статья неделю назад... :)
Пожалуйста, хоть и неделей позже :-) Если что, меня можно всегда пнуть по почте на предмет статей, которые ещё не опубликованы.

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

vonderer@darkstar комментирует...

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

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

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

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

vonderer@darkstar комментирует...

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

Igor комментирует...

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

Dik комментирует...

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

virens комментирует...

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

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


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

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

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


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

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

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

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

Igor комментирует...

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

Igor комментирует...

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

virens комментирует...

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

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

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

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

Dik комментирует...

В продолжение диалога о логгировании комманд - здесь

Igor комментирует...

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

Анонимный комментирует...

Огромное спасибо! Очень пригодилось!

virens комментирует...

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

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

Михаил комментирует...

Спасибо, пригодилось весьма! Установил 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. И всё заработало на ура. Ещё раз спасибо.

virens комментирует...

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

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

Supra комментирует...

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

zarubama комментирует...

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

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

RLC комментирует...

Благодарю за вашу работу и за то что вы делаете!!

pavel.mlnkv комментирует...

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

Анонимный комментирует...

Сасибо! Век живи - век учись!

Ольга комментирует...

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

Irbis (leric комментирует...

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

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

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

Андрей комментирует...

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

Alesha комментирует...

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

Анонимный комментирует...

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

Eustace комментирует...

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

Анонимный комментирует...

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

virens комментирует...

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

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

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

Анонимный комментирует...

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

cynicanonimus комментирует...

интересная штука: есть две машинки с 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

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

Анонимный комментирует...

Можно спросить о печати в inkscape?

Анонимный комментирует...

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

Отправить комментарий

Подписаться на RSS-ленту комментариев к этому посту.