LM16 Cinnamon и принтер Canon LBP2900

/ Просмотров: 10782
Метки: ,

История отношений моего принтера Canon LBP 2900 и Linux вполне тянет на материал для драматичного любовного романа с напряжённым сюжетом. Были тут и сладостные моменты гармонии и душевного согласия, и ссоры вплоть до расставаний, и, — наконец, всё это мне надоело. Достаточно я нашарахался от инструкции к инструкции, от скрипта к скрипту, даже сам написал пошаговое руководство (и, кстати, установленный по нему принтер до сих пор работает в Росинке-9, но не в новых дистрах, увы...). И пришла ко мне поистине революционная в своей новизне мысль: а почему бы не установить принтер строго по прилагаемой к драйверу официальной инструкции от Canon?!

Знаю, найдутся такие ребята, которые поднимут меня на смех: мол, кто ж так делает? разве только чайники какие-нибудь. А я стану горячо возражать: Друзья, зато, кроме уникального опыта, я в случае неудачи могу с полным основанием сказать, кто виноват. Это так утешает русскую ментальность! И кроме того, сами-то вы пробовали?

Note:   Более опытным юзерам, а также тем, кому не интересны беллетристические упражнения автора, последний предлагает краткую шпаргалку по данной теме. Шпаргалка представляет собой протокол установки принтера Canon LBP2900 в Linux Mint 17 Cinnamon.

Подготовка к установке.

Но хватит трёпа и стёба. Идём на каноновский офсайт и берём там рекомендованный драйвер, на данный момент это V260 (страничка загрузки тут). Распаковываем, как обычно, в удобное место, и смотрим, что к чему.

Распакованный драйвер имеет следующую структуру:

/Linux_CAPT_PrinterDriver_V260_uk_EN ├── /32-bit_Driver │ ├── /Debian │ │ ├── cndrvcups-capt_2.60-1_i386.deb │ │ └── cndrvcups-common_2.60-1_i386.deb │ └── /RPM │ ├── cndrvcups-capt-2.60-1.i386.rpm │ └── cndrvcups-common-2.60-1.i386.rpm ├── /64-bit_Driver │ ├── /Debian │ │ ├── cndrvcups-capt_2.60-1_amd64.deb │ │ └── cndrvcups-common_2.60-1_amd64.deb │ └── /RPM │ ├── cndrvcups-capt-2.60-1.x86_64.rpm │ └── cndrvcups-common-2.60-1.x86_64.rpm ├── /Doc │ ├── guide-capt-2.6xUK.tar.gz │ ├── LICENSE-captdrv-2.60E.txt │ └── README-capt-2.6xUK.txt └── /Src ├── cndrvcups-capt-2.60-1.tar.gz └── cndrvcups-common-2.60-1.tar.gz 8 directories, 14 files

Сразу видим, что в каталоге Doc наряду с лицензией (которую мы обязательно изучим как-нибудь потом, на досуге) имеется архив с гайдом (еще раз распаковывать) и файлик README-capt-2.6xUK.txt на 750 строк.

Естественно, нам предлагается прочитать его внимательно.
Что в нём интересного?
Прежде всего – список ОСей, для которых опробован драйвер:

Previously Evaluated OS — показать

Мда, негусто. И, главное, самого интересного для нас, Ubuntu 13.10 Desktop 32-bit/64-bit (Sausy) в нём нет. То есть тонкий намёк: если что – фирма и не гарантировала. Ладно, нам не привыкать.

Далее идет список поддерживаемых принтеров, см. под спойлером:

Список принтеров — показать

Здесь мы обнаруживаем свой Canon LBP2900 (CNCUPSLBP2900CAPTK.ppd). Далее идет просьба смотреть подробности в онлайн-мануале, в guide-capt-2.6xUK.tar.gz. Ну, к этому мы еще придем.

Следующий раздел интереснее:

