現行の Ubuntu 16.04LTS に、ちょっと昔のプリンタドライバをインストールしようとしたら「依存関係が満たされないのでインストールできない。libtiff4 が必要です」と言われてしまった。
ちなみにインストールしたいドライバは CANON の MG6230 用。
CANON公式サイトのソフトウェアダウンロードページからリンクを辿っていくと入手できます。
CANON公式サイトのソフトウェアダウンロードページからリンクを辿っていくと入手できます。
16.04 では libtiff4 パッケージは既に無くて、その代わりに新しい libtiff5 が用意されています。
別にこっちでも大丈夫なんじゃないの? debパッケージのファイル依存関係を編集すれば、とりあえずインストールはできるのではないか、と(根拠もなしに)考えて、さて、シンプルな方法はないものか、と情報収集。
すると、なんとも素敵なシェルスクリプトを発見。
→ HOWTO: Easily modify dependencies of a .deb file - Ubuntu forums
ちょっと使いづらかったので、自家用に改変したものが以下。
#!/bin/bash # edit_dependency.sh # May 27, 2017 # original : https://ubuntuforums.org/showthread.php?t=636724 by motin # mod : tyz@freefielder.jp if [[ -z "$1" ]]; then echo "Syntax: $0 debfile" exit 1 fi DEBFILE="$1" TMPDIR=`mktemp -d /tmp/deb.XXXXXXXXXX` || exit 1 OUTPUT="${DEBFILE%.deb}".mod.deb if [[ -e "$OUTPUT" ]]; then echo "$OUTPUT exists." rm -r "$TMPDIR" exit 1 fi dpkg-deb -x "$DEBFILE" "$TMPDIR" dpkg-deb --control "$DEBFILE" "$TMPDIR"/DEBIAN if [[ ! -e "$TMPDIR"/DEBIAN/control ]]; then echo DEBIAN/control not found. rm -r "$TMPDIR" exit 1 fi CONTROL="$TMPDIR"/DEBIAN/control MOD=`stat -c "%y" "$CONTROL"` nano "$CONTROL" if [[ "$MOD" == `stat -c "%y" "$CONTROL"` ]]; then echo Not modfied. else echo Building new deb... dpkg -b "$TMPDIR" "$OUTPUT" fi rm -r "$TMPDIR"
改変した部分は…
- 修正後の .deb ファイルの出力先を、オリジナルと同じ場所に変更。
- 編集に用いるテキストエディタを vi から nano に変更。
使いかたは以下のとおり。
- 適当な場所に、上記の内容で edit_dependency.sh を作成。またはこちらからダウンロードして展開。
- ターミナルを開いて、edit_dependency.sh に実行権限を付加。
chmod +x edit_dependency.sh
- 編集したい deb ファイルを引数にして実行。
./edit_dependency.sh path_to_deb_file/example.deb
- テキストエディタ(nano)が開くので、適宜変更して終了(Ctrl + x)・保存( y -> Enter )。
- example.deb と同じディレクトリに example.mod.deb が作成される。
という感じで、プリンタドライバの .deb パッケージファイルを編集して依存関係を改変してみます。
Depends セクションの libtiff4 の記述を削除、または libtiff5 に書き換えて保存。
で、依存情報を書き換えたパッケージを手動でインストール。無事成功。
更に、インストールしたドライバが libtiff4 のライブラリを参照したときに libtiff5 を読みにゆくようにシンボリックリンクを作成。
sudo ln -s /usr/lib/x86_64-linux-gnu/libtiff.so.5 /usr/lib/x86_64-linux-gnu/libtiff.so.4
…と、これで 動いてくれるのではないかな…。
テスト印刷してみると、見事、Canon 純正のドライバでプリントアウトできました。
一件落着。
ま、こんな面倒な作業をしなくても、Ubuntu の汎用プリンタドライバで普通に印刷できるのだけれど。
コメント