首页 > 系统相关 >Linux打印服务-CUPS的安装、配置和使用

Linux打印服务-CUPS的安装、配置和使用

时间:2023-08-08 13:55:40浏览次数:48  
标签:... 打印机 GhostScript 打印服务 PostScript Linux CUPS 安装

原文:https://blog.csdn.net/limelove/article/details/121988838

 

CUPS(Common UNIX Printing System,即通用Unix打印系统)是苹果公司所有,一个打印集成服务。包括了前端接收打印命令的相关程序,后端控制打印机硬件的程序,中间则是打印驱动。首先来看看CUPS驱动打印机的方式。这里要说明的是所谓驱动,其实是一系列的程序加定义文件的总和,不像我们有时候想像的那样是一个很简单的单一文件。当CUPS接受到打印命令时,首先会进行一个格式的预转换,将如.jpg等各种文件先转换成PostScript格式。然后进一步将PostScript格式转换成 CUPS内部格式,这个称为PostScript到PostScript转换,这两种PostScript格式还是有差别的,当然大家可以不必深究(我也没好好看,只是知道在MIME中定义了这两种不同的PostScript)。
    以上这些都是预处理工作,接下来CUPS的工作围绕PostScript展开,CUPS会根据PPD(PostScript Printer Description 文件)文件来选择相应的处理流程。PPD文件其实是驱动的核心,不同的打印机有不同的PPD文件,PPD 包含有关输出设备的信息,CUPS使用 PPD 文件中的信息来确定在打印文档时向打印机发送哪些 PostScript 信息。需要说明的是,CUPS实际上把所有打印机都“看成”PostScript打印机,即便打印机本身不支持PostScript,也可以通过CUPS 自带的PostScript解释程序(pstoraster)或者GhostScript来解释PostScript文件,从而把普通的打印机模拟成 PostScript打印机。(一般的打印机并不能识别PostScript格式的信息,所以在使用过程中我们还需要安装一类解释性的驱动,让CUPS能通过这类驱动将信息转换成一般打印机能识别的信息。)可以分为三种,第一种就是接正在的 PostScript打印机的,而后面两种就是分别用CUPS的pstoraster或GhostScript来解释PostScript,虚拟出一台 PostScript打印机。三种工作方式能够分别支持不同的打印机(这也是CUPS兼容性非常好的原因):
    第一种,直接传输PostScript文件给CUPS的后台,再将打印流传输到PostScript打印机,接下来的事情全部丢给打印机去处理,当然,这种打印机大多价格不菲;
    第二种方式是交给CUPS的内置程序处理,把PostScript转换成其特有的raster格式,这种格式是CUPS特有的,至于为什么要转成这种格式,是为了方便打印机生产商,让他们可以只需开发CUPS的raster格式到其打印机的接口,方便大家统一,但似乎这一方式的驱动还不多。
    第三种方式,也是支持打印机最多的方式,叫做GhostScript格式的驱动模式。它其实和第二种打印驱动比较类似,只把CUPS的解释器换成了外置的 GhostScript来解释PostScript文件,之所以这么周折,是因为目前支持这种方法的打印机比支持CUPS的raster的打印机要多很多。GhostScript程序是独立于CUPS运行的,它的功能也不仅限于打印,但很多情况下通过CUPS来调用GhostScript打印是件很方便的事情。foomatic则是用于连接CUPS和GhostScript的一个脚本程序(用perl写的),用来打包各种不同格式的打印机命令,它非常有用,对于通过CUPS调用GhostScript来说则是必须的。GhostScript格式的驱动程序很多,大家可以到Open Printing - OpenPrinting去看看,现在大部分打印机在Linux都是用GhostScript驱动的。当然,有些时候,GhostScript还不能包打天下,像HP的1020就比较特殊,它的打印流有点不一样,需要再用特殊的程序进行处理,GhostScript负责讲PostScript格式转换成点阵模式后,还要进过foo2zjs处理,转换成特殊的打印流,再交给后台。这种模式,相当于给GhostScript又装了个插件,附加了一个小模块。
    总之,无论是哪种模式,实际上CUPS都是把打印机“看成”PostScript打印机,或是直接调用,或是用自带的方法虚拟,或者用GhostScript虚拟。

