印表機的安裝 on FreeBSD

 (忘了引用頁面)

自前幾個月開始使用 FreeBSD 來當 Desktop 後,一直搞不定印表機的部份,因為一直弄不懂 filer 的部份,今天總算是搞定了,心情之愉悅真是筆墨無法形容,因為終於可以不用為了列印而得切換回 M$-Windows 系統來作業了。 YA~~

因家中有三部電腦,一部是用來做 Server (FreeBSD),一部是太座大人在用的 Win98 系統,另一部則是小弟在用的 FreeBSD + WinXP (備用) 雙系統,而印表機只有一臺,所以得採用列印伺服器的方式,來提供列印服務。

環境︰
Server -> FreeBSD 4.7 STABLE
Client -> Win98 & FreeBSD + WinXP
Print -> Epson Stylus Color 440

安裝︰
Server ->
因為需要同時提供給 Win98 & WinXP & FreeBSD 來列印,因此在 Server 上必需要安裝 samba 伺服器,以提供給 Win98 & WinXP 的列印服務。
關於 samba 的安裝與設定,請自行查照學園中的相關文件,底下僅提供 smb.conf 中關於印表機的設定。

代碼:
# /usr/local/etc/smb.conf about print
[esc4]
comment = Epson Stylus Color 440
path = /var/spool/samba
guest ok = Yes
printable = Yes


其中 [esc4] 乃是取決於您於 /etc/printcap 中所設定的印表機名稱,關於印表機的安裝與設定,可以查看 handbook 中列印的章節
http://freebsd.sinica.edu.tw/~statue/handbook/printing.html
底下為適用本例的設定︰

代碼:
# /etc/printcab
lp|<font color=blue>esc4</font>|Epson Stylus Color 440:\
:sh:\
:lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:


如上,第一行是指定印表機的名稱,其中 lp 是必要的,而 esc4 則是此印表機的別名,可以任意命名;至於 Epson Stylus Color 440 也是印表機的別名,通常是管理員為了區別該印表機的真正名稱與型號用的,沒啥特別意義。
在本例中,我們是取用 esc4 的別名來做為 samba 中分享出來的印表機名稱。如果於 M$-Windows 中的網路芳鄰中來查看的話,將會看到 esc4 這臺印表機

再來,因為我們要提供給區網中其他 Unix-Like 即本例中 FreeBSD 的主機來列印,所以我們要再設定一下網路列印的權限。
而在 FreeBSD 中 LPD spooling 系統目前是限制非本機列印的,所以你可以用 /etc/hosts.equiv 和 /etc/hosts.lpd 這兩個檔來編修 LPD 接受哪些遠端機器的要求。
不過您得注意 /etc/hosts.equiv 這個檔也被 ruserok(3) 通訊協定所使用,因此會影響到像 rsh(1) 和 rcp(1) 等程式,所以請小心的設定這個檔案,以免造成不必要的困擾。在此,建議編修 /etc/hosts.lpd 即可!
檔案內容的格式很簡單:一行寫一台機器名稱即可。如下︰

代碼:
# /etc/hosts.lpd
sw
betty.weonfu.net
machine-name.domain


<hr size=1>
Client ->
Win98 & WinXP︰
請以安裝網路印表機的方式,來安裝由 samba 分享出來的 esc4 印表機。安裝完成後,如無意外,您應該就可以直接來列印文件了。

FreeBSD︰
我們選用 Common UNIX Printing System (CUPS) 印表機管理系統。
請先依照如下步驟來安裝︰

代碼:
cd /usr/ports/print/ghostscript-gnu
make install clean
cd /usr/ports/print/cups
make install clean


其中 ghostscript-gnu 套件於安裝過程中,會出現選單讓您選取相關的驅動程式,基本上使用其預設值即可 — 如果您懶得選的話。
安裝完成後,您需要設定您的 cups,以便告知 cups 是要採用哪部印表機來列印 — 當然,您並非只能安裝一部 ^_^
請先執行 /usr/local/bin/cups &,它會以 daemon 模式於背景執行。
然後用瀏灠器連結如下位址︰
http://localhost:631
此時會出現登入的帳號與密碼詢問視窗,請以 root 與 root 的密碼來輸入,以便登入管理。
再來請點選 Prints -> Add Print
然後會看到如下畫面︰
這一部份是告訴使用者們實際使用的是哪臺印表機,其中︰
Name -> 印表機的名稱。請設定成與 Server 端中的印表機名稱相同。本例中則輸入 esc4
Location -> 印表機的所在位置註解。非必需,隨意打都可以,但為了能夠於印表機管理列表中清楚知道這臺印表機的所在位置,所以我們還是輸入正確位置,如︰//dns/esc4 (dns 是 Server 的 hostname;esc4 則是印表機名稱)
Description -> 印表機的描述。隨您高興,通常是輸入該印表機的廠牌與型號,如︰Epson Stylus Color 440
完成後請按下 Continue 按鈕繼續下個步驟︰

這兒是要告訴 cups 印表機的連結位置,由上圖中,我們可以看到有滿多選擇的,當然,這可能會隨著 cups 的版本演進而有所不同。
本例中,我們選用 LPD/LPR Host or Printer 選項,這是 Unix-Like 中最常用的型態 ^_^
接下來就是要輸入該印表機的真正連結位置了︰

這部份說實在的,我並不瞭解每個的功用,僅是對 lpd 較熟悉些。而且正好本例中也是要選用 lpd 的模式 ^_^
請以 lpd://Server hostname/Printer name 的格式來輸入︰
lpd://dns/esc4
按下 Continue 按鈕後,您會看到如下畫面︰

這是選擇印表機的驅動程式模組。請依您的印表機廠牌來選擇。
圖中是 cups 預設提供的驅動程式,如果不幸的您的印表機廠牌沒有呈列其中,請到 http://www.cups.org 中查看看吧。
本例中是使用 Epson Stylus Color 440 的印表機,因此選取 Epson 之後,繼續下一步︰

這是 Epson 驅動程式模組中的列表,這應該不用多說了吧 ^_^
如果真不知該選哪一個,就一個一個試吧。
本例中我們選用有 Stylus Color 的選項,聰明的您該知道為什麼吧 ^_*
最後,您會看到 Printer <font color=blue>lp</font> has been added successfully. 字樣,表示已安裝完成該臺印表機了。
這時請按下最上方的連結列表中的 Prints 選項,您會看到如下畫面︰

請特別注意,唯有當出現 Stop Print 紅色按鈕的字樣,此印表機才是處於待機狀態喲,如果呈現 Start Print 綠色字樣的按鈕,則表示此印表機處於離現狀態。
最 後,我們需要將 path 中 /usr/local/bin/ 的優先權大於 /usr/bin/ 的優先權,因為我們目前是將所有的列印工作改為丟給 cups 來管理,而 cups 是使用其自行所提供的 lp* 管理指令,如果沒有將 /usr/local/bin/ 的優先權大於 /usr/bin/ 的優先權的話,則當執行列印動作時,系統會去執行系統預設提供的 lp* 指令,而非 cups 所提供的 lp* 指令,當這情況發生時,即使我們等到老死,印表機一樣是不會有所動作的。
您有兩種方式來確保系統於執行 lp* 指令時,是執行 cups 所提供的 lp* 指令。
方法一︰變更 path 排列

代碼:
# csh or tcsh
# 修改 $HOME/.cshrc 的內容如下︰
set path = (/sbin /bin /usr/sbin /usr/local/bin /usr/bin /usr/games /usr/local/sbin /usr/X11R6/bin $HOME/bin)

#sh or bash
# 修改 $HOME/.profile 的內容如下
PATH=/sbin:/bin:/usr/sbin:/usr/local/bin:/usr/bin:/usr/games:/usr/local/sbin:/usr/X11R6/bin:$HOME/bin; export PATH


方法二︰
將 /usr/bin/lp* 的指令給更名,然後再將 /usr/local/bin/lp* 指令給覆製或連結到 /usr/bin/ 目錄下。
您至少應該將 lpr、lpq、lprm 這三個指令給覆製或連結過去。

代碼:
mv /usr/bin/lpr /usr/bin/lpr.org
mv /usr/bin/lpq /usr/bin/lpq
mv /usr/bin/lprm /usr/bin/lprm
ln -s /usr/local/bin/lpr /usr/bin/lpr
ln -s /usr/local/bin/lpq /usr/bin/lpq
ln -s /usr/local/bin/lprm /usr/bin/lprm


請任選一種方法即可,當然兩者全做也可以。
建議第一種方法為佳。
現在,你可以按下最後一張快照中的 Print Test Page 按鈕來列印測試頁了。