4. Auto startup setting procedure for ccpd daemon (Метод настройки автозапуска демона ccpd)
"Если настраивать статус-монитор для автозапуска, демон ccpd также должен запускаться автоматически.

Настройте демон ccpd по следующей процедуре.
<Если дистрибутив имеет файл /etc/rc.local>
Залогинтесь под рутом и создайте команду '/etc/init.d/ccpd start' в файле /etc/rc.local

<Если дистрибутив с командой /sbin/insserv>
Залогинтесь под рутом, вставьте нижеследующие строки в позицию третьей строки в файл /etc/init.d/ccpd (моё прим.: этот файл появится, естественно, после установки драйвера) и выполните команду 'insserv ccpd'.

### BEGIN INIT INFO # Provides: ccpd # Required-Start: $local_fs $remote_fs $syslog $network $named # Should-Start: $ALL # Required-Stop: $syslog $remote_fs # Default-Start: 3 5 # Default-Stop: 0 1 2 6 # Description: Start Canon Printer Daemon for CUPS ### END INIT INFO

У нас имеется файл /etc/rc.local, поэтому будем ориентироваться на первый вариант.

Note:   Раньше, начиная с Росинки-9, я всегда модифицировал файл /etc/init.d/ccpd, в том числе вставлял в него вышеприведенные строки с определением уровней старта/стопа демона. Так вот, на сей раз ничего подобного я не сделал. И, как выяснилось, правильно.

Далее следует раздел '5. Cautions, Limitations, and Restrictions', который, вообще говоря, следует внимательно прочесть, поскольку там встречаются важные замечания. Например, указывается, что формат бумаги следует определять в драйвере, а не в приложении, из которого осуществляется печать, или что документы MicrosoftOffice (.doc) могут не печататься правильно в LibreOffice из-за проблем совместимости Ghostscript и PostScript, и т.д. Но поскольку всё это не имеет отношения непосредственно к установке принтера, оставляю раздел вам для самостоятельного изучения. Особенно внимательно рекомендую просмотреть этот раздел тем, кто будет ставить драйвера не в LM16 Cinnamon, а в других дистрах.

Далее нам остаётся распаковать гайд (guide-capt-2.6xUK.tar.gz) и читать его до полного просветления.

После чего, морально и информационно подготовившись, приступим собственно к установке.

Установка драйвера.

1.

Переходим в директорию с распакованным драйвером, а в ней — в каталог с нужными нам файлами, у меня это /Linux_CAPT_PrinterDriver_V260_uk_EN/32-bit_Driver/Debian

Устанавливаем пакет cndrvcups-common_2.60-1_i386.deb

sudo dpkg -i cndrvcups-common_2.60-1_i386.deb

Устанавливаем пакет cndrvcups-capt_2.60-1_i386.deb

sudo dpkg -i cndrvcups-capt_2.60-1_i386.deb

2.

ВКЛЮЧАЕМ ПРИНТЕР.

Рестартуем CUPS.

Внимание!   В руководстве указана "неправильная" команда sudo '/etc/init.d/cupsys restart' для deb-дистра. Такого демона нет. Правильно

sudo /etc/init.d/cups restart
Правда, о возможности такого казуса говорится в 'NOTE'.
Внимание!   НЕ регистрируем принтер командой 'lpadmin' ДО рестарта CUPS! Об этом ясно сказано в том же 'NOTE'

3.

Регистрируем принтер (PPD) в спулере печати:

sudo /usr/sbin/lpadmin -p LBP2900 -m CNCUPSLBP2900CAPTK.ppd -v ccp://localhost:59687 -E

Если у вас другой принтер, подставьте его имя вместо LBP2900, а соответствующий ему ppd-файл – вместо CNCUPSLBP2900CAPTK.ppd. Вся эта информация есть в гайде.

4.

Регистрируем принтер в ccpd конфиг-файле демона.

Note:   Я рассматриваю только usb-соединение. Если вам нужна сетевая установка – читайте гайд.
sudo /usr/sbin/ccpdadmin -p LBP2900 -o /dev/usb/lp0
Внимание!   Очень важно! Внимательно прочтите всё нижеследующее!