打印驱动的安装
Ubuntu系统为例(命令行仅供参考,实际安装时可能会因为系统和版本的差别或有差异,可针对不同的系统作些修改)

(1)安装CUPS
     sudo apt-get install cups

 

(2)安装GhostScript
        sudo aptitude install ghostscript
(插一句,在ubuntu下,本人推荐用aptitude替代apt-get,aptitude处理包的依存关系比apt-get要好)


(3)安装foomatic
        sudo aptitude install foomatic

 

 改用sudo apt-get install foomatic安装

 

系统管理-软件源中,修改官方软件仓库,选择了浙江大学和阿里的镜像。

 

 命令行输入sudo apt-get update更新软件源列表。再次安装foomatic仍失败。

http://www.openprinting.org/download/foomatic/  下载foomatic-filters-4.0.16.tar.gz压缩包,交叉编译安装。(注意不要随便换版本,以免编译失败)

# 1.下载源码
wget http://www.openprinting.org/download/foomatic/foomatic-filters-4.0.16.tar.gz 
 
# 2.解压源码
tar xvzf foomatic-filters-4.0.16.tar.gz 
 
# 3.配置
cd foomatic-filters-4.0.16 &&
./configure --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf --build=i686-linux CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ LD=arm-linux-gnueabihf-ld RANLIB=arm-linux-gnueabihf-ranlib AR=arm-linux-gnueabihf-ar --disable-dbus --prefix=/  


 
# 4.修改文件"config.h"
sed -i '30s/#define HAVE_MALLOC 0/#define HAVE_MALLOC 1/' ./config.h &&
sed -i '37s/#define HAVE_REALLOC 0/#define HAVE_REALLOC 1/' ./config.h &&
sed -i '157s/#define malloc rpl_malloc/#define malloc_xx/' ./config.h &&
sed -i '163s/#define realloc rpl_realloc/#define realloc_xx/' ./config.h 


# 5.编译
make

 
 
# 6.安装
make install



