Компиляция драйверов принтеров Canon (сборка DEB-пакетов под 64-битные системы)

Всё о принтерах, сканерах и многофункциональных устройствах. Подключение, настройка, проблемы.

Модератор: Модераторы разделов

Ответить
Lorte
Сообщения: 319

Компиляция драйверов принтеров Canon

Сообщение Lorte »

Прошу прощения, если данные советы уже попадались на этом форуме, но поиск вроде как ничего не дал.
Итак, есть драйверы принтеров Canon, состоящие из двух пакетов: cndrvcups-common и cndrvcups-capt, самую последнюю свежайшую версию 2.50 можно скачать с австралийского сайта Canon
Также имеются драйверы принтеров МФУ Canon, также состоящие из двух пакетов: cndrvcups-common и cndrvcups-ufr2-uk_2.50-1_i386.deb, последнюю версию 2.50 можно получить с того же сайта
В архивах идут пакеты RPM и DEB для 32-битных систем, а вот для 64-битных - только RPM. Под 64-битными DEB-системами даже не пытайтесь ничего мутить с библиотеками ia32-libs, ничего не выйдет!
Есть ещё одна тонкость: для готовых DEB-пакетов заявлена совместимость с системами Debian 3.1 - 5.0 (хотя на дворе уже скоро появится 7.0) и Ubuntu 7.04 - 11.04, хотя уже вроде как имеются версии 11.10, 12.04 и 12.10. И на некоторых форумах спрашивают, как завести эти принтеры на 64-битных системах.
Но есть один плюс: в комплекте с драйверами идут исходники каждого из пакетов, минус - их просто так не скомпилируешь даже под 32-битными системами (не говоря уже про 64 бита).

Теперь более подробно: как вы уже заметили, и для принтеров, и для МФУ-шек один пакет идёт общий - cndrvcups-common, и он прекрасно собирается в DEB-пакет из любой системы, но только для 64-битных систем в файле debian/control заменить i386 на amd64, и далее в корне каталога cndrvcups-common-2.50 дать команду dpkg-buildpackage -b -tc, ждём 5 минут, затем устанавливаем готовый пакет.
С другими пакетами сложнее: во время сборки они выдают ошибки.
Рассмотрим остальные пакеты.

Пакет драйвера для принтеров cndrvcups-capt во время компиляции будет выдавать ошибки на трёх этапах. На одном буржуйском сайте я вычитал рецепт исправления исходников. Итак, помимо исправления файла debian/control с i386 на amd64 нам надо сделать ещё телодвижения:
1) в файле debian/rules закомментировать строку dh_shlibdeps
2) в файл cngplp/configure.in добавить строку AC_CONFIG_MACRO_DIR([m4]) после AC_DEFINE(__FOR_CAPT__,, "define the capt printer macro")
3) в файл cngplp/Makefile.am добавить строку ACLOCAL_AMFLAGS=-I m4 после SUBDIRS=po cngplpmod controls files
4) в корне каталога cngplp выполнить последовательно команды: libtoolize, aclocal и automake
5) в файл statusui/src/ppapdata.c добавить строку #include <cups/ppd.h> после #include "cnsktmodule.h"
Теперь переходим в корень каталога cndrvcups-capt-2.50 и собираем пакет командой dpkg-buildpackage -b -tc. Драйвер вроде как собирается и даже прикидывается, что работает.

Теперь плавно переходим к драйверу МФУ-шек cndrvcups-ufr2-uk.
Для него первый шаг будет таким же, как и у предыдущего драйвера - в файле debian/rules закомментировать строку dh_shlibdeps
Но теперь я застрял в каталоге cpca/cnpklib, во время сборки пакета выдаётся ошибка:
Spoiler
make[4]: Entering directory `/home/user/CANON/cndrvcups-lb-2.50/cpca/cnpklib'
/bin/bash ../libtool --tag=CC --mode=link gcc -O2 -Wall -fPIC -D_UFR2_ -g -O2 -shared -version-info 1:0:0 -o libcnpkufr2.la -rpath /usr/lib cnpklib.lo cnpkopt.lo cnpkproc.lo -lbuftool
libtool: link: can not build a shared library
libtool: link: See the libtool documentation for more information.
libtool: link: Fatal configuration error.
make[4]: *** [libcnpkufr2.la] Ошибка 1

Как временное решение, можно поправить файл allgen.sh, расположенный в корне каталога cndrvcups-lb-2.50, удалив в 37-й строке ./autogen.sh --prefix=${_prefix} --enable-static --disable-shared параметр --disable-shared, и в результате на выходе мы получим сразу 3 пакета размером по 7,7МБ каждый: cndrvcups-lipslx, cndrvcups-ufr2-uk и cndrvcups-ufr2-us.
В общем я немного не догнал: вроде как в исходном debian/control действительно прописано 3 файла (и плюс четвёртый comon, скомпилированный ранее), но в исходном-то архиве в папке с 32-битными DEB-пакетами идут только 2 файла: cndrvcups-ufr2-uk и cndrvcups-common. В итоге списал на кривизну самих дров, типа "фирма Canon до сих пор кроме фотоаппаратов ничего нормального сделать не может, даже такую мелочь, как драйвера под Linux".

Если кто желает, может использовать советы выше для сборки DEB-пакетов под 64-битные системы, если кто-то может предложить более элегантные способы, то предлагайте.
Спасибо сказали:
PVOzerski
Сообщения: 297
ОС: OpenSUSE, ALT Linux

Re: Компиляция драйверов принтеров Canon

Сообщение PVOzerski »

Программку под названием alien не пробовали? Это перепаковщик пакетов из одних форматов в другие, если что.
Спасибо сказали:
Lorte
Сообщения: 319

Re: Компиляция драйверов принтеров Canon

Сообщение Lorte »

PVOzerski писал(а):
15.01.2013 12:53
Программку под названием alien не пробовали? Это перепаковщик пакетов из одних форматов в другие, если что.

А как Вы считаете: стал бы я так напрягаться, тратить своё время и писать эту инструкцию, если бы не попробовал alien? И не было бы всё так просто, кабы не было так сложно.
Спасибо сказали:
Ответить