Drucken unter Linux

English Version
Ghostscript bauen CUPS-Configurieren Samba-Printserver einrichten


Drucken unter Linux ist eine haarige Angelegenheit, besonders, wenn man einen Windows-GDI-Drucker sein eigen nennt und auch noch den Parallel-Port unter Linux problemlos ansprechen will, was sich als nicht unbedingt einfach herausstellt. Die Informationen habe ich zum Teil selber herausgefunden, zum Teil im Internet zusammengetragen und sodann das richtige herausgesiebt. In den vielen Mailing-Listen wird man sehr oft fündig: nach langem Suchen. Das möchte ich Euch ersparen. In meinen folgenden Ausführungen beziehe ich mich auf SuSE Linux 7.2 und Ghostscript 5.50.

Ich setze rudimentäres UNIX-Wissen voraus. UNIX ist nämlich geil *schmunzel*

Bei Fragen: Mail!

Beim Entpacken von *.tar.gz-Files, sprich "TARBALLS", empfehle ich den Befehl tar -zvxf *.tar.gz zu verwenden. Der Stern ist durch den Namen der Datei zu ersetzen. Beim Entpacken von *.tar.bz2-Files empfehle ich den Befehl tar -jvxf *.tar.bz2 zu verwenden.

Notwendige Requisiten:

Die Lexmark-Ghostscript-Sachen könnt ihr hier runterladen: lxm3200.sourceforge.net

Ich habe compilierfertige TARBALLS gebaut:
gs5.50-Source+lxm32-treiber mit Patch f. Lexmark Z12 u. Lexmark Z31

gs7.05-Source+lxm32-treiber OHNE Patch

GS-lxm3200-Treiber mit Patches f. Lexmark Z12 und Lexmark Z31

Den Patch für Lexmark Z12 hat Boer Attila gebaut. Jenen für Lexmark Z31 Tomas Groth.

Special: Gimp-Print 4.3.4 LExmark 3200 Printer driver

Nun geht wie folgt vor:

Ghostscript bauen CUPS-Configurieren Samba-Printserver einrichten
Ghostscript-Installation:

1. Installiert das Ghostscript auf der Linuxkiste.

2. Entpackt lxm3200-0.4.1-gs5.50-bin.tar.gz in ein temporäres Verzeichnis eurer Wahl.

3. Setzt folgende Softlinks:


Wenn das Setzen der Links nicht hinhaut, legt gegebenenfalls die Unterdirectories /usr/share/fonts und /usr/share/fonts/default von Hand mittels mkdir an.

4. Wechselt in das Verzeichnis des GhostscriptBinaries mit dem einkompilierten Lexmark-Treiber und führt das install-Script aus.

5. Mit gs -h|grep -lxm kommt der einkompilierte Druckertreiber von Ghostscript ans Tageslicht.

6. Führt folgendes Kommando aus: gs -q -dNOPAUSE -dSAFER -sOutputFile=/tmp/lexmark.test -sDEVICE=lxm3200 /usr/share/doc/packages/ghostscript/examples/colorcir.ps quit.ps aus. Eine lange Wurscht an Meldungen vom Ghostscript huscht über den Bildschirm. SOdann führt cat /tmp/lexmark.test>/dev/lp0 (ggfs. anpassen!!!) aus. Der Lexmark Drucker müsste jetzt sehr rege werden.

Hinweise zur Kompilierung: die Datei lxm3200-0.4.1-gs5.50-src.tar.gz entpacken. ein Quellpaket von GS5.50 besorgen und entpacken. Die README-Datei des lxm3200-Treibers öffnn udn offen lassen. ISt eine Sehr gute Anleitung zum Kompilieren. Den Quellcode "gdevlx32.c" ins Stamm-VErzeichnis von gs5.50 (ein ./src in anderen GS-Versionen) kopieren. Die Zeilen ab ab Lexmark 3200 device bis zu "add everything up to here, this line excluded" in die Datei contrib.mak von gs5.50 stellen. ACHTUNG: Die Einrückungen mit Tabulator machen, am besten im vi/emacs!!. in der Datei unix-gcc.mak an die Zeile dev6 (od. ähnl.) "lxm3200.dev" anhängen, genaue Anleitung steht in der Datei README.

Die Schwierigkeiten fangen erst beim Kompilieren an: man muss eine aktuelle libpng und eine aktuelle libjpg beisteuern. Diese Libraries entpackt man und kopiert sie am besten ins stammverzeichnis von gs5.50, aber ohne die versionsnummern. Im Falle der libpng 1.2.1 muss man noch in bisschen Handarbeit in der libpng.mak tätigen: die Versionsnummern bekanntmachen, sonst findet das script keine Regel zum Bauen der Libpng fürs GS. In der unix-gcc.mak gibt man die Libraries gemäss der Anleitung zur Kompilierung bekannt.

Mit make -f unix-gcc.mak startet man die Kompilierung. Der Compiler wird bei mehreren Quelltexten meckern und mit einem ERROR aussteigen. In diesem Fällen habe ich mir geholfen, indem ich in den entsprechenden Files über einer zeile #include "time_.h" eine zeile #include < time.h > hinzugefügt habe. Das hat diese Compiler-Fehler wirksam abgestellt.

So soll die unix-gcc.mak-Datei an der Stelle aussehen, an der man die libpng, libjpeg und libz zur Kompilierung anmeldet:


So gibt man eine libpng in der libpng.mak bekannt, sodass der make-Befehl eine Regel zum Bauen der libpng findet:


Ad GNU-Ghostscript-7.05:
Bei dieser Version von Ghostscript verläuft die Compilierung reibungsloser. Um den Lexmark 3200 Treiber einzubinden, muss man:



