ブログの説明

学校に通わないで学んだことを記しています。間違っているところが何かありましたらご指摘下さると幸いです。コメントに対する返信が遅れる可能性があります。その場合は申し訳ありません。

このブログではサイドバーに広告を表示しています。このブログ内の投稿記事を検索するには右上の拡大鏡のアイコンを、アーカイブやラベル付けから投稿記事を閲覧するには左上の三重線のアイコンをクリックして下さい。

数式の表示にはMathJaxを利用させていただいています。数式の表示のためにJavaScriptが有効である必要があります。そうでない場合、訳の分からないLatexのコードが表示されます。幾何学図形やチャートの表示にはHTML5 CanvasやGoogle Chartを使用しています。その表示のためにもJavaScriptが有効である必要があります。

Debian 13へのEPSON GT-S600のデバイスドライバーのインストールに失敗

Debian GNU/Linux 13 (Trixie)でEPSON GT-S600というスキャナーを動作させるには次のウェブ・ページからdebパッケージになったデバイス・ドライバーをダウンロードしてインストールする必要がある。

  1. EPSONドライバーダウンロード

そこの検索フォームに製品名として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パッケージを再構築すること。これはそれほど難しくなかった。

  1. ターミナル・エミュレーターを起動してcdコマンドでiscan_2.30.4-2_amd64.debがあるディレクトリに移動する。
  2. $ cd iscan-gt-s600-bundle-2.30.4.x64.deb/core
  3. dpkg-debコマンドに-Rというオプションを付けてdebパッケージ名と任意の名前の作業ディレクトリー名を引数として渡してそのdebパッケージの中身を取り出す。
    $ dpkg-deb -R iscan_2.30.4-2_amd64.deb debtemp
  4. debtempディレクトリー下のDEBIANディレクトリー内にcontrolというテキスト・ファイルがあるはずなので、そのディレクトリーに移動し、編集するためにテキスト・エディター(nanoやvimやMousepadなど)でそのテキスト・ファイルを開く。
    $ cd debtemp/DEBIAN
    nano control
  5. Depends:という項目の中にlibsaneが見つかったら、その名前をlibsane1に書き換える。書き換えたら保存してテキスト・エディターを終了する。
    Depends:(中略), libsane1 (>= 1.0.11-3),...
  6. 元のディレクトリに戻る。
    cd ../..
  7. 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'.
  8. debtempディレクトリーとそれ以下を丸ごと削除するために-rオプションを付けてrmコマンドを実行する。
    $ rm -r debtemp
  9. coreディレクトリーの上のディレクトリーに移動し、suコマンドでスーパーユーザー権限を得るかsudoコマンドとともにシェル・スクリプトのinstall.shを実行し、デバイス・ドライバーをインストールする。
    $ cd ..
    $ su
    # ./install.sh

作業ディレクトリーとして作ったdebtempを削除しておかないとinstall.shがうまく機能しないことに要注意。

デバイス・ドライバーのインストールが無事に完了したら、スキャナーがパソコンに接続されて電源が入っている状態でXSaneを起動する。インストールに成功していればスキャナーが検出されてXSaneが起動するはず。

コメント

このブログの人気の投稿

LATEXで数式:指数と順列などで使う添数・添字

10の補数と9の補数と2の補数と1の補数

Visual Studio 2019にはC++のためのフォームデザイナーがない件