1. 程式人生 > >Linux的列印服務CUPS的安裝、配置和使用

Linux的列印服務CUPS的安裝、配置和使用

CUPS實際上是一個整合的服務。包括了前端接收列印命令的相關程式,後端控制印表機硬體的程式,中間則是列印驅動。首先來看看CUPS驅動印表機的方式。這裡要說明的是所謂驅動,其實是一系列的程式加定義檔案的總和,不像我們有時候想像的那樣是一個很簡單的單一檔案。當CUPS接受到列印命令時,首先會進行一個格式的預轉換,比如將.jpg等各種檔案先轉換成PostScript格式(圖1桔紅方框)。然後進一步將PostScript格式轉換成 CUPS內部格式,這個稱為PostScript到PostScript轉換,這兩種PostScript格式還是有差別的,當然大家可以不必深究(我也沒好好看,只是知道在MIME中定義了這兩種不同的PostScript,哪位知道的請指教下)。
    以上這些都是預處理工作,接下來CUPS的工作圍繞PostScript展開(圖1,金色部分),CUPS會根據PPD(PostScript Printer Description 檔案)檔案來選擇相應的處理流程。PPD檔案其實是驅動的核心,不同的印表機有不同的PPD檔案,PPD

包含有關輸出裝置的資訊,CUPS使用 PPD 檔案中的資訊來確定在列印文件時向列印機發送哪些 PostScript 資訊。需要說明的是,CUPS實際上把所有印表機都“看成”PostScript印表機,即便印表機本身不支援PostScript,也可以通過CUPS 自帶的PostScript解釋程式(pstoraster)或者GhostScript來解釋PostScript檔案,從而把普通的印表機模擬成 PostScript印表機。圖1中金色的線條顯示就是CUPS處理PostScript檔案的方式,按我的理解,可以分為三種,第一種就是接正在的 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格式的驅動程式很多,大家可以到
http://www.openprinting.org/去看看,現在大部分印表機在Linux都是用GhostScript驅動的。當然,有些時候,GhostScript還不能包打天下,像HP的1020就比較特殊,它的列印流有點不一樣,需要再用特殊的程式進行處理,GhostScript負責講PostScript格式轉換成點陣模式後,還要進過foo2zjs處理,轉換成特殊的列印流,再交給後臺。這種模式,相當於給GhostScript又裝了個外掛,附加了一個小模組。
    總之,無論是哪種模式,實際上CUPS都是把印表機“看成”PostScript印表機,或是直接呼叫,或是用自帶的方法虛擬,或者用GhostScript虛擬。

Linux_Printing_Stream
圖1

列印驅動的安裝
用Ubuntu系統為例,命令列僅供參考,實際安裝時可能會因為系統和版本的差別或有差異,可針對不同的系統作些修改。
    萬丈高樓平地起,首先,要安裝的是CUPS本身,這個相對還是很方便的:
        sudo aptitude install cupsys cupsys-client
安裝的cupsys是CUPS服務,cupsys-client則是管理連線CUPS用的。理論上這個時候要是你的印表機是PostScript印表機,或者在CUPS支援的範圍內,只需將PPD檔案往CUPS相應的目錄一放,你就能夠用CUPS列印了。但實際上,大多數印表機在Linux下還是需要 GhostScript來驅動的。關於CUPS的服務配置,我們最後一起討論。所以,下一步:
      sudo aptitude install ghostscript
(插一句,在ubuntu下,本人推薦用aptitude替代apt-get,aptitude處理包的依存關係比apt-get要好)
安裝上GhostScript後,別忘記裝foomatic,否則CUPS還是呼叫不過來的:
     