Если бы не этот пункт, данный пост можно было бы вообще свести к одной фразе: "Принтер Canon LBP2900 без проблем устанавливается с помощью официальной инструкции, прилагаемой к драйверу." Но скорее всего, принтер у вас сразу не заработает. Почему?
Цитирую безымянного юзера (как говорится, респект ему и уважуха! Его пост можно найти по этой ссылке):

"Господа, хочу сказать, что понял весь дзен! Сам уже несколько дней мучаюсь с этим принтером, и до меня допетрило, что большинство проблем в итоге связано с пунктом
sudo /usr/sbin/ccpdadmin -p LBP2900 -o /dev/usb/lp0
Не поленитесь, сходите в папку dev/usb и проверьте, какой файл отвечает за ваш порт с принтером, у меня это, например, lp1, а не lp0.
Поменял цифру в терминале и он благополучно напечатал все, что я просил!"

Итак, установив драйвер, рестартовав cups, зарегистрировав принтер в спулере печати и в демоне, нужно пойти в /dev/usb и посмотреть, как определился принтер. У меня он определился даже не как lp1, а вообще как lp2. С учетом этого повторно даём скорректированную команду

sudo /usr/sbin/ccpdadmin -p LBP2900 -o /dev/usb/lp2

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

Примечания и замечания.

Далее пойдет ряд примечаний (они будут пополняться), — ради справедливости, для общего образования или просто на память.

Кстати:   о справедливости. В гайде, в разделе Installing the Printer Driver есть такое примечание: "Depending on the distribution you are using, "/dev/usblp*" may be displayed in [Printer Device Path]." Может, и найдутся продвинутые юзеры, которые сделают из этого тёмного намёка вполне ясные выводы, — мол, надо пойти в /dev/usb/.. и т.д.. Мне это, увы, не удалось.

Не следует забывать, что в каноновским гайде есть не только Installing the Printer Driver, но и другие разделы, в т.ч. Printing Methods и Print Settings from the Command Line. Вообще это руководство весьма подробное и информативное, причём организация всего обширного материала не так уж и плоха, надо только к ней попривыкнуть. Жаль только, не нашлось в Canon ставки для переводчика на русский, а именно в данном случае локализация была бы очень желательна.

Комментариев: 44 RSS
Дмитрий Андреевич1
2014-08-30 в 07:08:42

Курим, материмся, курим, материмся, ......

Простаивает - ccp send_data error, exit

С уважением и надеждой на подсказку, пенсионер Интернета, Дмитрий Андреевич

Ваша правда. Я столкнулся с проблемами печати с неделю назад, после установки LinuxMint 17 Cinnamon на новый диск SSD. Пока не отписываюсь, потому что хочется докопаться до корней.

А в качестве пожарного метода поступаю следующим образом:

После загрузки системы принтер не включаю, а смотрю в терминале:

sudo /etc/init.d/ccpd status

При ответе

/usr/sbin/ccpd: 1437 (любое одно число)

перезапускаю ccpd:

sudo /etc/init.d/ccpd restart

и снова смотрю

sudo /etc/init.d/ccpd status

Если в ответе появляются два числа, примерно так:

/usr/sbin/ccpd: 32114 32112

то включаю принтер, и он, как правило, начинает сразу печатать как паинька.

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

sudo /usr/sbin/ccpdadmin -p LBP2900 -o /dev/usb/lp[0-9]

и затем снова проделывать операции с status/start/restart, побочным эффектом может стать "бешенство" принтера, когда он станет печатать подряд всё то, что вы уже пытались печатать до этого, т.е. начнет выполнять свою хренову очередь.

В ближайшее время, если буду в состоянии, попытаюсь выяснить, по какой подлой причине при загрузке убивается cups и в dmesg появляется такая запись:

init: cups main process (714) killed by HUP signal