到此安装结束。只要再稍加配置,系统就应该已经能够支持很多种打印机了。GhostScript本身就已经带了很多打印机的驱动,还有很多GhostScript标准写的驱动,可以从Open Printing - OpenPrinting下载到。
至于像hp 1020这样的机器,我们还得多装一点东西,不用担心,此程序的作者已经想得很周到了,只需稍许几个命令就能解决安装。(参考rkkda.com - 

下载:
wget -O foo2zjs.tar.gz

解压缩:
tar zxf foo2zjs.tar.gz

进入相应的目录:
cd foo2zjs

编译foo2zjs:
make

取得打印机的韧件(firmware):
./getweb 1020

安装:
sudo make install

安装热插拔系统支持:
sudo make install-hotplug

安装到CUPS系统:
sudo make cups

这样,所有的安装工作都完成了。接下来需要配置调试CUPS服务了。

CUPS系统的配置
    CUPS系统装好的时候是只能从本地打开的,就是安装CUPS的那台机器能打开:http://127.0.0.1:631。打开web页面管理,点击 “Administration”页面,可以看到添加打印机的按钮,点击按照提示就能完成安装(图形界面添加打印机)

如果要支持从其他机器登录,要修改配置文件:/etc/cups/cups.d/ports.conf,在里面添加要监听的地址,例如:

Listen 127.0.0.1:631
#默认的本地监听

Listen /var/run/cups/cups.sock
#默认的监听端口

Listen 192.168.1.2:631
#要添加的监听地址

另外,由于安全的需要,CUPS将很多从网络安装维护打印机的功能作了限制,经过尝试,建议对配置文件再做一些修改,增加几个配置参数,降低一些安全设置,以方便在普通内网条件下使用。当然,如果你对安全性有很大的要求,请参考相CUPS的说明进行修改:

# Authenticate against system accounts by default...

...

DefaultEncryption IfRequested
#添加默认的对密码加密的要求

... ... ...

# Restrict access to the server...

...

Allow 192.168.1.0/24
#添加可以访问服务器的网段

... ... ...

# Restrict access to the admin pages...

...

Allow 192.168.1.0/24
#添加那些机器可以访问管理页面

... ... ...

# Restrict access to the admin pages...

...

Encryption Never
#表示访问管理员页面无需对密码加密

... ... ...

配置完成后,就可以通过web页面来管理你的打印机了。
 

最后,将PPD文件放到/usr/share/cups/model目录下,CUPS就能识别你的打印机了。
     PPD文件哪里来的呢,这个有很多途径可以获得:CUPS自己本身带了很多PPD已经在/usr/share/cups/model/cups- included/目录下存在;从linuxprinting网站,也能下载到很多的PPD文件;还有,最经典的,可以用foomatic- compiledb编译出来,当然这个编译过程需要相应的数据库支持,默认编译的时候,会把所有foomatic支持的都编译出来,选择你要的就好了。以 HP1020为例,你可以直接从linuxprinting网站下到PPD;也可以在安装好foo2zjs后,用foomatic编译一个PPD文件,编译好后的文件存放在当前目录下的ppd/文件夹里。最后把对应型号的PPD文件拷贝到/usr/share/cups/model就完成了。

CUPS系统的使用
    在使用CUPS,需要添加打印机,打开打印机。然后输入CUPS服务器地址“http://192.168.1.2:631”打开web页面管理,点击 “Administration”页面,可以看到添加打印机的按钮,点击按照提示选择相应的端口和打印机信号就能完成安装。该过程和在 widnows下安装很类似,完成后可以点“Print Test Page”试下测试页,打印机很快就会打出相应的页面。到此,我们已经完全完成了对CUPS系统的配置,打印服务已经可以直接使用了。在Linux服务器上,可以直接调用CUPS服务打印文件。另外也能通过网络,共享这台打印机,让其他的系统包括Windows系统使用这台打印机。

在Window下使用CUPS共享的打印机
在Windows下,安装CUPS共享的打印机。网上有很多解决方案,很多方案提到用samba来共享打印机,那种方法可行,但配置samba也是一项比较复杂的工作。我们完全可以使用CUPS的网络打印功能,来完成这一任务。例如,在Windows中添加一台网络打印机并输入URL:http://192.168.1.2:631/printers/HP_LaserJet_1020,就可以完成打印机添加了,之后的步骤和安装普通的本地打印机一样。其中“192.168.1.2:631/printers”是CUPS打印服务所在地址和端口,“HP_Laser_1020”是你的打印机名。(看有别的教程说可能需要Windows的机器先连接下打印机装下驱动,没有实际尝试过)
 

总结
    通过CUPS的配置,我们能够将普通的打印机安装在Linux服务器上,从而提供网络服务,相比市售的网络打印机,这种方法不但降低了成本,一台带有 64M内存的奔腾就能很好的完成任务,而且该服务器还能同时兼任NAT,Web Server,FTP等服务,为10台以内的机器服务绰绰有余,CPU占用率100%的时间很少;而且相对传统网络打印机CUPS打印服务更加灵活可靠。

标签:...,打印机,GhostScript,打印服务,PostScript,Linux,CUPS,安装
From: https://www.cnblogs.com/jiftle/p/17613988.html

相关文章

  • 如何改变linux服务器系统时区和时间 修改设置Linux服务器时区
    如何改变linux服务器系统时区和时间修改设置Linux服务器时区原文链接:https://www.jingjia.net/article/yingxiao741067.htmllinux系统修改系统时间与时区的方法有哪些修改系统时间。linux系统时钟有两个,一个是硬件时钟,即BIOS时间,就是我们进行CMOS设置时看到的时间,另一......
  • LinuxUDP通讯
    目录前言一、UDP通讯1.UDP通讯概述2.UDP的特点3.UDP的应用二、UDP基本通讯1.socket函数2.bind函数2.1主机字节序和网络字节序2.2点分制十进制转换3.recvfrom接收4.服务端完整代码5.sendto发送函数6.客户端完整代码三、TFTP文件接收程序1.TFTP概述2.TFTP通讯过程3.TFTP客户端四、......
  • kettle案例九-----linux使用kettle
    我们之前学习的kettle操作都是在windows中进行可视化的操作,但是在使用过程中发现一些问题。比如我们的数据文件是放在linux服务器中的,如果要清洗则需要把它们下载到本地,这样需要耗费一些时间,尤其是数据文件比较大时。解决方案就是我们直接在linux服务器中运行kettle进行抽取。......
  • linux测试网络速度
    大家都知道,Linux界面基本都是命令行模式,但是命令行模式也可以测试网速,我们就要用这个工具:speedtest,linux上的版本是基于python开发的。1、是从githup上下载的这个工具,所以我们需要在linux上要安装git命令客户端,最简单的方法是用yum来安装,[root@localhost~]#yum-yinstallgit2、......
  • linux进阶:内核模块
    现代内核派系宏内核关键功能(基本功能,不可裁剪、扩展)和服务功能(如文件系统、设备驱动、网络服务等,可裁剪、扩展)均在内核空间提供。运行效率高。扩展性较差。systemcall(系统调用)能够先入内核态来使用内核提供的服务。微内核内核空间只提供关键功能,服务功能在用户空间提供。......
  • linux积累(一)---查看压缩文件的最后一行
    有时候我们需要处理大的压缩文件,查看其中的内容,但是先解压再查看解压的过程会花比较多的时间。一般可以使用zcat123.gz的方式查看压缩文件的内容。也可以使用less123.gzmore123.gzless123.gz|greprs123或者tail-n123.gz等命令去查看压缩文件的内容。......
  • RocketMQ Linux单机测试:简易快速部署指南及Dashboard控制台部署
    目录简介开始下载增加环境变量修改启动文件jvm大小修改rocketmq配置文件启动快速测试关闭Dashboard下载Dashboard已编译jar包网盘下载启动命令可能遇到的问题写在最后简介请注意,本博客仅供初期测试时快速部署之用,以节省时间避免不必要的问题。如需在生产环境部署,请参考其他可靠......
  • 银河麒麟等 Linux系统 安装 .net 5,net 6及更高版本的方法
    最近项目上用到银河麒麟的操作系统,需要搭建.net跨平台方案。一开始使用各种命令都安装不上,很多提示命令找不到,或者下载包时候网络无法下载。网上教程很多,但没有一个是成功的,多数使用apt-get等命令,都报错,提示命令未找到。于是开始手动安装。最终发现还是在Windows官网给出......
  • Linux使用rsync备份到Synology NAS
    将数据从Linux设备备份到SynologyNAS将数据从Linux设备备份到SynologyNAS的最常见方法是使用rsync来制作镜像文件夹。您可能需要使用事先装载的CIFS或NFS将SynologyNAS上的文件夹装载到Linux设备。此命令为: [root@www~]#rsync-av[source_folder][destination_folder]......
  • linux 如何创建php文件
    首先,需要先安装PHP。在Linux中,你可以通过使用命令行工具来安装PHP。具体方法如下: sudoapt-getupdatesudoapt-getinstallphp以上命令会自动安装PHP并将其设置为默认选项。一旦你安装好了PHP,你就可以开始创建PHP文件了。在Linux中,你可以使用任何文本编辑器来创建PHP文件......