我购买了 Lexmar Impact S305 扫描仪/打印机。盒子上有小企鹅和支持系统中的“Linux”字样。问题是官方驱动程序仅适用于基于 Debian 和基于 RPM 的发行版。我还没有找到非官方驱动程序。
有图形安装程序。它无法赢得我的发行版(Arch Linux),但是我已经将它安装在带有 Mint Debian 的虚拟机上并且打印机可以在那里工作。我也从安装程序中提取了一些文件(so、ppd、bin)。
我的问题。
设置打印机需要什么?看来仅靠 ppd 是不够的。
更新 08-03-2011
我已经从 deb 文件中提取了脚本。有 3 个文件:control、postinst (17k) 和 prerm (4,2k)。
# ./postinst
Executing postin scripts ...
./postinst: line 73: [: ==: unary operator expected
sudo: unknown user: /usr/local/lexmark/legacy/bin/.scripts/demon
sudo: unable to initialize policy plugin
我进入一个新的外壳。
sh-4.2# exit
exit
cp: cannot stat `/usr/local/lexmark/legacy/etc/lxS800.ppd': No such file or directory
cp: cannot stat `/usr/local/lexmark/legacy/etc/lxS800.ppd': No such file or directory
这就是结束。
更新 13-03-2011
第70-82行内容:
#run device monitor
#TODO: investigate other ways to run daemon
#/bin/sh ${script}
if [ $username == "root" ]; then
#/bin/sh /usr/local/lexmark/legacy/bin/.scripts/demon
/bin/sh $script
else
sudo -u $username /usr/local/lexmark/legacy/bin/.scripts/demon
if [ $? -ne 0 ]; then
#/bin/sh /usr/local/lexmark/legacy/bin/.scripts/demon
/bin/sh $script
fi
fi;
答案1
如果您发布所有涉及的脚本将会有所帮助,但我会冒险猜测一下。这些是 bash 脚本,但它们是由 运行的/bin/sh
,在您的系统上,它是 dash 而不是 bash。将#!/bin/sh
脚本顶部的任意行更改为#!/bin/bash
,并将显式调用更改为/bin/sh
into /bin/bash
。
第 73 行错误的直接来源是$username
未设置,因此该[
命令看到操作数==
and root
(加上最后的]
)。这是一个语法错误。如果不查看更多脚本,就不可能知道为什么没有设置该变量。
(请注意,您在帖子中包含的脚本的一小段摘录表明作者没有太多编写 unix shell 脚本的经验。从我在其他地方看到的情况来看,这通常适用于驱动程序的其余部分Linux 发行版中提供的开源驱动程序的质量往往比制造商提供的驱动程序要好得多,不幸的是,您似乎别无选择。)
答案2
查看 DEB 文件内部,然后导航到 DEBIAN 目录。在那里,您将了解 dpkg 在安装软件包时会执行哪些操作,并尝试手动复制这些步骤。他们是外壳脚本。