今天终于把 HP LaserJet 1010 装在了 Fedora 14 上。
我从 Fedora 11 升级到 Feora 14 已有几周,但一直无法在 Fedora 14 下使用 HP LaserJet 1010 打印机。期间我一有空就想解决这个问题,直到今天才成功,好累。想当初在 Fedora 11 上安装这台打印机很顺利,我估计根本原因是 HP 驱动在 Fedora 14 上多少有点问题。回溯几个迂回的片段:
首先从 HP Linux imaging and printing 的网站上下载了 hplib 3.10.9,运行其中的 hplip-3.10.9.run,被提示没有 gcc。我用
yum install gcc gcc-devel
仍说没有 gcc。我只好再试
yum install gcc-c++
这下 gcc 这一关过去了,但仍缺少一堆依赖包,为了求简单,我没有细究我的系统是否需要,按 google 来的建议一股脑地装了很多 packages。
yum install cups libjpeg-turbo libjpeg-turbo-devel openssl-devel net-snmp-devel libusb-devel python-devel xsane sane-backends-devel dbus-devel libtool
这下 hplip-3.10.9.run 似乎成功运行完毕,在系统托盘上添加了 HP Device Manager 图标,也能看到 HP LaserJet 1010 打印机列在其中,但一打印,提示 cups-missing-filter。这种错误提示实在不知所云。想在 HP Device Manager 删了打印机再重装,竟然不让删。
有人说这是 system-config-printer 有问题,只有 cups web interface (http://localhost:631) 才正常。
我在 cups web interface 尝试去删除打印机,果然成功!得,以后就用 cups web interface 去管理打印机。但是,重装打印机并没有解决问题,一有打印任务就提示 cups-missing-filter。我在 cups web interface 里看到一个新的线索:找不到 /usr/lib/cups/filter/foomatic-rip-hplip。这大概是 cups-missing-filter 所谓的 missing filter 了。
我从 hplip-3.10.9.run 的安装目录/prnt/hpijs/ 里找到 foomatic-rip-hplip,拷贝到 /usr/lib/cups/filter/,这时打印不再提示 cups-missing-filter,但仍无法打印,在打印任务栏看到所有 print job 都是一打印 status 就成 stopped。
我没有继续以下尝试,而用重编译 hplib 的办法解决了问题。如果再来一遍,我会尝试
chmod 755 /usr/lib/cups/filter/foomatic-rip-hplip
因为我后来看到 /usr/lib/cups/filter/ 下的文件都是 755 属性。
重编译 hplib 是我在 Fedora 14 下安装 HP LaserJet 1010 打印机最精彩的部分,因为:
它是最终解决方案;
我不懂编译原理,只会依样画瓢,然后看到一大堆字符在终端里滚动,神秘的东西总是精彩的;
我曾想绕过问题在 Fedora 14 下安装另一台 HP LaserJet 1020 打印机,也未成功,说明 HP printer drivers 在 Fedora 14 普遍有问题,那么解决方案也是有普遍适用性。
言归正传。重编译 hplib 之前要先 uninstall hplib。
1. 以 root 身份进入 hplib 的安装目录
su - cd /path/to/hplip-3.10.9
2. 依次执行
make uninstall rm /usr/share/hplip -rf rm /etc/hp -rf rm ~/.hplip -rf rm /var/lib/hp -rf
很多的 rm -rf 哟,小心输入。
现在开始重编译 hplib。
3. 依次执行
make clean ./configure --prefix=/usr --enable-qt4 --enable-doc-build --disable-cups-ppd-install --disable-foomatic-drv-install --enable-foomatic-ppd-install --enable-hpijs-install --disable-policykit --disable-cups-drv-install --disable-hpcups-install --enable-network-build --enable-dbus-build --enable-scan-build --disable-fax-build --disable-foomatic-rip-install --enable-foomatic-rip-hplip-install make make install
在执行 ./configure 时会有一些 warning,大意是跟 foomatic 相关的 options not available。估计有些配置对 hplib 早期版本适用,而对 hplib 3.10.9 无效。Anyway, 这也能完成编译,编译后安装 HP LaserJet 1010 打印机就能打印了。我也想过偷懒,在 uninstall hplib 后不想重编译 hplib,直接在 cups web interface 里添加 HP LaserJet 1010 打印机,指望 cups 能认识一些主流打印机,但没有成功。
花费了这么多时间才安装一台打印机,我认为问题的源头最有可能是 hplip-3.10.9.run has some defects。如果再来一遍,我不再
sh hplip-3.10.9.run
而直接使用它解压出的文件。