Драйвер принтера Canon CAPT является закрытым исходным кодом, а двоичные библиотеки, поставляемые компанией Canon, скомпилированы для i386. Поэтому, если вы используете amd64, вам сначала нужно включить multiarch и установить несколько библиотек:
# amd64 only
dpkg --add-architecture i386
apt-get update
apt-get install libstdc++6:i386 libxml2:i386 zlib1g:i386 libpopt0:i386
Установите чашки, если у вас их еще нет:
apt-get install cups
Загрузите и распакуйте драйвер принтера Canon CAPT:
wget http://gdlp01.c-wss.com/gds/6/0100004596
tar -zxvf Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz/03/Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz
Установите 32-битный или 64-битный драйвер в зависимости от вашей архитектуры:
Теперь найдите /usr/share/cups/model
ppd-файлы, которые описывают принтеры, и выберите тот, который соответствует (или ближе всего) к вашему принтеру:
# grep -H ModelName /usr/share/cups/model/*.ppd | less
...
/usr/share/cups/model/CNCUPSLBP6018CAPTS.ppd:*ModelName: "Canon LBP6000/LBP6018 CAPT (US)"
В этом случае мы выбрали, CNCUPSLBP6018CAPTS.ppd
какая модель соответствует модели LBP6000.
Добавить принтер:
# lpadmin -p LBP6000 -m CNCUPSLBP6018CAPTS.ppd -v ccp://localhost:59687
# lpadmin -p LBP6000 -E
# ccpdadmin -p LBP6000 -o /dev/usb/lp0
И настройте свою систему для автоматического запуска демона Canon ccpd:
# update-rc.d ccpd defaults
Проблемы
Есть несколько проблем с драйвером принтера Canon:
Он был построен для Debian, и последняя поддерживаемая версия Ubuntu была 12.04. Это работает в 14.04, хотя.
Он включает в себя двоичные библиотеки с закрытым исходным кодом, которые созданы для 32-разрядной версии i386, поэтому его нельзя запускать на amd64 (даже в 64-разрядной версии).
captstatusui включает в себя неограниченный вызов strcpy
в cnsktmodule.c, который завершается ошибкой aborted *** buffer overflow detected ***
в некоторых системах
Драйвер принтера Canon на самом деле является отдельным демоном, который общается с чашками через локальный или сетевой сокет - он оставляет открытый сетевой порт в вашей системе, и я сомневаюсь, что код Canon когда-либо проверялся на наличие уязвимостей безопасности
Принтер может отображаться дважды в чашках (один раз для автоматически определяемого USB-принтера, один раз как демон Canon CCPD), но принтер «USB» не будет работать, если вы попытаетесь выполнить печать на нем. В настройках принтера, если вы видите, что ваш принтер настроен как USB-принтер, вы должны вручную отключить его (щелкните правой кнопкой мыши, отключите)
Canon использует свое собственное программное обеспечение и протокол для общения с принтером, поэтому он не интегрирован с чашками, не распознается автоматически и требует установки драйвера вручную. Разумно ожидать, что принтер должен автоматически обнаруживаться и просто работать, но это невозможно с Canon LBP. Моим следующим принтером будет принтер, который «просто работает» с драйверами с открытым исходным кодом, возможно, сетевой принтер, поддерживающий стандарт PCL - Printer Command Language , например Brother HL-2250DN (дешевый дуплексный сетевой принтер, ранее самый продаваемый лазерный принтер Amazon). или принтер , рекомендованный HP Linux, который работает с программным обеспечением HPLIP с открытым исходным кодом.
Скрипты сборки для исходного кода старые и немного беспорядочные. Из-за включения бинарных библиотек i386 с закрытым исходным кодом и отсутствия поддержки multiarch в сценариях сборки было бы очень сложно скомпилировать полностью работающую 64-битную версию. Компиляция 32-разрядной версии в 32-разрядной системе возможна после того, как вы исправите различные ошибки в системе сборки.
Проблема: ccpd зависает
Иногда ccpd зависает, и очередь просто говорит "Обрабатывается с ..."
Попробуйте ручной перезапуск:
pkill -9 -x ccpd
pkill -9 -x captmoncnabc
/etc/init.d/ccpd start
/etc/init.d/ccpd status
Проблема: ccpd не работает - после запуска системы работает только один процесс ccpd
Для нормальной работы в системе должны быть запущены два процесса ccpd. Демон ccpd зависит от запуска демона cups перед ответом на второй процесс. Вы можете использовать следующий метод для решения проблемы:
Включите сценарий инициализации cups (по умолчанию update-rc.d cups).
Дайте команду сценарию инициализации ccpd запускаться после инициализации cups (update-rc.d ccpd по умолчанию 99) или добавьте «sleep 10 && /etc/init.d/ccpd start» в сценарии /etc/rc.local.
Если вы хотите использовать правила UDEV и сценарий запуска, имейте в виду, что правила UDEV выполняются до сценария инициализации CUPS, поэтому может быть полезно перезапустить сценарий инициализации ccpd, а не просто запустить. Например, вы можете поместить следующую строку в «/etc/rc.local»:
сон 10 && /etc/init.d/ccpd restart
(Решение от
Ubuntu Wiki )
Сообщение об ошибках и проблемах в службу поддержки Canon
У Canon есть официальный адрес электронной почты для сообщения о любых ошибках и проблемах с драйвером:
sup-debian@list.canon.co.jp
Сборка из источника
Если вы испытываете желание попробовать собрать и установить из исходного кода, следуйте этим инструкциям ( скрипт сборки Arch также может помочь):
sudo apt-get install build-essential automake libtool libgtk2.0-dev libglade2-dev libcups2-dev
wget http://gdlp01.c-wss.com/gds/6/0100004596/03/Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz
tar -zxvf Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz
cd Linux_CAPT_PrinterDriver_V260_uk_EN/Src/
# do cndrvcups-common
sudo apt-get install build-essential automake libtool libgtk2.0-dev libglade2-dev libcups2-dev
rm -rf cndrvcups-common-2.60-1/
tar -zxvf cndrvcups-common-2.60-1.tar.gz
cd cndrvcups-common-2.60-1/
sed -i -e 's/-lcups/-lcups -lgmodule-2.0/' cngplp/src/Makefile.am
dpkg-buildpackage -b -uc
cd ..
sudo apt-get install cups
sudo dpkg -i cndrvcups-common_2.60-1_amd64.deb
# do cndrvcups-capt
rm -rf cndrvcups-capt-2.60-1/
tar -zxvf cndrvcups-capt-2.60-1.tar.gz
cd cndrvcups-capt-2.60-1/
export echo=echo
sed -i -e 's/dh_shlibdeps/dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info/' debian/rules
sed -i -e 's/eval cmds=\"$old_archive_cmds/echo/' cngplp/ltmain.sh
sed -i -e 's:uimain.h":uimain.h"\n#include <cups/ppd.h>:' statusui/src/ppapdata.c
sed -i -e 's/cnsktmodule.la/cnsktmodule.la -lpthread/' statusui/src/Makefile.am
debian/rules configure
sed -i -e 's/RANLIB=/#RANLIB=/' cngplp/libtool
debian/rules build
fakeroot debian/rules install
fakeroot debian/rules binary-arch
cd ..
sudo dpkg -i cndrvcups-capt_2.60-1_amd64.deb
Я включаю это просто как примечание для тех, кто склонен идти по этому пути. Большинство людей не должны пытаться построить это из источника. Даже в системе amd64 полученный пакет будет включать закрытые библиотеки i386.