昨天遇见了一个奇特的问题,一个VP的新机器,他跟我说他无法打印,打印操作完了之后,打印机不打印,打印机现实一下之后消失,看上去很正常,机器也没有任何的错误信息,犹如石沉大海。一般情况下,这个问题很好解决,无非是删除后重新安装一遍,可是这个案例却非同一般。可以想见那个直接简单的方法不管用;再试:使用不同的协议安装(Bonjour, ipp, lpd, Socket等等),无济于事;修复磁盘权限和重置打印系统(在Print&Fax of System Preference里)吧,问题依旧;在CUPS的网页管理界面中配置,也没有任何进展。
这时已经过去了1个小时左右,AP耐不住性子,问我是否可以使用它的laptop,我说:啊,对了,刚才忙,还没有时间仔细检查,你先拿回去,等有空了,再拿回来。把身边的笔记本合上盖子,递给他,很轻松的样子,好让他感觉这个问题会很快解决。他匆忙地离开后,我这心里老是想着这档子事。到了下午,他回来说:这是你的了,我整个下午都出去。我一看都2点了,我只有最多2个小时的时间,同时我还有软件更新需要做和面对其它的突然事件,我可不想为他这个"小问题"加班,最好尽快搞定,要不然"丢面子"啊。
根据前期的工作,初步判定很可能是CUPS系统本身组建/程序的问题,CUPS是OS X系统打印系统的核心和基础,它是随OS X系统来的,网上也几乎没有更新安装包可供使用(cups.org上面有有关的包,可是它说We are no longer providing binaries for Mac OS X since newer releases ofCUPS are not generally compatible with prior releases of Mac OS X.),其实即便有,也不敢用。我也确实不想重新镜像整个系统,因为AP刚刚拿到机器1个星期,拿走前和他一起做了一些特制工作,同时给了他admin权限,他把数据都移动到新机器上了,再做一次数据转移?我可真的不愿意这样做,那是不得已而为之的事。
仔细检查cups的logs,在/var/log/cups/error_log中可以看到一句类似的“/usr/libexec/cups/backend/ipp failed”或者“/usr/libexec/cups/backend/dnssd failed”等的错误信息,这个信息根据打印机使用的不同协议有所不同。这种问题在网上有一些,有的说是打印机被Paused了产生的,有一个是针对10.6.x的解决方案,而其它的是根本没有被解决的问题,这些都和本次的没有太大的关系。
既然是backend中的问题,那么就来看看里面的内容。最初我看到的dnssd/http/ipp/lpd/smb/socket等都是文件,文件大小都是37,经过连个磁盘权限修复后,变成了下面图的样子,也就是他们都是指向pa6hook的连接。
而原OSX系统是这个样子吗?对比另外一台机器的,如下图(注意,其中的用户权限显示的不对.),显然有问题
![](https://img-my.csdn.net/uploads/201301/18/1358450435_3742.png)
原系统中都不再是连接了,其实那些连接都是在10.7.2(我有的版本)及之前的版本中的,新版不是了,都是直接把该协议的程序直接复制在这里。而且,每个协议程序文件的大小也不对了。不知道,该VP安装了什么东东,把这个给改了。
恢复很简单,不过要注意把cups服务给停了,复制后立刻启动系统。
还好,一个棘手的问题解决了,可以放心回家给孩子做饭去了。
另:上面是10.7.4的图,10.8.2的如下图的样子: