Następna strona Poprzednia strona Spis treści

3. Ustawianie serwisu drukowania na Linux-ie.

Bêdą dwa kroki. Najpierw upewnisz siê, że możesz drukowaæ na Linux-ie potem upewnisz siê, że ta drukarka jest dostêpna dla klientów AppleShare.

Mówiąc jaśniej: najpierw ustawisz swoją drukarkê, żeby była dostêpna dla UNIX-a (lpd - demona drukowania) (sekcja 3.1 do 3.2), a potem udostêpnisz ją innym użytkownikom w strefie AppleTalk (sekcja 3.3) co jest oczywiście opcjonalne.

Wielu ludzi nie lubi ustawiania z dwóch powodów:
(1) Jeśli drukarka AppleTalk jest już dostepna w strefie AppleTalk, to użytkownicy Mac-ów mogą siê do niej bezpośrednio dołączyæ. Wiêc nie ma potrzeby istnienia kolejki na Linux-ie. Jednak ja jestem użytkownikiem Linux-a i chcê mieæ dostêp do tej drukarki i dlatego mój poniższy opis robi dokładnie to: pozwala użytkownikowi Linux-a na drukowanie na drukarce AplleTalk.
(2) Jeśli twoja drukarka jest drukarką lokalną podłączoną do równoległego portu Linux-a (np. /dev/lp1), to jest kilka zmian w pliku /etc/printcap. Ja pokażê przykład ustawienia z drukarką lokalną, którego nie testowałem, ale dostałem od innego użytkownika. Przeczytaj sekcjê 3.4 na ten temat i sprawdź szczegółowe informacje na temat używania Ghostscript-u razem z Netatalk napisane przez Mike'a Pearsona i Billa McGonigle'a.

3.1 Konfiguracja twojego /etc/printcap.

Jeśli twoja drukarka może już drukowaæ przy pomocy polecenia

Pingo$ lpr -P lp test.eps

to możesz przeskoczyæ ten pierwszy krok.

W innym przypadku stañ siê "root-em" i idź do katalogu /etc, żeby wyedytowaæ plik printcap. Szczegóły znajdziesz na stronie podrêcznika systemowego "man". Ja opiszê tylko jak ustawiæ LaseWriter, tak żeby działał z poleceniem lpr z Linux-a.

Dodaj pozycjê dla swojej drukarki do pliku printcap. Ja mam zdefiniowaną tylko LaserWriter i mój plik wygląda tak:

lp|Pingo LaserWriter|Theobald Chapin, III:\
        :sd=/usr/spool/theobald:\
        :lp=/dev/null:\
        :pl#63:pw#85:\
        :mx#0:\
        :sh:sf:\
        :lf=/usr/adm/lpd-errs:\
        :if=/usr/local/bin/myif:\
        :of=/usr/local/atalk/etc/ofpap:

nazwa drukarki dla użytkowników Linux-a

Pierwsza linia definiuje trzy logiczne nazwy, które nie muszą mieæ żadnego podobieñstwa do nazw, jakie chcesz nadaæ tej drukarce w kliencie AppleShare. Dlatego nazwałem ją lp, ponieważ jest to nazwa stosowana w wiêkszości UNIX-ów. Inne nazwy stosujê tylko po to, żeby wiedzieæ co to właściwie za drukarka.

katalog zadañ

Potem musisz mieæ katalog zadañ, gdzie demon bêdzie składował zadania. Ja nazwałem swój katalog zadañ /usr/spool/theobald w tej samej hierarchii co katalog poczty.

Pingo$ ls -l
drwxrwxr-x   2 root     mail         1024 Feb  8 08:46 mail
drwxr-xr-x   2 root     mail         2048 Feb  8 17:23 mqueue
drwxrwxr-x   5 news     news         1024 Sep  1  1994 news
drwxrwxr-x   2 root     lp           1024 Feb  9 13:15 theobald

Stwórz go używając mkdir a potem ustaw właściciela (root), grupê (lp)

Pingo$ chown root.lp theobald

i prawa dostêpu

Pingo$ chmod 775 theobald

Potem stworzyłem dwa pliki: lock i status w tym katalogu:

Pingo$ cd theobald
Pingo$ touch lock; chown root.root lock; chmod 004 lock
Pingo$ touch status; chown root.root status; chmod 664 status

teraz możesz zdefiniowaæ ten katalog jako katalog zadañ jak ja to zrobiłem w linii 2.

urządzenie drukarki

