Drucker: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Keine Bearbeitungszusammenfassung
(46 dazwischenliegende Versionen von 15 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=== Was ist CUPS? ===
{{veraltet}}
Direkt von der CUPS-Internetseite: "Das Common Unix Printing System (CUPS) ist eine plattformübergreifende Drucker-Lösung für alle UNIX-Umgebungen. Es basiert auf dem "Internet Printing Protocol" und stellt komplette Drucker-Dienste für die meisten Postscript- und Raster-Drucker bereit. CUPS steht unter der GNU GPL ...". [http://www.cups.org] Obwohl es auch andere Drucker-Pakete wie LPRNG gibt, ist CUPS sehr beliebt und relativ einfach zu nutzen. Es ist das Standard-Drucksystem von Arch Linux und vieler anderer Linux-Distributionen.


Direkt von der CUPS-Internetseite: "Das Common Unix Printing System (CUPS) ist eine plattformübergreifende Drucker-Lösung für alle UNIX-Umgebungen. Es basiert auf dem "Internet Printing Protocol" und stellt komplette Drucker-Dienste für die meisten Postscript- und Raster-Drucker bereit. CUPS steht unter der GNU GPL ...". Obwohl es auch andere Drucker-Pakete wie LPRNG gibt, ist CUPS sehr beliebt und relativ einfach zu nutzen. Es ist das Standard-Drucksystem von Arch Linux und vieler anderer Linux-Distributionen.
{{installation
|name=CUPS
|repo=extra
|paket=cups
|zusatz=ghostscript
|zusatzinfo=Compiler für PostScript}}


=== Problemlösung bei CUPS und die CUPS-Komponenten ===
Außerdem benötigt man eines der folgenden Treiber-Pakete je nach dem, was für Drucker konfiguriert werden. Im Zweifelsfall ist Gutenprint eine gute Wahl:


Um den Druck zum Laufen zu bringen, sollte man am besten den LogLevel in "/etc/cups/cupsd.conf" so einstellen:
* '''gutenprint''' - Eine Sammlung hochwertiger Treiber für Canon, Epson, Lexmark, Sony, Olympus und PCL Drucker, die mit Ghostscript, CUPS, Foomatic und GIMP verwendet werden können.
* '''foomatic''', '''foomatic-db''', '''foomatic-db-engine''', '''foomatic-db-ppd''' und '''foomatic-filters''' - Foomatic ist ein Datenbank-basiertes System, um freie Drucker-Treiber mit gewöhnlichen Spoolern unter Unix zu integrieren.
* '''foomatic-filters''' zu installieren sollte beim lösen verschiedener Probleme helfen können, wenn der CUPS-Server im error.log berichtet: "stopped with status 22!".
* '''hplip''' - Ein HP Linux Inkjet Treiber. Unterstützt DeskJet, OfficeJet, Photosmart, Business Inkjet und einige LaserJet Modelle.
* '''splix''' - Eine Treibersammlung für Drucker, welche mit SPL (Samsung Printer Language) angesteuert werden, vornehmlich Samsung.
* '''cups-pdf''' - Ein nettes Paket, das es erlaubt, einen virtuellen PDF-Drucker einzurichten, der alles, was an ihn geschickt wird, in eine PDF-Datei verwandelt.


   LogLevel debug2
Wenn das System mit einem Netzwerk-Drucker verbunden ist, der das [[Samba]]-Protokoll verwendet, oder als Drucker-Server für Windows-Klienten dienen soll, sollte man Samba installieren:
 
   pacman -S samba
 
=== Die Drucker-PPD herunterladen ===
Eine PPD-Datei ist eine Informationsdatei für PostScript-Drucker (meist vom Hersteller des Druckers bereitgestellt), in der alle relevanten Informationen über den Drucker (Druckertyp, unterstützte Schriften, Auflösung, verwendeter PostScript-Level, Papierformat, etc.) verzeichnet sind.
 
Abhängig vom Drucker, ist dieser Schritt vielleicht überflüssig und kann übersprungen werden, da die Basisinstallation von CUPS bereits eine ganze Reihe von PPD-Dateien mit sich bringt. Darüber hinaus enthalten {{ic|foomatic-filters}}, {{ic|gutenprint}} und {{ic|hplip}} weitere PPD-Dateien, die automatisch von CUPS erkannt werden.
 
Falls die PPD-Datei des eigenen Drucker nicht in einem der vorgenannten Pakete zu finden sein sollte, so kann man auf
[http://www.openprinting.org/printers] nachsehen. Dort wählt man den Hersteller und das Modell des Druckers aus. Dann muss man diese Datei in den CUPS-Ordner kopieren, so dass die Datei erkannt werden kann.
 
cp your_printer.ppd /usr/share/cups/model/
 
Wenn das Druckermodell auf der Seite nicht zu finden ist, kann man es mit ähnlichen Modellen versuchen, oder generische Treiber verwenden.
 
== Konfiguration ==
Es gibt viele Möglichkeiten, den CUPS-Server einzurichten: Über die Kommandozeile, über bereitgestellte Programme der Desktopumgebung oder über die mitgelieferte Webschnittstelle des Servers. Diese Anleitung bezieht sich auf letzteres.
 
=== Module laden ===
Zuerst müssen die [[Kernel Module]] geladen werden. Je nachdem, ob man einen USB- oder einen Parallel-Drucker verwendet, sind diese unterschiedlich.
 
Seit Version 1.4.x verwendet CUPS ein neues USB-Backend. Sollte hingegen eine CUPS-Version vor 1.4.x oder der Kernel 2.4.x verwendet werden, so sind Module zu laden. Bei Verwendung einer älteren CUPS-Version mit Kernel 2.6.x ist das Modul {{ic|usblp}} zu laden. Bei Verwendung des Kernels 2.4.x muss das Modul {{ic|printer}} geladen werden.
 
modprobe usblp    # bei Kernel 2.6.x
modprobe printer  # bei Kernel 2.4.x
 
Falls man einen selbstkompilierten Kernel verwendet, muss man zuvor gegebenenfalls das Modul {{ic|usbcore}} laden. Wenn alle Module geladen wurden, kann man den Drucker anschließen. Es sollte dann etwa Folgendes ausgegeben werden, wenn man sich das Logfile ansieht.


Dann kann man die Ausgabe von "/var/log/cups/error_log" mit diesem Befehl betrachten:
$ tail /var/log/messages.log
Feb 19 20:17:11 kernel: printer.c: usblp0: USB Bidirectional
printer dev 2 if 0 alt 0 proto 2 vid 0x04E8 pid 0x300E
Feb 19 20:17:11 kernel: usb.c: usblp driver claimed interface cfef3920
Feb 19 20:17:11 kernel: printer.c: v0.13: USB Printer Device Class driver


  tail -n 100 -f /var/log/cups/error_log
Wenn man einen Parallel-Drucker nutzen will, ist die Einrichtung fast genauso. Benutzer des Kernels 2.6.x müssen als erstes folgendes ausführen:


Die Buchstaben auf der linken Seite der Ausgabe stehen für:
modprobe lp


D = Debug
Danach können sowohl die Nutzer eines 2.4.x-Kernels, als auch die eines 2.6.x-Kernels ausführen:
E = Error (Fehler)
I = Information


usw.
modprobe parport
modprobe parport_pc


Die folgenden Dateien können sich ebenfalls als hilfreich erweisen:
Nun überprüft man die Einstellungen.


  /var/log/cups/page_log (spuckt jedesmal einen neuen Eintrag aus, wenn ein Druckvorgang erfolgreich war)
tail /var/log/messages.log
  /var/log/cups/access_log (erstellt eine Liste aller cupsd http1.1. Server-Aktivitäten)


Natürlich ist es wichtig zu wissen, wie CUPS funktioniert, wenn Du deine Probleme lösen willst. Das läuft etwa so:
Es sollte folgendes zu sehen sein.  
1. Eine Anwendung schickt eine .ps-Datei (also Postscript - eine Skriptsprache, die festlegt, wie die Seite aussehen wird) an CUPS, wenn Du "Drucken" wählst (99 % aller Anwendungen machen dies).
2. CUPS schaut dann in die PPD-Datei deines Druckers, und reimt sich zusammen, welche Filter benötigt werden, um die .ps-Datei in eine Sprache zu übersetzen, die der Drucker versteht (etwa PJL oder PCL). Normalerweise benötigt es GhostScript.
3. GhostScript übernimmt die Eingabe, und überlegt, welche Filter es verwenden soll, wendet diese dann an und konvertiert die .ps-Datei in ein Format, das vom Drucker verstanden wird.
4. Dieses wird dann an eine Schnittstelle übersandt. Wenn etwa Dein Drucker über USB angeschlossen ist, wird die USB-Schnittstelle genutzt.


Drucke ein Dokument und betrachte "error_log", um ein genaueres Bild vom Druckvorgang zu bekommen.
[] lp0: using parport0 (polling)


==== Problem1: kein (fehlerfreier) Ausdruck von Textdateien per lp oder lpr ====
=== Service starten ===
Beschreibung:
Textdateien werden aus dem Terminal heraus überhaupt nicht oder nur mit
Darstellungsfehlern (sog. Treppeneffekt) gedruckt


==== Problem2: kein Ausdruck von Textdateien unter XFCE4 ====
Ab der Version 1.6.x benötigt CUPS unbedingt das Programmpaket ''avahi''.
Beschreibung:
* Die Installation von ''avahi'' ist über [[pacman]] aus den offiziellen Repos möglich.
Trotz Einstellung des XFCE-Drucksystems auf CUPS (Menü->Einstellungen->Drucksystem-Einstellungen)
* Eine Bearbeitung der ''avahi''-Konfigurationsdateien ist nicht notwendig.
ist das Drucken aus Texteditoren (z.B.mousepad) nicht möglich
* Des weiteren muss ''avahi'' vor CUPS gestartet werden.


'''Lösung für 1 & 2:'''
Damit beide Dienste automatisch gestartet werden, bitte


"a2ps" installieren (a2ps is an Any to PostScript filter)
  systemctl enable avahi-daemon.service
    # pacman -S a2ps
  systemctl enable org.cups.cupsd.service
CUPS-Daemon neustarten
    # /etc/rc.d/cups restart


=== CUPS installieren ===
Ein manueller Start kann dann per


Du wirst auf jeden Fall CUPS und GhostScript benötigen:
  systemctl start avahi-daemon.service
  systemctl start org.cups.cupsd.service


  pacman -S cups ghostscript
=== CUPS HTTP Schnittstelle für lokale Drucker ===
Sobald der Server gestartet ist, ruft man die Webschnittstelle auf: [http://localhost:631 http://localhost:631] Hier klickt man auf den Link, um Drucker hinzuzufügen. Der CUPS-Server sucht automatisch nach den angeschlossenen Druckern; den, der konfiguriert werden soll, klickt man an. Nun kann man dem Drucker einen Trivialnamen geben und eine Beschreibung hinzufügen. Zuletzt wählt man den Druckertreiber bzw. eine PPD-Datei aus und stellt die Standardeinstellungen ein. Der Drucker ist nun eingerichtet und bereit zum Drucken. Man sollte nun eine Testseite drucken, um zu überprüfen, ob alles funktioniert. Dies kann man über das nun offene Menü des Druckers tun oder über die Kommandozeile.


cups ist die eigentliche CUPS software.
lpr -P <Drucker> datei
ghostscript ist ein Übersetzungprogramm für die Postscript-Sprache.


Außerdem benötigst Du eines der folgenden Treiber-Pakete - hängt davon ab, welchen Drucker Du besitzt. Im Zweifelsfall installiere gutenprint:
{{ic|<Drucker>}} ist hierbei der gewählte Trivialname, {{ic|datei}} eine zuvor erstelle Textdatei. Sofern man nur einen Drucker eingerichtet hat, kann {{ic|-P <Drucker>}} auch weggelassen werden.


"gutenprint" - Eine Sammlung hochwertiger Treiber für Canon, Epson, Lexmark, Sony, Olympus und PCL Drucker, die mit Ghostscript, CUPS, Foomatic und GIMP verwendet werden kann.
== CUPS-PDF als virtuellen Drucker einrichten ==
Zuerst muss das entsprechende Paket installiert werden.


"foomatic", "foomatic-db", "foomatic-db-engine", "foomatic-db-ppd" und "foomatic-filters" - Foomatic ist ein Datenbank-basiertes System, um freie Drucker-Treiber mit gewöhnlichen Spoolern unter Unix zu integrieren.
pacman -S cups-pdf
foomatic-filters zu installieren, sollte Deine Probleme lösen, wenn das CUPS error.log berichtet: "stopped with status 22!".


"hplip" - HP Linux Inkjet Treiber. Unterstützt DeskJet, OfficeJet, Photosmart, Business Inkjet und einige LaserJet Modelle.
Über das Webinterface wird der neue Drucker als ''CUPS-PDF (Virtual PDF Printer)'' angelegt. Dazu klickt man auf „Verwaltung“ und dort auf den Button „Drucker hinzufügen“ im Abschnitt „Drucker“. Im nächsten Dialog wählt man „Local Printers: CUPS-PDF (Virtual PDF Printer)“ aus. Klickt man auf „Fortsetzen“ sieht man im darauffolgenden Dialog als URI des Druckers die Angabe {{ic|cups-pdf:/}}. Weiter geht es mit der Auswahl des Druckerherstellers. Hier wählt man „Generic“ aus der Herstellerliste. Als Model wählt man „Generic CUPS-PDF Printer (en)“. Um die neue Konfiguration zu aktivieren, muss der CUPS-Server neu gestartet werden.


"splix" - Treibersammlung für Drucker, welche mit SPL (Samsung Printer Language) angesteuert werden, vornehmlich Samsung.
systemctl restart org.cups.cupsd.service


"cups-pdf" - Ein nettes Paket, das es erlaubt, einen virtuellen PDF-Drucker einzurichten, der alles, was an ihn geschickt wird, in eine PDF-Datei verwandelt.
Zuvor kann man in der Datei ''/etc/cups/cups-pdf.conf'' im Abschnitt „CUPS-PDF output directory“ Einfluss darauf nehmen, in welches Verzeichnis die erzeugten PDF-Dateien später abgelegt werden sollen.


Wenn Dein System mit einem Netzwerk-Drucker verbunden ist, der das [[Samba]]-Protokoll verwendet, oder als Drucker-Server für Windows-Klienten dienen soll:
== Problemlösungen ==
Um den Druck zum Laufen zu bringen, sollte man am besten den LogLevel in {{ic|/etc/cups/cupsd.conf}} so einstellen:


   pacman -S samba
   LogLevel debug2


=== Die Drucker-PPD herunterladen ===
Dann kann man die Ausgabe von {{ic|/var/log/cups/error_log}} mit diesem Befehl betrachten:


Abhängig von Deinem Drucker, ist dieser Schritt vielleicht überflüssig und kann übersprungen werden, da die Basis-installation von CUPS bereits eine ganze Reihe von PPD(= Postscript Printer Description)-Dateien mit sich bringt. Darüber hinaus enthalten foomatic-filters, gutenprint und hplip weitere PPD-Dateien, die automatisch von CUPS erkannt werden.
  tail -n 100 -f /var/log/cups/error_log


Was ist eine PPD-Datei? Hier ist ein Erklärung von der Linux-Printing Internetseite: "Für jeden PostScript-Drucker stellt der Hersteller eine PPD-Datei zur Verfügung, die alle Drucker-spezifischen Informationen über dieses besondere Drucker-Modell enthält: Grundlegende Druckereigenschaften wie etwa die Frage, ob es sich um einen Farbdrucker handelt, welche Fonts und welcher PostScript-Level verwendet wird, usw., und insbesondere die Nutzer-spezifischen Optionen wie Papierformat, Auflösung, usw.".
Die Buchstaben auf der linken Seite der Ausgabe stehen für:


Um die PPD-Datei für deinen Drucker zu bekommen, gehe zu http://www.linuxprinting.org/printer_list.cgi und wähle dort den Hersteller und das Modell deines Druckers aus. Dann musst Du diese Datei in den CUPS-Ordner kopieren, so dass die Datei erkannt werden kann, Wenn Du dich in dem Ordner befindest, in den Du die Datei heruntergeladen hast, kannst Du das folgende Kommando verwenden:
* D = Debug
* E = Error (Fehler)
* I = Information


  cp your_printer.ppd /usr/share/cups/model/
Die folgenden Dateien können sich ebenfalls als hilfreich erweisen:


Wenn Du dein Druckermodell auf der Seite nicht finden kannst, kannst Du es mit ähnlichen Modellen versuchen, oder generische Treiber verwenden. Suche über Google oder frage deinen Hersteller (viel Glück damit ...)
/var/log/cups/page_log (spuckt jedes Mal einen neuen Eintrag aus, wenn ein Druckvorgang erfolgreich war)
/var/log/cups/access_log (erstellt eine Liste aller cupsd http1.1. Server-Aktivitäten)


=== CUPS einrichten ===
Natürlich ist es wichtig zu wissen, wie CUPS funktioniert, wenn man ein Problem lösen will. CUPS arbeitet in etwa so:


Optionen
* Eine Anwendung schickt eine PostScript-Datei an den Server (im Regelfall ist dies {{ic|localhost}}).
* CUPS übersetzt diese Datei nun in ein Format, das vom druckerinternen Protokoll verarbeitet werden kann. Dies geschieht zum Beispiel mit Ghostscript, das über die Druckertreiber herausfindet, wie dies genau funktioniert.
* Diese Datei wird dann an die Druckerschnittstelle gesandt.


Nun, da Du CUPS installiert hast, gibt es eine Reihe von Möglichkeiten, CUPS einzurichten. Du kannst natürlich die altbewährte Kommandozeile verwenden. Daneben besitzen verschiedene DEs wie [[GNOME]] und [[KDE]] nützliche Programme, die dir bei der Druckerverwaltung helfen können. Um jedoch diesen Prozess für die größte Zahl der Nutzer möglichst einfach zu gestalten, werden wir die Internet-Schnittstelle verwenden, die CUPS bereit stellt.
In der Datei {{ic|error.log}} wird dies dokumentiert.


Bitte beachte: Wenn Du Verbindung zu einem Netzwerk-Drucker suchst, statt zu einem, der direkt mit deinem Computer verbunden ist, möchtest Du vielleicht zuerst den Abschnitt über gemeinsam genutzte Drucker lesen. Einen Drucker unter zwei verschiedenen Linux-System anzusteuern, ist ziemlich einfach und erfordert nur sehr wenig Konfigurationsarbeit. Der Austausch von Windows zu Linux und umgekehrt erfordert etwas mehr Aufwand, ist aber immer noch recht einfach.
=== Drucker fehlen in Druckdialog von GTK3 Anwendungen ===
Im Druckdialog von GTK3-Anwendungen wie Firefox, Evince usw. wird nur der Druck in eine Datei angeboten. Sämtliche in CUPS eingerichtete Drucker fehlen.


=== Kernel Module ===
Abhilfe: sudo pacman -S gtk3-print-backends


Bevor wir wir die CUPS_Internet-Schnittstelle nutzen können, müssen wir die erforderlichen Kernel-Module installieren. Die folgenden Schritte habe ich der Gentoo-Drucker-Anleitung entnommen.
=== Textdateien werden nicht gedruckt ===
Obwohl der Drucker richtig eingerichtet wurde, kann es passieren, dass Textdateien nicht korrekt aus dem Terminal oder aus dem Texteditor gedruckt werden.


==== USB-Drucker ====
Abhilfe kann hier ''a2ps'' verschaffen. Dieses Programm wandelt verschiedene Dateien in PostScript-Dateien um.
Seit Version 1.4.x verwendet CUPS ein neues USB-BAckend. Das Modul <code>usblp</code> muss für die Verwendung dieses Backends explizit entladen werden. Damit dies gleich beim Start passiert, muss in der Datei <code>/etc/rc.conf</code> im MODULES-Array der Eintrag <code>!usblp</code> hinzugefügt werden.


Sollte hingegen eine CUPS-Version vor 1.4.x oder der Kernel 2.4.x verwendet werden, so sind Module zu laden. Bei Verwendung einer älteren CUPS-Version mit Kernel 2.6.x ist das Modul <code>usblp</code> zu laden. Bei Verwendung des Kernels 2.4.x muss das Modul <code>printer</code> geladen werden.
pacman -S a2ps


modprobe usblp    # bei Kernel 2.6.x
Nach der Installation muss der CUPS-Server neu gestartet werden.
modprobe printer  # bei Kernel 2.4.x


Dies sollte man auch in das MODULES-Array in der [[rc.conf]] schreiben.
systemctl restart org.cups.cupsd.service


MODULES="[…] usblp […]"  # bei Kernel 2.6.x
=== Der Auftrag wird verarbeitet, aber nicht gedruckt ===
MODULES="[…] printer […]" # bei Kernel 2.4.x
Obwohl der Drucker korrekt konfiguriert wurde und Aufträge annimmt und diese auch als verarbeitet angezeigt werden, erhält man keinen Ausdruck.


Falls man einen selbstkompilierten Kernel verwendet, muss man zuvor gegebenenfalls das Modul <code>usbcore</code> laden. Wenn alle Module geladen wurden, kann man den Drucker anschließen. Es sollte dann etwa Folgendes ausgegeben werden, wenn man sich das Logfile ansieht.
Die Lösung für dieses Problem ist folgende:


$ tail /var/log/messages.log
Zunächst wird der CUPS-Server gestoppt.  
Feb 19 20:17:11 kernel: printer.c: usblp0: USB Bidirectional
printer dev 2 if 0 alt 0 proto 2 vid 0x04E8 pid 0x300E
Feb 19 20:17:11 kernel: usb.c: usblp driver claimed interface cfef3920
Feb 19 20:17:11 kernel: printer.c: v0.13: USB Printer Device Class driver


==== Parallel-angeschlossene Drucker ====
systemctl stop org.cups.cupsd.service


Wenn Du einen parallel angeschlossenen Drucker nutzen willst, ist die Einrichtung fast genau die gleiche. Benutzer des Kernels 2.6.x müssen als erstes folgendes eintippen:
Hiernach deinstalliert man ihn. Es sollten alle Konfigurationsdateien entfernt oder gesichert werden.
  # modprobe lp


Danach können sowohl die Nutzer von 2.4 als auch die von 2.6. eingeben:
mv /etc/cups /etc/cups.backup
  # modprobe parport
mv /var/cache/cups /var/cache/cups.backup
  # modprobe parport_pc
pacman -Rcns cups


Du kannst deine Einstellungen noch einmal mit folgendem Befehl überprüfen:
Nun installiert man den CUPS-Server neu und startet ihn wieder.
  # tail /var/log/messages.log


Dann wirst Du in etwa Folgendes sehen:
pacman -S cups
  # lp0: using parport0 (polling).
systemctl enable org.cups.cupsd.service
systemctl start org.cups.cupsd.service


=== Automatisches Laden ===
Danach muss der Drucker wieder neu eingerichtet werden.


Wahrscheinlich möchtest Du, dass Dein System die Kernel-Module beim Systemstart automatisch lädt. Dazu benutzt Du einen Texteditor deiner Wahl, öffnest die Datei /etc/rc.conf und fügst die betreffenden Module in der Zeile MODULES= () hinzu. Hier ist ein Ausschnitt aus meiner rc.conf-Datei:
Damit kann immerhin sichergestellt werden, dass keine Konfigurationsprobleme vorliegen.
MODULES=(!usbserial scsi_mod sd_mod snd-ymfpci snd-pcm-oss printer ide-scsi)


=== CUPS Daemon ===
=== 64-Bit System (x86_64-Architektur) ===  
Obwohl man alles richtig gemacht hat, kann es dennoch passieren, dass der Drucker einfach nicht druckt. Falls man die 64-Bit-Version von Arch Linux nutzt, sind evtl. noch folgende 32-Bit-Pakete von Nöten: '''lib32-glibc''', '''lib32-gcc-libs''' und '''lib32-libstdc++5'''.


Wenn die Kernel-Module installiert sind, kannst Du nun auch den eigentlichen Cups-Daemon starten. Dazu führst du folgendes Kommando aus:
Voraussetzung dazu, ist die Aktivierung des Multilib-Repos in der {{ic|/etc/pacman.conf}}; Siehe dazu [[Pacman]], den Punkt '''"Repos festlegen".'''


  # /etc/rc.d/cups start
Man kommentiert einfach das Multilib-Repo ein ("#" vor Eintrag entfernen).


Wenn Du CUPS bei jedem Neustart deines Computers automatisch laden willst (wahrscheinlich willst Du das), so musst Du es Deiner DEAMONS=() Zeile in der Datei /etc/rc.conf hinzufügen. Zum Beispiel:
[multilib]
Include = /etc/pacman.d/mirrorlist


  DAEMONS=(pcmcia syslogd klogd !fam esd mono network autofs cups crond gdm)
Danach die Datenbank aktualisieren.


=== CUPS HTTP Schnittstelle für lokale Drucker ===
pacman -Syy
Nachdem der CUPS-Daemon eingerichtet ist, können wir nun die Schnittstelle http://localhost:631 aufrufen und einen Drucker einrichten. Als erste geben wir ihm einen Namen und wählen danach die Schnittstelle, über die der Drucker mit dem Rechner verbunden ist (bei parallelen Schnittstellen ist das normalerweise LPT#1). Im nächsten Schritt wählen wir entweder einen Treiber über das Menü aus oder laden direkt unsere PPD-Datei. Nun gilt es nur noch auszuprobieren, ob der Drucker wirklich druckt, was durch einen Druck auf die Taste "Testseite drucken" im Druckermenü zu bewerkstelligen ist. Diese Methode braucht allerdings aufgrund der aufwändigen Testseite sehr viel Farbe, weshalb wir lieber eine kleine Testdatei anlegen und diese mittels


  lpr -P <Drucker> datei
Und dann die fehlenden 32-Bit-Abhängigkeiten installieren.


direkt an den Drucker senden, wobei wir <Drucker> mit dem Namen des installierten Druckers ersetzen.
pacman -S lib32-glibc lib32-gcc-libs lib32-libstdc++5


=== CUPS-PDF als virtueller Drucker ===
Danach müsste der Drucker einwandfrei funktionieren. Falls nicht - oder auch nur zur Sicherheit - kann man nochmal den CUPS-Server neu starten.


Als ersten Schritt installiert man das cups-pdf Packet.
systemctl restart org.cups.cupsd.service


pacman -S cups-pdf
===CUPS erkennt den Drucker nicht===
Viele USB-Drucker werden von CUPS (v1.5) nach wie vor als parallele Geräte angesprochen.
Sobald der Drucker beim Einstecken und Anschalten in /dev/usb/ eine Datei lp0 , lp1, oder usw. anlegt genügt ein Link direkt in /dev/


Über die lokale Webadresse http://localhost:631 erreicht man die allgemeine CUPS Administrationsmaske. Hier wird der neue Drucker als ''CUPS-PDF (Virtual PDF Printer)'' angelegt. Dazu klickt man zunächst auf ''Administration->Printers->Add Printer'' und wählt im nächsten Dialog ''Local Printers: CUPS-PDF (Virtual PDF Printer)'' aus. Klickt man auf Continue sieht man im anschliessenden Dialog als URI des Druckers die Angabe ''cups-pdf:/''. Weiter geht es mit der Auswahl des "Druckerherstellers". Hier wählt man ''Generic'' aus der Herstellerliste, klickt zum nächsten Dialog weiter und übernimmt als Model "Generic CUPS-PDF Printer (en)". Nach Wahl einiger Druckparameter ist man im nächsten Dialogs bereits mit der Installation fertig. Um die neue Konfiguration zu aktivieren, muss cups erneut gestartet werden. Zuvor kann man in der cups-pdf Konfiguration
Speichern Sie dazu folgende udev-rule unter bspw. diesem Namen /etc/udev/rules.d/10-cups_device_link.rules ab.


  /etc/cups/cups-pdf.conf
  KERNEL=="lp[0-9]", SYMLINK+="%k", GROUP="lp"


im Abschnitt ''CUPS-PDF output directory'' Einfluß darauf nehmen in welches Verzeichnis die erzeugten PDF Dateien später abgelegt werden. Danach wird cups neu gestartet
Beim neuen einstecken des USB-Kabels wird die neue Regel angewendet, und CUPS dürfte den Drucker (als parallel) im Web-Interface erkennen.


  /etc/rc.d/cups restart
Falls das nicht hilft, installieren Sie das Paket '''hal-cups-utils''' und versuchen es erneut.
Dabei ist zu beachten, dass für hal (als Abhängigkeit) aus dem AUR (temporär) ein link angelegt werden sollte.
  # ln -s /usr/include/libv4l1-videodev.h /usr/include/linux/videodev.h


==Links==
http://www.linuxprinting.org


http://www.cups.org
===Benutzer hat keinen Zugriff===
Damit ein user Zugriff auf administrative Tätigkeiten am Cups-Server (Web-Client) hat, muss er zuerst der Gruppe ''sys'' zugeordnet werden
  usermod -aG sys username


http://www.turboprint.de
===Herstellerspezifische Artikel===
Vielleicht helfen dir auch die die Wiki-Artikel [[Brother Drucker]] oder [[Samsung Drucker]] weiter.


==Weblinks==
* http://www.linuxprinting.org {{sprache|en}}
* http://www.cups.org {{sprache|en}}
* http://www.turboprint.de {{sprache|de}}


[[Kategorie:Hardware]]
[[Kategorie:Hardware]]
[[Kategorie:Daemons]]
[[Kategorie:Services]]
[[en:CUPS]]

Version vom 14. Oktober 2016, 18:06 Uhr

Dieser Artikel wurde als veraltet markiert, und sollte kontrolliert, und gegebenfalls korrigiert bzw. aktualisiert werden.


Direkt von der CUPS-Internetseite: "Das Common Unix Printing System (CUPS) ist eine plattformübergreifende Drucker-Lösung für alle UNIX-Umgebungen. Es basiert auf dem "Internet Printing Protocol" und stellt komplette Drucker-Dienste für die meisten Postscript- und Raster-Drucker bereit. CUPS steht unter der GNU GPL ...". [1] Obwohl es auch andere Drucker-Pakete wie LPRNG gibt, ist CUPS sehr beliebt und relativ einfach zu nutzen. Es ist das Standard-Drucksystem von Arch Linux und vieler anderer Linux-Distributionen.

Installation

CUPS ist als cups in extra verfügbar, und kann von dort mittels Pacman installiert werden.

# CUPS an sich
pacman -S cups

# Compiler für PostScript
pacman -S ghostscript

Außerdem benötigt man eines der folgenden Treiber-Pakete je nach dem, was für Drucker konfiguriert werden. Im Zweifelsfall ist Gutenprint eine gute Wahl:

  • gutenprint - Eine Sammlung hochwertiger Treiber für Canon, Epson, Lexmark, Sony, Olympus und PCL Drucker, die mit Ghostscript, CUPS, Foomatic und GIMP verwendet werden können.
  • foomatic, foomatic-db, foomatic-db-engine, foomatic-db-ppd und foomatic-filters - Foomatic ist ein Datenbank-basiertes System, um freie Drucker-Treiber mit gewöhnlichen Spoolern unter Unix zu integrieren.
  • foomatic-filters zu installieren sollte beim lösen verschiedener Probleme helfen können, wenn der CUPS-Server im error.log berichtet: "stopped with status 22!".
  • hplip - Ein HP Linux Inkjet Treiber. Unterstützt DeskJet, OfficeJet, Photosmart, Business Inkjet und einige LaserJet Modelle.
  • splix - Eine Treibersammlung für Drucker, welche mit SPL (Samsung Printer Language) angesteuert werden, vornehmlich Samsung.
  • cups-pdf - Ein nettes Paket, das es erlaubt, einen virtuellen PDF-Drucker einzurichten, der alles, was an ihn geschickt wird, in eine PDF-Datei verwandelt.

Wenn das System mit einem Netzwerk-Drucker verbunden ist, der das Samba-Protokoll verwendet, oder als Drucker-Server für Windows-Klienten dienen soll, sollte man Samba installieren:

 pacman -S samba

Die Drucker-PPD herunterladen

Eine PPD-Datei ist eine Informationsdatei für PostScript-Drucker (meist vom Hersteller des Druckers bereitgestellt), in der alle relevanten Informationen über den Drucker (Druckertyp, unterstützte Schriften, Auflösung, verwendeter PostScript-Level, Papierformat, etc.) verzeichnet sind.

Abhängig vom Drucker, ist dieser Schritt vielleicht überflüssig und kann übersprungen werden, da die Basisinstallation von CUPS bereits eine ganze Reihe von PPD-Dateien mit sich bringt. Darüber hinaus enthalten foomatic-filters, gutenprint und hplip weitere PPD-Dateien, die automatisch von CUPS erkannt werden.

Falls die PPD-Datei des eigenen Drucker nicht in einem der vorgenannten Pakete zu finden sein sollte, so kann man auf [2] nachsehen. Dort wählt man den Hersteller und das Modell des Druckers aus. Dann muss man diese Datei in den CUPS-Ordner kopieren, so dass die Datei erkannt werden kann.

cp your_printer.ppd /usr/share/cups/model/

Wenn das Druckermodell auf der Seite nicht zu finden ist, kann man es mit ähnlichen Modellen versuchen, oder generische Treiber verwenden.

Konfiguration

Es gibt viele Möglichkeiten, den CUPS-Server einzurichten: Über die Kommandozeile, über bereitgestellte Programme der Desktopumgebung oder über die mitgelieferte Webschnittstelle des Servers. Diese Anleitung bezieht sich auf letzteres.

Module laden

Zuerst müssen die Kernel Module geladen werden. Je nachdem, ob man einen USB- oder einen Parallel-Drucker verwendet, sind diese unterschiedlich.

Seit Version 1.4.x verwendet CUPS ein neues USB-Backend. Sollte hingegen eine CUPS-Version vor 1.4.x oder der Kernel 2.4.x verwendet werden, so sind Module zu laden. Bei Verwendung einer älteren CUPS-Version mit Kernel 2.6.x ist das Modul usblp zu laden. Bei Verwendung des Kernels 2.4.x muss das Modul printer geladen werden.

modprobe usblp    # bei Kernel 2.6.x
modprobe printer  # bei Kernel 2.4.x

Falls man einen selbstkompilierten Kernel verwendet, muss man zuvor gegebenenfalls das Modul usbcore laden. Wenn alle Module geladen wurden, kann man den Drucker anschließen. Es sollte dann etwa Folgendes ausgegeben werden, wenn man sich das Logfile ansieht.

$ tail /var/log/messages.log
Feb 19 20:17:11 kernel: printer.c: usblp0: USB Bidirectional
printer dev 2 if 0 alt 0 proto 2 vid 0x04E8 pid 0x300E
Feb 19 20:17:11 kernel: usb.c: usblp driver claimed interface cfef3920
Feb 19 20:17:11 kernel: printer.c: v0.13: USB Printer Device Class driver

Wenn man einen Parallel-Drucker nutzen will, ist die Einrichtung fast genauso. Benutzer des Kernels 2.6.x müssen als erstes folgendes ausführen:

modprobe lp

Danach können sowohl die Nutzer eines 2.4.x-Kernels, als auch die eines 2.6.x-Kernels ausführen:

modprobe parport
modprobe parport_pc

Nun überprüft man die Einstellungen.

tail /var/log/messages.log

Es sollte folgendes zu sehen sein.

[] lp0: using parport0 (polling)

Service starten

Ab der Version 1.6.x benötigt CUPS unbedingt das Programmpaket avahi.

  • Die Installation von avahi ist über pacman aus den offiziellen Repos möglich.
  • Eine Bearbeitung der avahi-Konfigurationsdateien ist nicht notwendig.
  • Des weiteren muss avahi vor CUPS gestartet werden.

Damit beide Dienste automatisch gestartet werden, bitte

 systemctl enable avahi-daemon.service
 systemctl enable org.cups.cupsd.service

Ein manueller Start kann dann per

 systemctl start avahi-daemon.service
 systemctl start org.cups.cupsd.service

CUPS HTTP Schnittstelle für lokale Drucker

Sobald der Server gestartet ist, ruft man die Webschnittstelle auf: http://localhost:631 Hier klickt man auf den Link, um Drucker hinzuzufügen. Der CUPS-Server sucht automatisch nach den angeschlossenen Druckern; den, der konfiguriert werden soll, klickt man an. Nun kann man dem Drucker einen Trivialnamen geben und eine Beschreibung hinzufügen. Zuletzt wählt man den Druckertreiber bzw. eine PPD-Datei aus und stellt die Standardeinstellungen ein. Der Drucker ist nun eingerichtet und bereit zum Drucken. Man sollte nun eine Testseite drucken, um zu überprüfen, ob alles funktioniert. Dies kann man über das nun offene Menü des Druckers tun oder über die Kommandozeile.

lpr -P <Drucker> datei

<Drucker> ist hierbei der gewählte Trivialname, datei eine zuvor erstelle Textdatei. Sofern man nur einen Drucker eingerichtet hat, kann -P <Drucker> auch weggelassen werden.

CUPS-PDF als virtuellen Drucker einrichten

Zuerst muss das entsprechende Paket installiert werden.

pacman -S cups-pdf

Über das Webinterface wird der neue Drucker als CUPS-PDF (Virtual PDF Printer) angelegt. Dazu klickt man auf „Verwaltung“ und dort auf den Button „Drucker hinzufügen“ im Abschnitt „Drucker“. Im nächsten Dialog wählt man „Local Printers: CUPS-PDF (Virtual PDF Printer)“ aus. Klickt man auf „Fortsetzen“ sieht man im darauffolgenden Dialog als URI des Druckers die Angabe cups-pdf:/. Weiter geht es mit der Auswahl des Druckerherstellers. Hier wählt man „Generic“ aus der Herstellerliste. Als Model wählt man „Generic CUPS-PDF Printer (en)“. Um die neue Konfiguration zu aktivieren, muss der CUPS-Server neu gestartet werden.

systemctl restart org.cups.cupsd.service

Zuvor kann man in der Datei /etc/cups/cups-pdf.conf im Abschnitt „CUPS-PDF output directory“ Einfluss darauf nehmen, in welches Verzeichnis die erzeugten PDF-Dateien später abgelegt werden sollen.

Problemlösungen

Um den Druck zum Laufen zu bringen, sollte man am besten den LogLevel in /etc/cups/cupsd.conf so einstellen:

 LogLevel debug2

Dann kann man die Ausgabe von /var/log/cups/error_log mit diesem Befehl betrachten:

 tail -n 100 -f /var/log/cups/error_log 

Die Buchstaben auf der linken Seite der Ausgabe stehen für:

  • D = Debug
  • E = Error (Fehler)
  • I = Information

Die folgenden Dateien können sich ebenfalls als hilfreich erweisen:

/var/log/cups/page_log (spuckt jedes Mal einen neuen Eintrag aus, wenn ein Druckvorgang erfolgreich war)
/var/log/cups/access_log (erstellt eine Liste aller cupsd http1.1. Server-Aktivitäten)

Natürlich ist es wichtig zu wissen, wie CUPS funktioniert, wenn man ein Problem lösen will. CUPS arbeitet in etwa so:

* Eine Anwendung schickt eine PostScript-Datei an den Server (im Regelfall ist dies localhost).
* CUPS übersetzt diese Datei nun in ein Format, das vom druckerinternen Protokoll verarbeitet werden kann. Dies geschieht zum Beispiel mit Ghostscript, das über die Druckertreiber herausfindet, wie dies genau funktioniert.
* Diese Datei wird dann an die Druckerschnittstelle gesandt.

In der Datei error.log wird dies dokumentiert.

Drucker fehlen in Druckdialog von GTK3 Anwendungen

Im Druckdialog von GTK3-Anwendungen wie Firefox, Evince usw. wird nur der Druck in eine Datei angeboten. Sämtliche in CUPS eingerichtete Drucker fehlen.

Abhilfe: sudo pacman -S gtk3-print-backends

Textdateien werden nicht gedruckt

Obwohl der Drucker richtig eingerichtet wurde, kann es passieren, dass Textdateien nicht korrekt aus dem Terminal oder aus dem Texteditor gedruckt werden.

Abhilfe kann hier a2ps verschaffen. Dieses Programm wandelt verschiedene Dateien in PostScript-Dateien um.

pacman -S a2ps

Nach der Installation muss der CUPS-Server neu gestartet werden.

systemctl restart org.cups.cupsd.service

Der Auftrag wird verarbeitet, aber nicht gedruckt

Obwohl der Drucker korrekt konfiguriert wurde und Aufträge annimmt und diese auch als verarbeitet angezeigt werden, erhält man keinen Ausdruck.

Die Lösung für dieses Problem ist folgende:

Zunächst wird der CUPS-Server gestoppt.

systemctl stop org.cups.cupsd.service

Hiernach deinstalliert man ihn. Es sollten alle Konfigurationsdateien entfernt oder gesichert werden.

mv /etc/cups /etc/cups.backup
mv /var/cache/cups /var/cache/cups.backup
pacman -Rcns cups

Nun installiert man den CUPS-Server neu und startet ihn wieder.

pacman -S cups
systemctl enable org.cups.cupsd.service
systemctl start org.cups.cupsd.service

Danach muss der Drucker wieder neu eingerichtet werden.

Damit kann immerhin sichergestellt werden, dass keine Konfigurationsprobleme vorliegen.

64-Bit System (x86_64-Architektur)

Obwohl man alles richtig gemacht hat, kann es dennoch passieren, dass der Drucker einfach nicht druckt. Falls man die 64-Bit-Version von Arch Linux nutzt, sind evtl. noch folgende 32-Bit-Pakete von Nöten: lib32-glibc, lib32-gcc-libs und lib32-libstdc++5.

Voraussetzung dazu, ist die Aktivierung des Multilib-Repos in der /etc/pacman.conf; Siehe dazu Pacman, den Punkt "Repos festlegen".

Man kommentiert einfach das Multilib-Repo ein ("#" vor Eintrag entfernen).

[multilib]
Include = /etc/pacman.d/mirrorlist

Danach die Datenbank aktualisieren.

pacman -Syy

Und dann die fehlenden 32-Bit-Abhängigkeiten installieren.

pacman -S lib32-glibc lib32-gcc-libs lib32-libstdc++5

Danach müsste der Drucker einwandfrei funktionieren. Falls nicht - oder auch nur zur Sicherheit - kann man nochmal den CUPS-Server neu starten.

systemctl restart org.cups.cupsd.service

CUPS erkennt den Drucker nicht

Viele USB-Drucker werden von CUPS (v1.5) nach wie vor als parallele Geräte angesprochen. Sobald der Drucker beim Einstecken und Anschalten in /dev/usb/ eine Datei lp0 , lp1, oder usw. anlegt genügt ein Link direkt in /dev/

Speichern Sie dazu folgende udev-rule unter bspw. diesem Namen /etc/udev/rules.d/10-cups_device_link.rules ab.

KERNEL=="lp[0-9]", SYMLINK+="%k", GROUP="lp"

Beim neuen einstecken des USB-Kabels wird die neue Regel angewendet, und CUPS dürfte den Drucker (als parallel) im Web-Interface erkennen.

Falls das nicht hilft, installieren Sie das Paket hal-cups-utils und versuchen es erneut. Dabei ist zu beachten, dass für hal (als Abhängigkeit) aus dem AUR (temporär) ein link angelegt werden sollte.

# ln -s /usr/include/libv4l1-videodev.h /usr/include/linux/videodev.h


Benutzer hat keinen Zugriff

Damit ein user Zugriff auf administrative Tätigkeiten am Cups-Server (Web-Client) hat, muss er zuerst der Gruppe sys zugeordnet werden

 usermod -aG sys username

Herstellerspezifische Artikel

Vielleicht helfen dir auch die die Wiki-Artikel Brother Drucker oder Samsung Drucker weiter.

Weblinks