(忘了引用頁面)
自前幾個月開始使用 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 中關於印表機的設定。
代碼:
|
<tr>
<td>
# /usr/local/etc/smb.conf about print<br /> [esc4]<br /> comment = Epson Stylus Color 440<br /> path = /var/spool/samba<br /> guest ok = Yes<br /> printable = Yes
</td>
</tr>
</table>
<p>
<span><br /> 其中 <span style="color: blue">[esc4]</span> 乃是取決於您於 /etc/printcap 中所設定的<strong style="color: #ffa34f">印表機</strong>名稱,關於<strong style="color: #ffa34f">印表機</strong>的安裝與設定,可以查看 handbook 中列印的章節<br /> <a href="http://freebsd.sinica.edu.tw/%7Estatue/handbook/printing.html" target="_blank">http://freebsd.sinica.edu.tw/~statue/handbook/printing.html</a><br /> 底下為適用本例的設定︰</span>
</p>
<table align="center" border="0" cellpadding="3" cellspacing="1">
<tr>
<td>
<span><strong>代碼:</strong></span>
</td>
</tr>
<tr>
<td>
# /etc/printcab<br /> lp|<font color=blue>esc4</font>|Epson Stylus Color 440:\<br /> :sh:\<br /> :lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:
</td>
</tr>
</table>
<p>
<span><br /> 如上,第一行是指定<strong style="color: #ffa34f">印表機</strong>的名稱,其中 <span style="color: red">lp</span> 是必要的,而 <span style="color: blue">esc4</span> 則是此<strong style="color: #ffa34f">印表機</strong>的別名,可以任意命名;至於 <span style="color: green">Epson Stylus Color 440</span> 也是<strong style="color: #ffa34f">印表機</strong>的別名,通常是管理員為了區別該<strong style="color: #ffa34f">印表機</strong>的真正名稱與型號用的,沒啥特別意義。<br /> 在本例中,我們是取用 <span style="color: blue">esc4</span> 的別名來做為 samba 中分享出來的<strong style="color: #ffa34f">印表機</strong>名稱。如果於 M$-Windows 中的網路芳鄰中來查看的話,將會看到 <span style="color: blue">esc4</span> 這臺<strong style="color: #ffa34f">印表機</strong>。</p>
<p>
再來,因為我們要提供給區網中其他 Unix-Like 即本例中 FreeBSD 的主機來列印,所以我們要再設定一下網路列印的權限。<br /> 而在 FreeBSD 中 LPD spooling 系統目前是限制非本機列印的,所以你可以用 /etc/hosts.equiv 和 /etc/hosts.lpd 這兩個檔來編修 LPD 接受哪些遠端機器的要求。<br /> 不過您得注意 /etc/hosts.equiv 這個檔也被 ruserok(3) 通訊協定所使用,因此會影響到像 rsh(1) 和 rcp(1) 等程式,所以請小心的設定這個檔案,以免造成不必要的困擾。在此,建議編修 /etc/hosts.lpd 即可!<br /> 檔案內容的格式很簡單:一行寫一台機器名稱即可。如下︰<br /> </span>
</p>
<table align="center" border="0" cellpadding="3" cellspacing="1">
<tr>
<td>
<span><strong>代碼:</strong></span>
</td>
</tr>
<tr>
<td>
# /etc/hosts.lpd<br /> sw<br /> betty.weonfu.net<br /> machine-name.domain
</td>
</tr>
</table>
<p>
<span><br /> <hr size=1><br /> Client -><br /> Win98 & WinXP︰<br /> 請以安裝網路<strong style="color: #ffa34f">印表機</strong>的方式,來安裝由 samba 分享出來的 <span style="color: blue">esc4</span> <strong style="color: #ffa34f">印表機</strong>。安裝完成後,如無意外,您應該就可以直接來列印文件了。</p>
<p>
FreeBSD︰<br /> 我們選用 Common UNIX Printing System (CUPS) <strong style="color: #ffa34f">印表機</strong>管理系統。<br /> 請先依照如下步驟來安裝︰</span>
</p>
<table align="center" border="0" cellpadding="3" cellspacing="1">
<tr>
<td>
<span><strong>代碼:</strong></span>
</td>
</tr>
<tr>
<td>
cd /usr/ports/print/ghostscript-gnu<br /> make install clean<br /> cd /usr/ports/print/cups<br /> make install clean
</td>
</tr>
</table>
<p>
<span><br /> 其中 ghostscript-gnu 套件於安裝過程中,會出現選單讓您選取相關的驅動程式,基本上使用其預設值即可 — 如果您懶得選的話。<br /> 安裝完成後,您需要設定您的 cups,以便告知 cups 是要採用哪部<strong style="color: #ffa34f">印表機</strong>來列印 — 當然,您並非只能安裝一部 ^_^<br /> 請先執行 /usr/local/bin/cups &,它會以 daemon 模式於背景執行。<br /> 然後用瀏灠器連結如下位址︰<br /> <a href="http://localhost:631/" target="_blank">http://localhost:631</a><br /> 此時會出現登入的帳號與密碼詢問視窗,請以 root 與 root 的密碼來輸入,以便登入管理。<br /> 再來請點選 <span style="color: blue">Prints</span> -> <span style="color: blue">Add Print</span><br /> 然後會看到如下畫面︰<br /> 這一部份是告訴使用者們實際使用的是哪臺<strong style="color: #ffa34f">印表機</strong>,其中︰<br /> <span style="color: blue">Name</span> -> <strong style="color: #ffa34f">印表機</strong>的名稱。請設定成與 Server 端中的<strong style="color: #ffa34f">印表機</strong>名稱相同。本例中則輸入 <span style="color: blue">esc4</span><br /> <span style="color: blue">Location</span> -> <strong style="color: #ffa34f">印表機</strong>的所在位置註解。非必需,隨意打都可以,但為了能夠於<strong style="color: #ffa34f">印表機</strong>管理列表中清楚知道這臺<strong style="color: #ffa34f">印表機</strong>的所在位置,所以我們還是輸入正確位置,如︰//dns/esc4 (dns 是 Server 的 hostname;esc4 則是<strong style="color: #ffa34f">印表機</strong>名稱)<br /> <span style="color: blue">Description</span> -> <strong style="color: #ffa34f">印表機</strong>的描述。隨您高興,通常是輸入該<strong style="color: #ffa34f">印表機</strong>的廠牌與型號,如︰Epson Stylus Color 440<br /> 完成後請按下 Continue 按鈕繼續下個步驟︰</p>
<p>
這兒是要告訴 cups <strong style="color: #ffa34f">印表機</strong>的連結位置,由上圖中,我們可以看到有滿多選擇的,當然,這可能會隨著 cups 的版本演進而有所不同。<br /> 本例中,我們選用 <span style="color: blue">LPD/LPR Host or Printer</span> 選項,這是 Unix-Like 中最常用的型態 ^_^<br /> 接下來就是要輸入該<strong style="color: #ffa34f">印表機</strong>的真正連結位置了︰
</p>
<p>
這部份說實在的,我並不瞭解每個的功用,僅是對 lpd 較熟悉些。而且正好本例中也是要選用 lpd 的模式 ^_^<br /> 請以 <a target="_blank">lpd://Server</a> hostname/Printer name 的格式來輸入︰<br /> <span style="color: blue">lpd://dns/esc4</span><br /> 按下 Continue 按鈕後,您會看到如下畫面︰
</p>
<p>
這是選擇<strong style="color: #ffa34f">印表機</strong>的驅動程式模組。請依您的<strong style="color: #ffa34f">印表機</strong>廠牌來選擇。<br /> 圖中是 cups 預設提供的驅動程式,如果不幸的您的<strong style="color: #ffa34f">印表機</strong>廠牌沒有呈列其中,請到 <a href="http://www.cups.org/" target="_blank">http://www.cups.org</a> 中查看看吧。<br /> 本例中是使用 Epson Stylus Color 440 的<strong style="color: #ffa34f">印表機</strong>,因此選取 <span style="color: blue">Epson</span> 之後,繼續下一步︰
</p>
<p>
這是 Epson 驅動程式模組中的列表,這應該不用多說了吧 ^_^<br /> 如果真不知該選哪一個,就一個一個試吧。<br /> 本例中我們選用有 Stylus Color 的選項,聰明的您該知道為什麼吧 ^_*<br /> 最後,您會看到 <strong>Printer <font color=blue>lp</font> has been added successfully. </strong> 字樣,表示已安裝完成該臺<strong style="color: #ffa34f">印表機</strong>了。<br /> 這時請按下最上方的連結列表中的 <span style="color: blue"><strong>Prints</strong></span> 選項,您會看到如下畫面︰
</p>
<p>
請特別注意,唯有當出現 <span style="color: red">Stop Print</span> 紅色按鈕的字樣,此<strong style="color: #ffa34f">印表機</strong>才是處於待機狀態喲,如果呈現 <span style="color: green">Start Print</span> 綠色字樣的按鈕,則表示此<strong style="color: #ffa34f">印表機</strong>處於離現狀態。<br /> 最 後,我們需要將 path 中 /usr/local/bin/ 的優先權大於 /usr/bin/ 的優先權,因為我們目前是將所有的列印工作改為丟給 cups 來管理,而 cups 是使用其自行所提供的 lp* 管理指令,如果沒有將 /usr/local/bin/ 的優先權大於 /usr/bin/ 的優先權的話,則當執行列印動作時,系統會去執行系統預設提供的 lp* 指令,而非 cups 所提供的 lp* 指令,當這情況發生時,即使我們等到老死,<strong style="color: #ffa34f">印表機</strong>一樣是不會有所動作的。<br /> 您有兩種方式來確保系統於執行 lp* 指令時,是執行 cups 所提供的 lp* 指令。<br /> 方法一︰變更 path 排列<br /> </span>
</p>
<table align="center" border="0" cellpadding="3" cellspacing="1">
<tr>
<td>
<span><strong>代碼:</strong></span>
</td>
</tr>
<tr>
<td>
# csh or tcsh<br /> # 修改 $HOME/.cshrc 的內容如下︰<br /> set path = (/sbin /bin /usr/sbin /usr/local/bin /usr/bin /usr/games /usr/local/sbin /usr/X11R6/bin $HOME/bin)</p>
<p>
#sh or bash<br /> # 修改 $HOME/.profile 的內容如下<br /> PATH=/sbin:/bin:/usr/sbin:/usr/local/bin:/usr/bin:/usr/games:/usr/local/sbin:/usr/X11R6/bin:$HOME/bin; export PATH</td> </tr> </table>
<p>
<span><br /> 方法二︰<br /> 將 /usr/bin/lp* 的指令給更名,然後再將 /usr/local/bin/lp* 指令給覆製或連結到 /usr/bin/ 目錄下。<br /> 您至少應該將 lpr、lpq、lprm 這三個指令給覆製或連結過去。<br /> </span>
</p>
<table align="center" border="0" cellpadding="3" cellspacing="1">
<tr>
<td>
<span><strong>代碼:</strong></span>
</td>
</tr>
<tr>
<td>
mv /usr/bin/lpr /usr/bin/lpr.org<br /> mv /usr/bin/lpq /usr/bin/lpq<br /> mv /usr/bin/lprm /usr/bin/lprm<br /> ln -s /usr/local/bin/lpr /usr/bin/lpr<br /> ln -s /usr/local/bin/lpq /usr/bin/lpq<br /> ln -s /usr/local/bin/lprm /usr/bin/lprm
</td>
</tr>
</table>
<p>
<span><br /> 請任選一種方法即可,當然兩者全做也可以。<br /> 建議第一種方法為佳。<br /> 現在,你可以按下最後一張快照中的 <span style="color: blue"><strong>Print Test Page</strong></span> 按鈕來列印測試頁了。</span>
</p>
<div class="wp_plus_one_button" style="margin: 0 8px 8px 0; float:left; ">
<g:plusone href="https://blog.sd.idv.tw/archives/17" callback="wp_plus_one_handler"></g:plusone>
</div>