Jeśli twoja drukarka jest lokalną drukarką dołączoną do urządzenia takiego jak/dev/lp1, to to jest urządzenie, którego potrzebujesz. Użyjesz mknod, aby utworzyæ to urządzenie jeśli go jeszcze nie ma. Dla drukarki w AppleTalk nie chcesz właściwie drukowaæ do żadnego urządzenia, ale wysłaæ zadanie do tej drukarki używając programu pap z katalogu /usr/local/atalk/bin. Zrobi siê to przy pomocy filtra psf, który uruchomi program pap, aby mieæ dostêp do drukarki. Dlatego, po tym jak zadanie zostało wysłane do LaserWriter, jest ono ciągle w Linux-ie, ponieważ demon drukowania lpd ma na samym koñcu wysłaæ to zadania na urządzenie. Dlatego zdefiniujemy urządzenie /dev/null jako urządzenie drukarki, które wyśle twoje zadanie w próżniê (bo chcesz mieæ tylko to co siê pojawiło na drukarce AppleTalk, prawda?). Dlatego w trzeciej linii wpiszemy :lp=/dev/null:\. Przeczytaj stronê podrêcznika systemowego na temat psf, jeśli masz wiêcej niż jedną drukarkê AppleTalk i jeśli masz problemy z używaniem urządzenia /dev/null jako urządzenia drukarki.

rozmiar strony, maksymalny rozmiar pliku i nagłówek

Użyj pól pl i pw dla określenia długości strony (linie) i szerokości (znaki). Polem mx możesz zdefiniowaæ maksymalny rozmiar pliku drukowanego. Jeśli plik jest wiêkszy, demon drukarki obetnie go, albo odmówi drukowania. Jeśli ustawisz tê wartośæ na 0 (mx#0), oznacza to, iż można drukowaæ pliki o nieograniczonych rozmiarach. Uważaj, bo przypadkowo papier może siê skoñczyæ jeśli nikt siê nie bêdzie o to troszczyæ. A twoja głodna drukarka bêdzie wołaæ o papier ! Tak wiêc radzê nie ustawiaæ pola mx na 0 jeśli skoñczyłeś już testowaæ i wszystko jest w porządku.

Polem sh możemy zabroniæ drukowania strony początkowej (z identyfikatorem właściciela itp.)

Polem sf możemy zabroniæ drukowania feed forms.

zapisywanie błêdów

Ja zdefiniowałem do tego celu plik /usr/adm/lpd-errs. Bêdziesz musiał stworzyæ ten plik samemu (np. poleceniem touch /usr/adm/lpd-errs)

filtry

To jest ważne ! Jak już to opisałem, twoje zadanie zostanie wysłane do drukarki AppleTalk tylko jeśli zainstalujesz odpowiedni filtr, który uruchomi program, pap. Pakiet netatalk używa konceptu hackerskiego, używając filtru psf, ale z różnymi dołączeniami do niego. psf analizuje nazwê tego dołączenia, aby dowiedzieæ siê, czy ma uruchomiæ pap jeśli podłañcuch jest w nazwie dołączenia, i odwróciæ kolejnośæ drukowania jeśli w nazwie jest rev. Spójrz na to wydając polecenie:

Pingo$ ls -l /usr/local/atalk/etc
lrwxrwxrwx   1 root     root            3 Feb  8 14:44 ifpap -> psf
lrwxrwxrwx   1 root     root            3 Feb  8 14:44 ifpaprev -> psf
lrwxrwxrwx   1 root     root            3 Feb  8 14:44 ofpap -> psf
-rwxr-xr-x   1 root     root        49299 Feb  8 14:44 papd
-rw-r--r--   1 root     root           35 Feb  9 13:48 papd.conf
-rwxr-xr-x   1 root     root        11395 Feb  8 14:44 psf
lrwxrwxrwx   1 root     root            3 Feb  8 14:44 tfpap -> psf
lrwxrwxrwx   1 root     root            3 Feb  8 14:44 tfpaprev -> psf
Pingo$ 

Tak wiêc filtr o nazwie ifpap uruchomi pap, ifpaprev odwróci kolejnośæ stron i uruchomi pap. Zamienia on zwykły tekst na PostScript, tak żebyś nie skoñczył na komunikacie z błêdem.

Jedyny filtr jaki musisz zainstalowaæ to of:

        :of=/usr/local/atalk/etc/ofpap:

gdzie /usr/local/bin/myif jest prostym skryptem powłoki, który pozwala mi na przerywanie linii w tekście, które zostały zapisane programem, który automatycznie łamie linie (bp. textedit). Niestety filtr psf nie robi nic takiego i ignoruje ustawienia szerokości papieru. Ja napisałem swój własny filtr linebreak.c, który robi to dla mnie i umieśæ nastêpujące linie w "myif":

#!/bin/sh
/usr/local/bin/linebreak $* | /usr/local/atalk/etc/ifpap $*

Jeśli w ten sposób ustawisz filtr tekstowy, to linbreak bêdzie uważał tylko na szerokośæ strony (ustawioną pw), podczas gdy ifpap (psf) sprawdza tylko długośæ. Wygląda na to, że psf zakłada, że pierwsza linia to 0, tak wiêc ustaw pl#63 jeśli chcesz mieæ 64 linii na stronie.

Jeśli nie chcesz łamania linii, to po prostu umieśæ liniê:

        :if=/usr/local/atalk/etc/ifpap:\

Teraz zapisz swój nowy printcap. Jeśli spróbujesz teraz coś wydrukowaæ, dowiesz siê, że jeszcze nie działa, wiêc czytaj nastêpny paragraf.

Jak wspomniałem wcześniej, UNIX-owa nazwa drukarki w printcapie nie ma odpowiednika dla nazwy drukarki w AppleTalk. Musisz stworzyæ plik .paprc w swoim katalogu zadañ, który bêdzie zawierał adres drukarki w AppleTalk. Jest to tylko jedna linia. Zauważ, że nie musiałem umieszczaæ nazwy drukarki w cudzysłowia w tym pliku, ale inni piszą mi, że u nich to działało tylko z cydzysłowami. To spróbuj najpierw bez cydzysłowów:

Pingo$ cat /usr/spool/theobald/.paprc
Theobald Chapin, III:LaserWriter@VLSB

To teraz możesz zaczynaæ.

Jeśli dostaniesz komunikat o błêdzie jak np. "Turing:LaserWriter@Tech Support": NBP wtedy spróbuj z cudzysłowami. Może byæ też tak, że musisz wstawiæ tylko nazwe przed dwukropkiem w cudzysłowa, tak: "Theobald Chapin, III":LaserWriter@VLSB. Jeśli masz jeszcze jakieś problemy, to myśl i kombinuj ;) NIe znam żadnego uniwersalnego sposobu na rozwiązanie tego problemu.