PS:Всё это действительно лишь в том случае, если Вы устанавливали принтер по моей шпоре, т.е., строго говоря, по инструкции Canon.

У меня lbp1120 и диск SSD - столкнулся ровно с этой же проблемой. печатает только после рестарта ccpd

Так и должно быть smile, -- драйвер-то один и тот же.

По моим подозрениям, очень может быть, что такая шняга наступает после обновления cups, а их за последние 3 месяца было, кажется, два. Если бы я вовремя сообразил, то просто заморозил бы обновления всего, что относится к cups, после установки принтера, и стало бы ясно, cups виноват или нет. На Linux Mint 16 принтер работает как и в первый день, без передергивания демона. Это о чеи-то да говорит. Как появится время, обязательно постараюсь въехать в проблему.

А диск тут ни при чем. У меня данная проблема наблюдается с 2010 года на разном железе и ОСях.

У меня та-же проблема smile, только ЛМ 17 64amd

Не завелся ни разу.

И вопрос к Вам почему:

sudo /etc/init.d/cups ? вместо sudo service cups restart ?

Жертва в наличии, желания море - буду копать и делиться опытом.

И вдогонку, вся история как у Дмитрия Андреевича

Простаивает - ccp send_data error, exit

и к тому-же комманда captstatusui -P LBP2900 выдает ошибку

Check DevicePath in "/etc/ccpd.conf"

Т.е. ccpd "не видит" устройство на порту /dev/usb/lp2

Устройство существует - проверял.

Еще я пробовал убивать

apt-get remove system-config-printers-udev (чтобы не умничал)

Пока что все...

