09 September 2012

NEC MultiWriter PR-L5100をUbuntu Linuxで使う

以前の記事『レーザープリンター MultiWriter 5100購入』でUbuntuでの利用を試したが、ドライバが存在しないため諦めていた。

(VMWareでWindows 2000を走らせてしのいでいた)

たまたま、米国Xeroxのウエブページを見ていたところ、似たようなプリンタが見つかったので、試しにドライバを無理やりインストールしてみたら、成功。

互換性があると思われるプリンタ

Xerox Phaser 3040

Ubuntu 12.04 32bit版の場合

Ubuntu12.04にインストールしたドライバ(debパッケージ)

Phaser 3010 / 3040 Linux Package - DEB Package

ドライバのdebパッケージを dpkg -i xerox-phaser-3010-3040_1.0-28_i386.deb のようにインストールした後に、CUPSのWeb管理画面 http://localhost:631 にアクセスして、「管理」メニューの「プリンターの追加」からプリンタを追加するだけ。

その時に、ドライバとして強制的にXerox Phaser 3040を指定する

テストプリントした用紙は次のようになっている。

20120909-pr-l5100-print.jpg

Driver : XRP3040.PPD
Description : NEC MultiWriter 5100
Driver Version : NEC MultiWriter 5100
Make and Model : Xerox Phaser 3040 v1.0

つまり、このプリンタはXerox製で、NECやエプソンはOEMで販売してるだけということなのだろう。

海外では公開されているような情報を小出しにしたり、隠蔽したり、最近の日本のメーカーはダメやね。 グローバル市場で売れない理由は、多分そのあたりにあると思う。

Ubuntu 14.04 64bit版の場合

Xeroxは32bit版のドライバしか配布していないため、32bit版ドライバを次のように強制インストールしてみた。

$ sudo dpkg --force-all -i xerox-phaser-3010-3040_1.0-28_i386.deb

ドライバをインストール後、CUPSの管理画面でプリンタを追加し状況を観察すると、"Filter failed"というエラーが出て停止する。

dpkgインストール時に--force-allを付けない場合、次のような依存関係来ぶらりが無い旨を知らせていたので、それらのi386版ライブラリを強制インストールしないといけないのだろう。

$ sudo dpkg -i xerox-phaser-3010-3040_1.0-28_i386.deb 
Preparing to unpack xerox-phaser-3010-3040_1.0-28_i386.deb ...
Unpacking xerox-phaser-3010-3040 (1.0-28) ...
dpkg: 依存関係の問題により xerox-phaser-3010-3040 の設定ができません:
 xerox-phaser-3010-3040 は以下に依存 (depends) します: libc6 (>= 2.3.2).
 xerox-phaser-3010-3040 は以下に依存 (depends) します: libcups2 (>= 1.2.7) | libcupsys2 (> = 1.2.7) | libcupsys2-gnutls10 (>= 1.1.23-1).
 
dpkg: error processing package xerox-phaser-3010-3040 (--install):
 依存関係の問題 - 設定を見送ります
処理中にエラーが発生しました:
 xerox-phaser-3010-3040

インターネット上を検索してみると、Ubuntu 10.04まで配布されていたia32-libsというパッケージをインストールすれば何とかなるようだが、あいにく、Ubuntu 12.04以降はパッケージが削除されてしまった。

参考にしたのは、ここ → "Filter failed" printer error - Xerox Phaser 3010 on Ubuntu/Kubuntu 12.10

リポジトリに過去のパッケージ配布サイトを登録して、強制インストールしてみる。まずは、リポジトリの登録

/etc/apt/sources.list.d/old-releases-ubuntu-com.list
deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse

その後、コマンドラインより次のようにしてインストール。インストールされるファイルは、なんと277MBytesと特大サイズ。

$ sudo apt-get update
$ sudo apt-get install ia32-libs

この処理で、プリンタはなんの問題もなく印刷できるようになった。ただ、古いライブラリ類を大量にインストールしたわけで、このパッケージが消された理由がわからない以上、システムが不安定になる可能性も…

Ubuntu 15.10 64bit版で再挑戦

無理やり過去バージョンのia32-libsを強制インストールするのではなく、エラーメッセージを一つずつ潰していく手法を取ってみる。

まずは、Xerox社Phaser 3010 / 3040用プリンタドライバのインストールから。