Wiêcej na temat hackowania i różnych obejśæ z filtrami znajdziesz w sekcji Znane problemy.

3.2 Przetestuj drukarkê.

Najpierw sprawdź czy demon drukarki jest rzeczywiście uruchomiony:

Pingo$ ps -xa | grep lpd
   45  ?  SW    0:00 (lpd)
  346 pp0 D     0:00 grep lpd
Pingo$ 

Spróbuj wydrukowaæ plik w PostScripcie i plik tekstowy, żeby siê przekonaæ, że wszystko działa. Przypuszczalnie musisz zrestartowaæ demona poleceniem lpc. Uruchom lpc i napisz restart lp, down lp i up lp. Potem sprawdź status:

lpc> status
lp:
        queuing is enabled
        printing is enabled
        no entries
        no daemon present
lpc> 
lpc> quit

Teraz wydrukuj swój plik poleceniem

Pingo$ lpr -P lp filename

Jeśli wszystko jest w porządku, to plik status w katalogu zadañ powienien teraz zawieraæ najświeższe informacje na temat twojej drukarki:

Pingo$ cat /usr/spool/theobald/status
job: Paul; status: busy; source: LocalTalk
Pingo$ 

3.3 Skojarz tê drukarkê z jakąś nazwą dla AppleTalk.

Jeśli teraz pójdziesz do Mac-a i spróbujesz wybrac swoją nową drukarkê dowiesz siê, że pokaże siê ona z nazwą twojego serwera Linux-owego. To może nie byæ zbyt zadowalające, dlatego musisz stworzyæ, albo wyedytowaæ plik papd.conf w katalogu etc AppleTalk, /usr/local/atalk/etc/papd.conf (przeczytaj "man papd" jeśli chcesz znaæ wiêcej szczegółów). Minimum tego co musisz zrobiæ to umieszczenie w tym pliku nazwy jaką chcesz nadaæ drukarce, a na koñcu dopisz :\ tak jak w printcap-ie. W drugiej linii podajesz nazwê jaką ta drukarka ma w Linux-ie opcją pr. Mój plik wygląda tak:

Pingo$ cat /usr/local/atalk/etc/papd.conf
Pingo Mac LaserWriter:\
        :pr=lp:
Pingo$

Oznacza to, że (domyślna) zmienna lp zawiera nazwê: Pingo Mac LaserWriter dla klienta AppleShare. Dowiesz siê również, że teraz użytkownik na Mac-u może drukowaæ bezpośrednio na drukarce Theobald Chaplin III jak i poprzez Linux-a, gdzie nazwa drukarki to Pingo Mac LaserWriter. Dla mnie jest ważne, aby móc drukowaæ bezpośrenio na tej drukarce, a podczas pracy na Mac-u drukowanie poprzez Linux-a wydaje siê o wiele szybsze, ponieważ Linux zkolejkuje zadanie i zniknie ono natychmiast z mojego desktopu.

Jeśli chcesz zarejestrowaæ swoją drukarkê w jakiejś strefie AppleTalk (nie w domyślnej strefie), po prostu podajesz tê strefê wraz z rozszerzeniem @nazwa_strefy w pliku papd.conf:

MotorsLab@EEAP:\
        :pr=ee3rd:

3.4 Jaka jest różnica miêdzy lokalną drukarką podłączoną do komputera Linux-owego?

Ta sekcja nie jest jeszcze całkiem gotowa !!!

/etc/princap:
lp:lp=/dev/lp1:sd=/usr/spool/lp1:sh

/usr/local/atalk/etc/papd.conf:
HP LJIIIp:\
        :pr=lp:\
        :pd=/usr/local/atalk/etc/HP_LaserJet_IIIP.ppd:

Sprawdź szczegóły na stronie Używanie ghostscript-a wraz z Netatalk.


Następna strona Poprzednia strona Spis treści