Falls diese Sache nicht gleich so hinhaut wie sie hinhauen soll: STellt den Parallel-Port auf den Modus EPP. Ich habe festgestellt, dass mein parport_probe dann gleich viel freudiger den Drucker erkannt und in /proc/parport/0/autoprobe eingetragen hat. Mit tunelp /dev/lp0 -s -qon könnt ihr den Status des Druckers verfolgen.

Ghostscript bauen CUPS-Configurieren Samba-Printserver einrichten
CUPS-Printer Configuration

Mit dem cups-Web Interface auf http//localhost:631 lässt sich der Drucker dann bequem für den cups-daemon einrichten. Folgende Schritte sind dafür notwendig:
1. Das WebInterface beschränkungsfrei zugänglich machen: Ich bin zwar für gesunde Paranoia, aber beim Experimentieren stören Anmeldeprozeduren.
Die Auszüge aus der cupsd.conf-Datei sind gekürzt, von Kommentaren befreit.

Unbehandelte cupsd.conf-datei an der STelle Authentication

Behandelte cupsd.conf-datei an der Stelle Authentication. ICh habe allow all gemacht und alle Auth-Types rauskommentiert.

RemoteRoot auf ROOT stellen, damit erleichtert man sich einiges!

Nach Durchführen dieser Arbeiten den cupsd mit rccups restart neu starten.
2. im Webinterface die Druckereinrichtung durchführen.
Schritt 1:


Schritt 2:


Schritt 3:


Schritt 4:


Schritt 5:


Schritt 6:


Schritt 7:


Diese sieben Schritte kann man für jeden beliebigen Drucker in genau dieser Reihenfolge durchführen.

Ghostscript bauen CUPS-Configurieren Samba-Printserver einrichten
Samba-Druckerfreigabe für Windows-Clients

Für das Drucken voneinem Windows Client aus auf den Samba-Drucker benötigt man lediglich einen Druckertreiber, der PostScript erzeugt: Beispielsweise aus der WIndows-internen Druckerdatenbank den Treiber für den Drucker Apple Color LW 12/660 PS.

Hier kann man tricksen: Zu allererst erzeugt man eine Installation dieses Druckers auf dem W2K-Client, in meinem Beispiel eine Windows 2000 Prof. Kiste. Sodann geht man auf die Suche nach den Drucker-Treiber-Dateien in folgendem Pfad: C:\WINNT\system32\spool\drivers\w32x86\[1 .. n], wobei [1 .. n] für den Namen eines Unterverzeichnisses steht, in dem die Treiberdateien untergebracht sind, und stellt diese in ein freigegebenes Verzeichnis auf einer Samba-Share (z.b. Treiberreferenz), die auf dem Linux-Printserver liegt. In Win98 findet man die Druckertreiber- Dateien unter C:\Windows\system.Sodann besorgt man sich die Datei ntprint.inf aus C:\WINNT\inf, und stellt diese ebenfalls in das erwähnte Verzeichnis (z.b. Treiberreferenz).

Auf der Linuxkiste macht man folgendes:
1. Ein Verzeichnis /usr/share/samba/print mittels mkdir anlegen.
2. in der smb.conf Freigaben erstellen: für den Druckertreiber, für den Drucker. in [global]: hinzufügen.
Die Freigabe für den Druckertreiber:
[PRINTER$]
Die Freigabe für den Drucker:
[drucker]

Hiernach wechselt man in das Verzeichnis "Treiberreferenz". Mit dem Befehl grep "Apple Color LW 12/660 PS" ntprint.inf testen, ob der Treiber tatsächlich vorhanden ist. ALternative Dateien dafür: oem[X].inf!! Kann sein, dass der Suchbefehl nichts findet. Wenn man dann mit LESS die ntprint.inf anschaut, und man erhält Buchstabensalat, gefüllt mit der Kombination "^@", dannwechselt man am besten zur Windows-Box, öffnet die datei ntprint.inf im Verzeichnis "Treiberreferenz" (oder anders, wie mans eben nennen will!) mit dem WordPad und speichert sie wieder ab. Im Speichern-Dialog fragt das WordPad nach der Codierung der Datei: ASCII anwählen!!!! Anschliessend zur Linux Box wechseln, nochmal den grep durchführen und man findet die Treiberdefinition verlässlich, wenn sie in dieser Datei steckt!

Ist der Treiber in ntprint.inf, dann mache man folgendes Kommando:
make_printerdef ntprint.inf "Apple Color LW 12/660 PS" > printers.def
Statt ntprint.inf kann auch eine oem[X].inf-Datei angeführt werden, wenn in einer solchen die benötigte Treiberdefinition steht.

Nach diesen Arbeitsschritten müssten im Verzeichnis "Treiberreferenz" folgende Dateien stehen:

Diese Dateien kopiert man in das Verzeichnis /usr/share/samba/print. Von diesem Verzeichnis holt sich der Client nämlich im Bedarfsfall automatisch den Treiber für den Drucker.

Beachten: der make_printerdef-Befehl wirft beim Erstellen der PRinter-Definition automatisch eine Liste der Dateien aus, die man in das Treiber-Verzeichnis von Samba (z.b. /usr/share/samba/print) zu stellen hat!

Mit rcsmb restart den Samba Server neu starten, zum W2K-Client gehen und in der Netzwerk umgebung den freigegebenen Drucker "drucker" anklicken. Man wird von Windows gefragt, ob man den Drucker einrichten möchte, und der Rest geht automatisch.

Der Clou an der Sache: Man kann am Server irgend einen Drucker hängen haben: also auch den Lexmark 3200. Ghostscript wandelt das Postscript automatisch in die Sprache dieses Druckers um.