Debian 13へのEPSON GT-S600のデバイスドライバーのインストールに失敗
Debian GNU/Linux 13 (trixie)でEPSON GT-S600というスキャナーを動作させるには次のウェブ・ページからdebパッケージになったデバイス・ドライバーをダウンロードしてインストールする必要がある。
そこの検索フォームに製品名としてGT-S600を入力し、OSとしてLinuxを選んで検索すると1件のヒットがある。その「ダウンロード』ボタンをクリックした後、ダウンロードする前に「エプソンのソフトウエア使用許諾契約」に同意する必要がある。
debパッケージの他にrpmパッケージとデバイス・ドライバーのソース・コードとインストール方法などが記されたPDFファイルも用意されている。アーキテクチャは32ビットと64ビットのどちらも選ぶことができる。
debパッケージとrpmパッケージとソース・コードはtar形式に書庫化された上でgzip形式で圧縮されている。そのため、拡張子がtar.gzとある。
tar.gzファイルを伸長(解凍)するにはLinux OSではtarコマンドを利用することができる。
$ tar -xzvf iscan-gt-s600-bundle-2.30.4.x64.deb.tar
tarコマンドのオプションについて説明すると、-xは書庫からファイルを取り出すための--extractか--getを意味し、-zはgzip形式の圧縮ファイルを伸長するための--gzipか--gunzipか--ungzipを意味し、-vは処理されたファイルを詳細にリストするための--verboseを意味する。
圧縮された書庫ファイルが伸長されて中のファイルが取り出されるとそのファイル名からtar.gzを覗いた名前のディレクトリー(フォルダー)が出力される。そのディレクトリーの中にinstall.shというシェル・スクリプトのファイルがあるので、これを実行するとインストールが開始される。
$ su # ./install.sh
しかし、Debian GNU/Linux 13 (trixie)では依存関係にあるlibsaneが見つからず、次のようなエラー・メッセージを吐いてインストールに失敗してしまった。
E: Unable to locate package libsane
この問題の原因はどうやらライブラリーの1つであるかつてのlibsaneが現在ではlibsane1へと変更されたことにあるようだ。Debian 12 (bookworm)までは移行用のdebパッケージとしてlibsaneが残っていたが、Debian 13からは公式のリポジトリには存在していない。
シェル・スクリプトのインストーラーに頼らず、debパッケージをdpkgコマンドを利用して直接インストールすることにした。3つのdebパッケージをそれぞれインストールする必要があり、それらは次のような順番でインストールする必要がある。
# dpkg -i iscan-data_1.39.2-1_all.deb # dpkg -i iscan_2.30.4-2_amd64.deb # dpkg -i iscan-plugin-gt-s600_2.1.3-1_amd64.deb
2つめのdebパッケージのインストールでやはり同じエラーが生じてしまった。そこで、依存関係を無視させて強制的にインストールする--force-dependsオプションを付けてインストールしてみた。
# dpkg -i --force-depends iscan_2.30.4-2_amd64.deb
これでデバイス・ドライバーはインストールされ、エプソンのスキャナーをLinux OSが認識してくれるようになった。
ところがその結果、壊れたパッケージがあるとAPTが警告してくるようになった。Debianのマニュアルによれば--force-dependsを使うことは極力避けるべき乱暴な手段であるようだ。パッケージ管理システムのデータベースに不整合が生じてしまったら面倒なことになる。
この問題を回避する他の方法があるのか、インターネット上を探してみた。いくつか見つかったが、それらの多くもやや離れ業のように思われた。
見つかった解決法の中でもっとも合理的で正当だと思われたのがdebパッケージを再編集してビルドし直すこと。その方法に挑戦してみたらうまく行ったので、この投稿ではその手順を示したいと思う。
ここでやることは、dpkg-debと呼ばれているDebianパッケージ・アーカイブの操作ツールを使い、問題のあるiscan_2.30.4-2_amd64.debというdebパッケージから中身を取り出し、依存関係に関する設定を修正した上でdpkgコマンドを使ってdebパッケージを再構築すること。これはそれほど難しくなかった。
- ターミナル・エミュレーターを起動してcdコマンドでiscan_2.30.4-2_amd64.debがあるディレクトリに移動する。
- dpkg-debコマンドに-Rというオプションを付けてdebパッケージ名と任意の名前の作業ディレクトリー名を引数として渡してそのdebパッケージの中身を取り出す。
$ dpkg-deb -R iscan_2.30.4-2_amd64.deb debtemp
- debtempディレクトリー下のDEBIANディレクトリー内にcontrolというテキスト・ファイルがあるはずなので、そのディレクトリーに移動し、編集するためにテキスト・エディター(nanoやvimやMousepadなど)でそのテキスト・ファイルを開く。
$ cd debtemp/DEBIAN nano control
- Depends:という項目の中にlibsaneが見つかったら、その名前をlibsane1に書き換える。書き換えたら保存してテキスト・エディターを終了する。
Depends:(中略), libsane1 (>= 1.0.11-3),...
- 元のディレクトリに戻る。
cd ../..
- dpkg-debコマンドに-bというオプションを付け、作業ディレクトリdebtempとiscan_2.30.4-2_amd64.debを引数として渡して実行し、debパッケージを再構築する。
$ dpkg-deb -b debtemp iscan_2.30.4-2_amd64.deb dpkg-deb: building package 'iscan' in 'iscan_2.30.4-2_amd64.deb'.
- debtempディレクトリーとそれ以下を丸ごと削除するために-rオプションを付けてrmコマンドを実行する。
$ rm -r debtemp
- coreディレクトリーの上のディレクトリーに移動し、suコマンドでスーパーユーザー権限を得るかsudoコマンドとともにシェル・スクリプトのinstall.shを実行し、デバイス・ドライバーをインストールする。
$ cd .. $ su # ./install.sh
$ cd iscan-gt-s600-bundle-2.30.4.x64.deb/core
作業ディレクトリーとして作ったdebtempを削除しておかないとinstall.shがうまく機能しないことに要注意。
デバイス・ドライバーのインストールが無事に完了したら、スキャナーがパソコンに接続されて電源が入っている状態でXSaneを起動する。インストールに成功していればスキャナーが検出されてXSaneが起動するはず。
コメント
コメントを投稿