$ sudo dpkg -i xerox-phaser-3010-3040_1.0-28_i386.deb 
以前に未選択のパッケージ xerox-phaser-3010-3040:i386 を選択しています。
(データベースを読み込んでいます ... 現在 217273 個のファイルとディレクトリがインストールされています。)
xerox-phaser-3010-3040_1.0-28_i386.deb を展開する準備をしています ...
xerox-phaser-3010-3040:i386 (1.0-28) を展開しています...
dpkg: 依存関係の問題により xerox-phaser-3010-3040:i386 の設定ができません:
 xerox-phaser-3010-3040:i386 は以下に依存 (depends) します: libc6 (>= 2.3.2).
 xerox-phaser-3010-3040:i386 は以下に依存 (depends) します: libcups2 (>= 1.2.7) | libcupsys2 (>= 1.2.7) | libcupsys2-gnutls10 (>= 1.1.23-1).
 
dpkg: パッケージ xerox-phaser-3010-3040:i386 の処理中にエラーが発生しました (--install):
 依存関係の問題 - 設定を見送ります
処理中にエラーが発生しました:
 xerox-phaser-3010-3040:i386

足りないと表示されているi386用ライブラリをインストールする

$ sudo apt-get install libc6:i386
   …
以下のパッケージが新たにインストールされます:
  gcc-5-base:i386 libc6:i386 libgcc1:i386
アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 0 個。
4,157 kB のアーカイブを取得する必要があります。
この操作後に追加で 9,844 kB のディスク容量が消費されます。
 …
 
$ sudo apt-get install libcups2:i386
 …
以下のパッケージが新たにインストールされます:
  libavahi-client3:i386 libavahi-common-data:i386 libavahi-common3:i386
  libcomerr2:i386 libcups2:i386 libdbus-1-3:i386 libffi6:i386 libgcrypt20:i386
  libgmp10:i386 libgnutls-deb0-28:i386 libgpg-error0:i386
  libgssapi-krb5-2:i386 libhogweed4:i386 libk5crypto3:i386 libkeyutils1:i386
  libkrb5-3:i386 libkrb5support0:i386 liblzma5:i386 libnettle6:i386
  libp11-kit0:i386 libsystemd0:i386 libtasn1-6:i386 zlib1g:i386
アップグレード: 0 個、新規インストール: 23 個、削除: 0 個、保留: 0 個。
2,977 kB のアーカイブを取得する必要があります。
この操作後に追加で 9,281 kB のディスク容量が消費されます。
 …

その後、プリンタドライバを再インストールすると正常にインストールされる

$ sudo dpkg -i xerox-phaser-3010-3040_1.0-28_i386.deb 
以前に未選択のパッケージ xerox-phaser-3010-3040:i386 を選択しています。
(データベースを読み込んでいます ... 現在 217683 個のファイルとディレクトリがインストールされています。)
xerox-phaser-3010-3040_1.0-28_i386.deb を展開する準備をしています ...
xerox-phaser-3010-3040:i386 (1.0-28) を展開しています...
xerox-phaser-3010-3040:i386 (1.0-28) を設定しています ...
[ ok ] Restarting cups (via systemctl): cups.service.

CUPSのWeb管理画面 http://localhost:631 にアクセスして、「管理」メニューの「プリンターの追加」からプリンタを追加する。追加条件は次の通り

20160130-cups-multiwriter5100.jpg

CUPSでプリンタ追加後、テスト印刷するとエラーが出るので一つずつ潰していく。

/var/log/cups/error_log
D [30/Jan/2016:20:24:10 +0900] [Job 7] NEC_MultiWriter_5100: error while loading shared libraries: libcupsimage.so.2: cannot open shared object file: No such file or directory
 
 …
 
E [30/Jan/2016:20:33:27 +0900] [Job 8] /usr/lib/xrhr3acl.so: cannot open shared object file: No such file or directory
E [30/Jan/2016:20:33:28 +0900] [Job 8] Unable to open raster stream - : Broken pipe
 
 …
 
E [30/Jan/2016:20:40:50 +0900] [Job 9] libstdc++.so.6: cannot open shared object file: No such file or directory
E [30/Jan/2016:20:40:51 +0900] [Job 9] Unable to open raster stream - : Broken pipe

これらのエラーに対して、次のように対処。なお、xrhr3acl.soは同じディレクトリにあるxrhr1acl.soにシンボリックリンクを作ってやればそれで良いようだ。

$ sudo apt-get install libcupsimage2:i386
 
$ sudo ln -s /usr/lib/xrhr1acl.so /usr/lib/xrhr3acl.so
 
$ sudo apt-get install libstdc++6:i386