sudo aptitude install foomatic
(再次羅嗦下,foomatic五個部分,用aptitude可以一次搞定安裝,apt-get似乎要敲好幾次,建議)
到此為止,只要再稍加配置,系統就應該已經能夠支援很多種印表機了。GhostScript本身就已經帶了很多印表機的驅動,還有很多GhostScript標準寫的驅動,可以從
http://www.openprinting.org/下載到。
至於像hp 1020這樣的機器,我們還得多裝一點東西,不用擔心,此程式的作者已經想得很周到了,只需稍許幾個命令就能解決安裝。(參考
http://foo2zjs.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(圖2)。如果要支援從其他機器登入,要修改配置檔案:/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頁面來管理你的印表機了(圖2)。
CUPS
圖2

最後,將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”頁面,可以看到新增印表機的按鈕,點選按照提示選擇相應的埠和印表機訊號就能完成安裝(圖3)。該過程和在 widnows下安裝很類似,完成後可以點“Print Test Page”試下測試頁,印表機很快就會打出相應的頁面。到此,我們已經完全完成了對CUPS系統的配置,列印服務已經可以直接使用了。在Linux伺服器上,可以直接呼叫CUPS服務列印檔案。另外也能通過網路,共享這臺印表機,讓其他的系統包括Windows系統使用這臺印表機。
HP1020
圖3

在Window下使用CUPS共享的印表機
   
在Windows下,安裝CUPS共享的印表機。網上有很多解決方案,很多方案提到用samba來共享印表機,那種方法可行,但配置samba也是一項比較複雜的工作。我們完全可以使用CUPS的網路列印功能,來完成這一任務。例如圖4,新增一臺網路印表機並輸入URL:http://192.168.1.2:631/printers/HP_LaserJet_1020_USB_1,就可以完成印表機添加了,之後的步驟和安裝普通的本地印表機一樣。其中“192.168.1.2:631/printers”是CUPS列印服務所在地址和埠,“HP_Laser_1020_USB_1”是你的印表機名。
win
圖4

總結
    通過CUPS的配置,我們能夠將普通的印表機安裝在Linux伺服器上,從而提供網路服務,相比市售的網路印表機,這種方法不但降低了成本,一臺帶有 64M記憶體的奔騰就能很好的完成任務,而且該伺服器還能同時兼任NAT,Web Server,FTP等服務,為10臺以內的機器服務綽綽有餘,CPU佔用率100%的時間很少;而且相對傳統網路印表機CUPS列印服務更加靈活可靠。

相關推薦

Linux DNS 服務安裝配置維護

web med this 包含 從右到左 主域 回復 特定 mini 每個 IP 地址都可以有一個主機名,主機名由一個或多個字符串組成,字符串之間用小數點隔開。有了主機名,就不要死記硬背每臺 IP 設備的 IP 地址,只要記住相對直觀有意義的主機名就行了。這就是 DNS 協

Linux列印服務CUPS安裝配置使用

CUPS實際上是一個整合的服務。包括了前端接收列印命令的相關程式,後端控制印表機硬體的程式,中間則是列印驅動。首先來看看CUPS驅動印表機的方式。這裡要說明的是所謂驅動,其實是一系列的程式加定義檔案的總和,不像我們有時候想像的那樣是一個很簡單的單一檔案。當CUPS接受到列印命令時,首先會進行一個格式的預轉換

如何在 CentOS 7 中安裝配置安全加固 FTP 服務

cte success fire lease 註意 tps tran sub linux 步驟 1:安裝 FTP 服務器 1、 安裝 vsftpd 服務器很直接,只要在終端運行下面的命令。 # yum install vsftpd 2、 安裝完成後,服務先是被禁用的,因

Linux DNS 伺服器安裝配置維護

每個 IP 地址都可以有一個主機名,主機名由一個或多個字串組成,字串之間用小數點隔開。有了主機名,就不要死記硬背每臺 IP 裝置的 IP 地址,只要記住相對直觀有意義的主機名就行了。這就是 DNS 協議所要完成的功能。 今天我們將討論DNS伺服器,特別是Linux

PhoneGap3+版本號的安裝配置使用[圖]

結果 apache height avd fig blog 所在 modules mar 如若轉載。請註明博文地址及原作者(RisingWonderland)。 PhoneGap2+版本號最高為2.9.1,從3+版本號開始,PhoneGap官方不再提供下載安裝包

vsftp安裝配置啟動

.rpm 是否 star mic 服務 release 系統版本號 cal 環境 vsftp軟件安裝、配置和啟動及相關問題的解決在環境使用過程中經常用到。本文以SuSE11sp1上vsftpd的安裝過程進行介紹。 測試環境 SuSE11sp1 前提條件

2018-3-26 14周1次課 NFS服務安裝配置

NFS14.1 NFS介紹·NFS是Network File System的縮寫·NFS最早由Sun公司開發,分2,3,4三個版本,2和3由Sun起草開發,4.0開始Netapp公司參與並主導開發,最新為4.1版本·NFS數據傳輸基於RPC協議,RPC為Remote Procedure Call的簡寫。·NF

詳解postfix郵箱服務安裝配置及其工作原理(內附源碼包)

zhang 關閉防火墻 互聯 分享 接收郵件 目錄 ifconfig shutdown 數字 簡介 postfix是Wietse Venema在IBM的GPL協議之下開發的MTA(郵件傳輸代理)軟件。postfix是Wietse Venema想要為使用最廣泛的sendmai

centos6.7下的系統備份與恢復(bacula 的安裝配置執行)

一、安裝bacula 這裡對上一節的第一種bacula部署結構進行介紹。 主機名 IP地址 作業系統 應用角色 baculaServer 10.0.172.185   centos6.7 Director、SD、Console baculaClient 1

Redis安裝配置解除安裝

1.安裝 mkdir /usr/local/redis 新增目錄 wget [http://download.redis.io/releases/redis-4.0.1](http://download.redis.io/releases/redis-4.0.1).tar.gz ta

C#建立Window服務圖解,安裝配置以及C#操作Windows服務

一、首先開啟VS2013,建立Windows服務專案 二、建立完成後對"Service1.cs"重新命名位"ServiceDemo";然後切換到程式碼檢視,寫個服務執行日誌。 using System; using System.Collections.Generic; usi

Windows下PHP7.2的安裝配置初體驗

下面來介紹PHP7.2的下載安裝配置和使用。 下載和安裝PHP 到官網地址下載zip包(下載地址),我這裡下的是64位非執行緒安全的7.2.11版。 下載好的zip包直接解壓就可以使用,建議是放到習慣的軟體目錄下,以方便管理。 雙擊php.exe就可以進入命令列互動模式,如下圖

.Neter玩轉Linux系列之六:Linux下MySQL的安裝配置使用

基礎篇 實戰篇 一、Linux安裝MySQL (1)下載安裝包:https://dev.mysql.com/downloads/mysql/ (2)解壓並安裝 命令:tar zxvf 檔名 解壓完成之後,重名一下資料夾名字。 命令:mv 檔名1 

安裝配置啟用Ceph iSCSI gateway

本文介紹如何安裝、配置和啟用Ceph iSCSI gateway 要求: 已經有一套Luminous的Ceph叢集(Ceph 12.2.x) 建議使用 2-4 臺機器作為 iSCSI gateway nodes,目的是為了 Ceph iSCSI gateway

RabbitMQ 安裝配置使用者管理(CentOSSUSE)

安裝步驟(rpm包安裝): 下載rpm並安裝: CentOs: wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.1/rabbitmq-server-3.6.1-1.noarch.rpm rpm --

mac下cmake安裝配置使用

目錄 1、cmake下載 2、cmake安裝 3、cmake配置 參考文件:https://blog.csdn.net/baimafujinji/article/details/78588488 1、cmake下載 官網下載地址:https://cmake.org/dow

elasticsearch入門指南(一)elasticsearch-5.5.2安裝配置啟動

一,安裝JDK    略二,安裝elasticsearch1,下載安裝包官網下載地址:https://www.elastic.co/cn/downloads/elasticsearch,本文centos作業系統下安裝elasticsearch的tar包為例,講述安裝過程2,新

Mac下eclipse的git外掛安裝配置使用

1. eclipse的git外掛安裝與配置 1.1 git外掛安裝 點選help——Install new software 2.在彈出框裡面,點選add 如下圖: 如下圖: 點選OK,如果沒反應,請點選Add前面小三角,找到剛建立的以git為名字的

ubuntu14.04下vnc安裝配置使用

1.更新系統 apt-get update -y apt-get upgrade -y  2. 安裝gnome環境相關,sudo apt-get install ubuntu-desktop gnome-panel gnome-settings-daemon meta

資料庫概述mysql-5.7.11-winx64.zip 的下載安裝配置使用(windows裡安裝)圖文詳解

本博文的主要內容有   .資料庫的概述   .mysql-5.7.11-winx64.zip 的下載     .mysql-5.7.11-winx64.zip 的安裝   .mysql-5.7.11-winx64.zip 的配置   .mysql-5.7.11-winx64.zip 的使用