Configuring Samba with CUPS

วันนี้ต้องการพิมพ์เอกสารออกพรินเตอร์ที่ต่ออยู่กับเครื่อง Yggdrasil แต่ปรากฏว่า Yggdrasil เพิ่งจะลงลินุกซ์ทะเล 5.0 ทับ 4.1r2 ไปหมาดๆ แล้วก็ยังไม่ได้คอนฟิก samba เลย .. เหอะๆๆ

ไฟล์สำหรับคอนฟิก samba อยู่ที่ /etc/samba/smb.conf ซึ่งคอนฟิกพื้นฐานไว้แล้วเพียงแต่ปรับตามที่ต้องการเท่านั้น สำหรับผมที่ปรับๆ ไปก็มี workgroup, server string, และ security ซึ่งที่นี่ใช้เป็น SHARE .. สำหรับ Yggdrasil จะเปิดแชร์เฉพาะพรินเตอร์อย่างเดียว ก็เลยมีคอนฟิกเฉพาะ [printers] ส่วนอื่นๆ ก็คอมเมนต์ไว้หมด .. ถ้าเป็นทะเลเวอร์ชันก่อนๆ คอนฟิกเท่านี้ก็พิมพ์ได้แล้ว แต่ระบบการพิมพ์ของทะเล 5.0 เปลี่ยนมาใช้ cups printing system เต็มตัวแล้ว การคอนฟิกให้ใช้กับ samba จะต่างจากทะเลเวอร์ชันก่อนนิดหน่อยคือ ต้องเปลี่ยน printcap name และ printing เป็น cups อย่างนี้:

printcap name = cups
printing = cups

ส่วน [printers] section ก็คอนฟิกตามปกติ .. ซึ่งควรจะประมาณนี้

[printers]
comment = printers
path = /var/spool/samba
browseable = yes
public = yes
guest ok = yes
printable = yes
writeable = yes

ทีนี้ก็ลองสตาร์ท samba กัน:

[root@yggdrasil root]# service smb restart

ถ้าถึงตรงนี้แล้วใช้งานได้ก็เป็นอันเสร็จ แต่ถ้าพรินเตอร์ไม่พิมพ์อะไรออกมาเลย ไม่มีพรินต์จ๊อบในคิว ลองเช็ค log ของ samba ดู .. หากมีข้อความประมาณว่า

printing/print_cups.c:cups_job_submit(655)
Unable to print file to HP4 - client-error-document-format-not-supported

แสดงว่า cups ที่พรินต์เซิร์ฟเวอร์ไม่ได้คอนฟิกให้รับข้อมูลที่ samba ส่งผ่านมายัง cups ซึ่งก็คือฟอร์แมตแบบ raw .. รู้อย่างนี้แล้วก็ไม่ยาก เข้าไปแก้ /etc/cups/mime.types .. เพิ่มข้อความ

application/octet-stream

อีกที่คือ /etc/cups/mime.convs ก็เพิ่ม

application/octet-stream        application/vnd.cups-raw    0    -

จากนั้นก็ restart cups แล้วลองสั่งพิมพ์อีกครั้ง .. เย้! พิมพ์ได้แล้ว … :D