alex_shkut, жаль, что Вы не упомянули, запускался ли у Вас принтер после установки. Если да, то посмотрите "Решение проблем..." (http://mintmem.com/page/promlem-with-lbp2900)

Если же нет, тогда дело другое. Либо принтер устанавливался не по моей Шпаргалке (http://mintmem.com/page/lbp2900-shpora), которая есть не что иное, как выжимка из Кэноновского гайда, либо какая-то проблема 64-бит (тут я пас, у меня все ОСи сейчас 32-бит).

Ошибка captstatusui, по моему опыту, возникает тогда, когда запущен всего один процесс ccpd, их должно быть два. (Впрочем, я этим captstatusui давно не пользуюсь, имхо бесполезная вещь). Пакет system-config-printer-udev у меня пока что ни в чем предосудительном замечен не был.

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

sudo /etc/init.d/ccpd restart

принтер работает себе как ни в чем ни бывало smile

Вы пропустили мою фразу: Не завелся ни разу.

Я танцевал со всеми бубнами, которые смог найти.

Но после мануала. Т.е. мануал не сработал, и начались танцы.

Теперь буду пользовать strace, как раз выходные впереди.

Пропустил, извиняюсь.

strace это круто, я как-то ни разу до этого не доходил. Вообще за несколько лет я тоже до фига наплясался, но пришел к окончательному выводу, что лучший бубен -- это официальное руководство к драйверу. И на всех debian-based ОСях принтер в конце концов запустить удавалось. Не буду Вам советовать (учитывая опять-таки 64-бит), но я бы сначала попробовал удалить всё, включая дрова, cups полностью, все соответствующие конфиги в /etc (предварительно сохранив бэкапы) и переустановить всё по-новой, строго по гайду.

Ну, если что напляшете -- уж отпишитесь smile

Плохо, что мы превращаем этот мем в форум, но куда-уж? - потом вынете все полезное - остальное почистить, все-равно никто все это читать не станет. 64 бит вынуждено - ноут НП с УЕФИ smile, только 64-х становится.

Я программист, и опыт у меня - около 19 лет. Проблема может скрываться в самой небольшой мелочи smile.

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

Покуда captstatusui не увидит устройство, я думаю, его не увидит никто smile.

"Плохо, что мы превращаем этот мем в форум" -- да ничего плохого, мы ж не о девочках тут smile Потом, ясное дело, почищу, а пока пусть будет мини-форум, может, кого-то натолкнет на дельную мысль.

Только что еще раз прошелся по своим ОСям. Положение таково:

LM 16 Cin Petra: после загрузки, до включения принтера, обнаруживаются два процесса ccpd, принтер включается и печатает сразу, безо всяких телодвижений;

LM 17 v2 Cin (основная) показывет один процесс ccpd, после sudo /etc/init.d/ccpd restart их становится два, можно включать принтер и печатать;

LM 17 RC Cin (пациент в поликлинике для опытов) имеет странности. Во-1х, в апплете принтер один (а в других ОСях, как уже привычно, их два, LBP2900 и призрак -- LBP2900-2, первый, понятно, сделан умолчальным). При включении принтера до рестарта ccpd всё стало колом, не помог даже перезапуск cups. После перезагрузки, не включая принтер, перезапустил ccpd, после чего принтер был включен и благополучно начал печатать (хотя и остался один).

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

"их два, LBP2900 и призрак -- LBP2900-2," - вот как раз призрак и создается system-config-printers-udev. И не факт, что он не захватывает порт USB. Где-то читал... Поэтому удалил для чистоты эксперимента.

Это вряд ли: у меня в "Росинке-9" LBP2900-2 жил года три и не мешал. Перезапустишь ccpd и печатай не хочу.

Но system-config-printer-udev надо, наверно, и вправду заняться. Ключевой вопрос: кто ответственен за убиение второго демона ccpd при загрузке, так мне кажется.

Есть еще одна мысль, но я почему-то ее отложил "на потом".

Попытаюсь собрать пакеты на ЛМ 17 64х из исходников. Возможно - там и покажет чего не так.

Есть исследование: мануал Canon на "чистой" ЛМ 17 64amd не подал ни одного признака жизни.

Диагноз strace:Too many open files!!! Кто-бы думал?

Т.е.: предварительно - ЮСБ порт уже занят! Или ограничение на порт lp*.

Буду анализировать дальше... Интересно?

У меня на ЛМ 17 инет только через CDMA UTStarcom UM150 и никак не могу его поднять из-за наличия встроенного SD-контроллера.

"Буду анализировать дальше... Интересно?"

Как говорит одна моя деревенская знакомая: "А то бы!" smile

Всем нам, даже таким как я, светит в скором времени переход на 64 бит, а я практически с этим не имел дела, не считая короткого романа с Арчем. Разбираться-то по любому придется.

"Может, и найдутся продвинутые юзеры, которые сделают из этого тёмного намёка вполне ясные выводы, — мол, надо пойти в /dev/usb/.. и т.д.. Мне это, увы, не удалось."

Найдутся...

В некоторых дистрибутивах устройство линкуется к узлу /dev/usb/lp[0-9], а в некоторых /dev/usblp[09]

Вот этот ньюанс и нужно посмотреть.

Демон ccpd работает с этим устройством напрямую. Я трассировал работу демона при отправке на печать тестовой страницы. Так вот: то-ли демон не может открыть /dev/usb/lp?

Кстати, я даже забыл посмотреть, на каком порту у меня "повис" принтер smile

Так что я сам себе указал на первую ошибку в установке.

Портов-то у меня 8! И в какой я воткнул принтер - я даже не глянул.

В ЛМ 17 64amd по мануалу принтер не работает. Все проверил, все верно, все сделал как надо (запуски перезапуски). Порт правильный - ни звука. Трассер выдает все то-же, что и вчера. Буду копать в сторону доступа к /dev.

Плохо, что мой модем UM 150 не поднимается в Линуксе без бубна, но это было в 32х, а в 64х я даже не знаю как smile. Он есть, его видно, коннект настраивается, но не работает. Точно как с этим принтером smile.

А без интернета выяснить, почему too many open files - можно годы потерять.

Чтобы написать пост, приходится в 7 перегружаться.

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

Мда, хоть я и написал, что даже мне придется-таки переходить на 64-бит, но спешить не буду. Был уже года два или полтора назад такой опыт у меня, сиганул обратно на 32-битную ОСь как ошпаренный...

Просмотрите, пожалуйста (под суперюзером) файл /etc/pam.conf (или что-то подобное) и папку /etc/pam.d на предмет упоминания там сервиса ccpd.

Особенно интересует содержимое файла /etc/pam.d/common-session и /etc/pam.d/other(s)

Все названия пишу по-памяти, так что могут немного отличаться.

Сейчас, под рукой ЛМ 17 нету, так что сравню либо вечером, либо увижу отличия по-памяти.

Есть версия, что PAM ограничивает доступ ccpd к файловой системе, а соответственно и к /dev/usb/lpN

И добавлю от себя. Ничего, что может скомпрометировать Вашу систему я спрашивать не буду smile

"Просмотрите, пожалуйста (под суперюзером) файл /etc/pam.conf..." Посмотрел (пока бегло). Как и в папке /etc/pam.d ничего про ccpd не видать. В последней есть файлик cups-daemon, вот всё его содержание:

@include common-auth
@include common-account
@include common-session

"Ничего, что может скомпрометировать Вашу систему я спрашивать не буду smile" Это почему же? Если это по делу, как-нибудь переживу smile

Я к чему спросил?

Драйвер Canon работает так: мы отправляем задание печати на CUPS.

CUPS формирует задание печати в формате PostScript и отправляет его на порт принтера.

В нашем случае это порт демона ccpd. ccpd должен переработать это задание в формат CAPT (не путать с CUPS) и, фактически отработать его на принтер.

Но! Как я понимаю, ccpd не работает с документом в памяти (ее может не хватить) и формирует буферный файл.

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

Мне видится, что в этом-то и вся проблема.

Если в PAM на процесс ccpd выделено 0 (ноль) файлов, то процесс не сможет открыть ни одного файла для своей работы.

Этот факт может быть причиной того, что ccpd при старте системы имеет один (или ни одного, как в х64) дескриптор. Второй дескриптор (оба) выпадает по отказу в доступе к ресурсам.

Это пока что основная рабочая гипотеза.

Вам еще интересен ход моих мыслей в решении этой проблемы?

Дело движется медленнее, чем хотелось бы, занимаюсь по вечерам и в Линуксе модем все еще не работает.

Натрассировал, что ccpd не может нормально создать поток (pipe) - он получется bad и демон прекращает обработку задания с ошибкой, которую ловит CUPS и останавливает выполнение задания печати.

В интернете нашел, что эти самые пайпы регулируются:

"В limits.conf прописаны rlimits, которые, как я писал выше, ограничивают число нитей."

В данном выражении нити - это pipe.

Вот это и буду проверять сегодня вечером.

Если я найду решение - оно будет применимо к любой системе, хоть 32х, хоть 64.

Забыл добавить про pipe - это дочерние процессы, которые работают как файловые указатели, но работают в памяти. (В предыдущих постах я неверно трактовал про создание файлов, скорее это были ошибки потока).

Поглядим, что Вы накопаете smile

Только я практически уверен, что на 32 и 64 бит проблемы принципиально разные. Еще раз подчеркну, что на 32-бит системах мне всегда удавалось запустить принтер, где просто (как на Минтах с Cinnamon'ом), где сложней (как на системах с Mate), но обязательно хотя бы после установки он работал. Опыт на 64-бит был неудачен, хотя, правда, он был единственный.

Уже не единственный smile

Скорее всего и на 32 бит, и на 64 бит в первую очередь проблемы с доступом (разрешениями).

Я так понимаю, в каждой новой системе и ядре безопасность настолько ужесточается, что лет 7-8 назад разработчики Канона не могли предвидеть это. Драйверы-то и под 32 и под 64 есть.

А уж потом - различия в архитектурах.

Моя задача №1 чтобы принтер "хрюкнул" в 64 бит, а потом - понимание правильной печати.

И неважно, через какую задницу он будет печатать.

Я не могу сейчас "собрать" драйвера из исходников, т.к. на Линуксе у меня Интернет не работает (и над этим тружусь)

После загрузки сервис ccpd имеет ни одного дескриптора... как и в 32х

# service ccpd status
/usr/sbin/ccpd:
# service ccpd stop
Shutting down /usr/sbin/ccpd: .
# strace -o /home/alex_shkut/strace.log service ccpd start
Starting /usr/sbin/ccpd: .
alex-home alex_shkut # service ccpd status
/usr/sbin/ccpd: 4657 4656

Теперь их как положено - 2

strace зафиксировал все, начиная от запуска программы service до запуска /etc/init.d/ccpd

лог большой и выкладывать его не буду (пока).

Если будет что интересное - выложу частями.

"После загрузки сервис ccpd имеет ни одного дескриптора... как и в 32х"

Нет:

~$ service ccpd status
/usr/sbin/ccpd: 1468

или

pgrep ccpd

и то же самое.

После загрузки в 32-битных есть один обязательно. И только в LM 16 Petra, дай ей бог здоровья, их сразу два.

Где-то пропало мое сообщение, что я уже из Линукса работаю в Интернете (типа - сводки с фронта)

И нет разницы, он один, или процессов совсем нет - это одно и то-же для демона. Он работать не будет.

Я замолчал не потому, что забросил это дело, а потому, что решил скомпилировать все из исходных кодов. И теперь понемногу докачиваю необходимое и изучаю исходные коды на предмет устаревших вызовов. Так что "я в бою" и тему не закрыл smile

Если-бы Canon еще дал исходники ccpd - можно было-бы (достало бы-бы-бы) порихтовать и сам демон, но увы... - готовый "эльф" :(

Причина выяснена! Для точного описания еще надо добиться работы принтера.
Но! На данный момент при компиляции драйвера принтера вываливается ошибка, что функция проверки "переполнение стека" не найдена в библиотеке glib.

Такую же ошибку выдает и трассировка драйвера - модуль отсутствует.
Я нагуглил, что эта функция находится в определенном модуле библиотеки glib и демон ccpd этого модуля не видит. Я не успел подсунуть ему этот модуль и проверить результат.
Мои дальнейшие шаги:
Сделать видимой нужную библиотеку для компилятора.
Докомпилировать драйвер.
Убедиться, что принтер работает.
Переустановить "чистую" систему.
Установить драйвер из Каноновского пакета.
Убедиться, что он так и не работает.
Подсунуть ему нужную библиотеку.
Убедиться что драйвер заработал.
Спасти все уцелевшие принтеры от утилизации smile

Очень надеюсь, что Вам действительно удалось найти самое то. Надеюсь, но... не уверен. Потому что у меня далеко не одна и не две проги выдают жалобы на glib в stdout, если их запустить из терминала. Вот пример навскидку (включался gthumb посмотреть картинку):

(gthumb:14159): GLib-CRITICAL **: Source ID 156 was not found when attempting to remove it
(gthumb:14159): GLib-CRITICAL **: Source ID 159 was not found when attempting to remove it
(gthumb:14159): GLib-CRITICAL **: Source ID 165 was not found when attempting to remove it

Ну, и так далее, еще строк 10. Gthumb пищит, но работает.
Так что буду ждать результатов с большим интересом.

Раскопки показывают, что при переходе с GTK2 на GTK3+ было многое переработано в библиотеке glib и многие "старые" программы нужно переделывать под новый набор функций. Я тщательно не сравнивал наборы функций, но на конкретном примере это видно. В гугле встречалось еще несколько "исчезнувших" функций. Возможно, их упаковали в объекты.

В общем, продолжаю.

Скачиваю GTK 2.4.22 - именно он указан в документации. Canon для сборки драйвера.

Память-то подводит, а README - нет. Я несколько лет писал программы на Delphi 7, PHP так что малость понимаю, чего делаю. Попросту говоря, нужен so (dll smile) с правильным набором функций. Требования на сборку драйвера 2,60 Requirments:

============
 * aclocal (1.4.x or above)
 * automake (1.4.x or above)

 * aclocal (1.4.x or above)
 * automake (1.4.x or above)
 * Gtk+ (2.4.x or above) - в данном месте or above не прокатывает
 * libcups (1.1.17 or above)
 * libxml2 (2.6.x or above)
 * libglade2 (2.4.x or above)
Так вот нам нужна не GTK, а именно правильный libgmodule.2.0.so.0

3 раза компилировал glib2.20 - ИКСы падали и переставали запускаться полностью. Этот подход не получается. Начинают валиться массовые ошибки, наподобие тех, что у драйвера. Только теперь актуальные программы ругаются.

4-й раз сделаю по-другому. Сначала установлю MC коммандер. Потом скомпилирую glib и скопирую оттуда "мои" новые "старые" so-шки.

Попробую закинуть их в папку драйвера.

Или скомпилирую glib прямо в папку драйвера smile.

Александр38
2015-02-09 в 22:55:46

На 64-битной системе вот это помогло в такой же ситуации:

sudo apt-get install libglade2.0 libpopt0:i386 libxml2:i386 libjpeg62:i386 libstdc++6:i386

Взято отсюда:

http://forum.linuxmint.com/viewtopic.php?f=51&t=187658&p=974069

Александр, спасибо за коммент. Однако, должен сказать, все указанные библиотеки идут в Linux Mint 17.1 64-bit из коробки, – за исключением libjpeg62:i386. Так что топик на forum.linuxmint.com слегка удивляет.

Насколько принципиально значение libjpeg62:i386 – без понятия, поэтому заинтересованным юзерам, полагаю, ее лучше все-таки установить.

В MINT 17 x64 помогло это (указанный скрипт): http://help.ubuntu.ru/wiki/canon_capt#материалы_для_загрузки

В MINT 17 XFCE принтер LBP-1120 установил скриптом и командой "sudo bash canonLBP_install.sh LBP-1120"

(автор Radu Cotescu) из архива https://codeload.github.com/raducotescu/CanonCAPTdriver/legacy.tar.gz/master , модифицировал его: 1) убрал проверку версии libstdc++ 2) указал более новые версии DEB-файлов и 3) уточнил № USB порта (спасибо автору данной статьи за подсказку):

cndrvcups-common_2.20-1 => cndrvcups-common_3.20-1, cndrvcups-capt_2.20-1 => cndrvcups-capt_2.70-1

/dev/usb/lp0 => /dev/usb/lp1 . Свежие версии драйверов для Linux (32) брал на оф.сайте Canon :

http://www.canon.ru/support/consumer_products/products/printers/laser/laser_shot_lbp1120.aspx?type=drivers&language;=&os=Linux (32-bit) . DEB файлы скопировал в соответствующие подкаталоги скрипта canonLBP_install.sh.

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

Настроил LBP2900 в LM 17.3 Rosa MATE по вашей инструкции, дописав в /etc/rc.local пару строк:

while [ -z `/etc/init.d/ccpd status | awk '{print $3}'` ]

do

sleep 20

/etc/init.d/ccpd restart

sleep 10

done

Это имеет смысл, только я не совсем понял, зачем второй sleep.

Как-нибудь, когда загружусь в LM 17.2 Cinnamon, попробую применить эту мысль.

Ну а в LM 18 Cinnamon такой способ оживления, увы, уже не актуален. Systemd прет, хочешь того или нет, и на

service ccpd status

отвечает вот так:

● ccpd.service
   Loaded: loaded (/etc/init.d/ccpd; bad; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:systemd-sysv-generator(8)

Надо сказать, что принтер на LM 18 впервые на моей памяти не требует перезапуска демона. Хотя установка была та еще...

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

Комментарий будет опубликован после проверки

(обязательно)