web-dev-qa-db-ja.com

Canon LBPプリンターをUbuntu 14.04で実行できない

Linux CAPTドライバーV2.60をCanonからダウンロードし、Ubuntu Software-Centerの64ビットフォルダーの下にリストされている両方の.debパッケージをインストールしました。 Canonプリンターはまだ認識されません。他に何かしなければならないことはありますか?プリンターがUSBで接続されています。

Ubuntuは私のオフィスにとって素晴らしい代替品になりますが、残念ながらプリンタのサポートがなければ、私はまだWindowsに依存しています。

enter image description here

16
empedokles

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ビットのドライバーをインストールします。

  • 32ビット

    dpkg -i Linux_CAPT_PrinterDriver_V260_uk_EN/32-bit_Driver/Debian/*.deb
    
  • 64ビット

    dpkg -i Linux_CAPT_PrinterDriver_V260_uk_EN/64-bit_Driver/Debian/*.deb
    

/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)"

この場合、モデルLBP6000に一致するCNCUPSLBP6018CAPTS.ppdを選択しました。

プリンターを追加します。

# 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には、一部のシステムでエラーaborted *** buffer overflow detected ***で失敗するcnsktmodule.cのstrcpyへの無制限の呼び出しが含まれています

  • Canonプリンタードライバーは、実際にはローカルソケットまたはネットワークソケットを介してカップと通信する別個のデーモンです。システムのネットワークポートを開いたままにし、Canonコードがセキュリティの脆弱性について監査されたことはないと思います

  • プリンターはカップに2回表示されます(自動検出されたUSBプリンターの場合は1回、Canon CCPDデーモンとして1回)が、「USB」プリンターは印刷しようとすると機能しません。プリンター設定で、プリンターがUSBプリンターとして構成されている場合は、手動で無効にする必要があります(右クリックして無効にする)

  • キヤノンは、プリンターとの通信に独自の独自のソフトウェアとプロトコルを使用しているため、カップと統合されておらず、自動的に検出されず、ドライバーを手動でインストールする必要があります。プリンターが自動的に検出されて動作することを期待するのは合理的ですが、Canon LBPではこれは不可能です。私の次のプリンターは、オープンソースドライバーで「機能する」プリンター、おそらく PCL-プリンターコマンド言語 標準をサポートするネットワークプリンターで、 Brother HL-2250DN =(安価な両面ネットワークプリンター、以前はAmazonのトップセールスレーザープリンター)、または HP Linux推奨プリンター オープンソースで動作します HPLIP ソフトウェア。

  • ソースコードのビルドスクリプトは古く、少し混乱しています。クローズドソースのi386バイナリライブラリが含まれており、ビルドスクリプトでマルチアーキテクチャがサポートされていないため、完全に機能する64ビットリリースをコンパイルするのは非常に困難です。ビルドシステムのさまざまなバグを回避したら、32ビットシステムで32ビットリリースをコンパイルできます。


問題:ccpdがハングする

時々ccpdがハングし、キューに「Processing since ...」と表示されることがあります

手動で再起動してください:

pkill -9 -x ccpd
pkill -9 -x captmoncnabc
/etc/init.d/ccpd start
/etc/init.d/ccpd status

問題:ccpdが機能しない-システムの起動後に実行されるccpdプロセスが1つだけである

通常の操作では、2つのccpdプロセスがシステムで実行されている必要があります。 ccpdデーモンは、2番目のプロセスをフォークする前にcupsデーモンを実行することに依存しています。次の方法を使用して、問題を回避できます。

  1. Cups initスクリプトを有効にします(update-rc.d cupsのデフォルト)。

  2. Cups init(update-rc.d ccpdデフォルト99)の後に実行するようにccpd initスクリプトに指示するか、/ etc/rc.localスクリプトに「sleep 10 && /etc/init.d/ccpd start」を追加します。

UDEVルールと起動スクリプトを使用する場合は、CUPS initスクリプトの前にUDEVルールが実行されることに注意してください。そのため、単に起動するのではなく、ccpd initスクリプトを再起動すると便利です。たとえば、「/ etc/rc.local」に次の文字列を配置できます。

sleep 10 && /etc/init.d/ccpd restart

buntu wiki からの解決策)


キヤノンのサポートにバグと問題を報告する

キヤノンには、ドライバーのバグや問題を報告するための公式メールアドレスがあります。

[email protected]

ソースからビルド

ソースからビルドとインストールを試みたい場合は、次の手順に従ってください( Arch build script も役立ちます)。

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ライブラリが含まれます。

13
bain