CUPS - CUPS
| Oprindelige forfatter (e) | Michael Sweet ( nemme softwareprodukter ) |
|---|---|
| Udvikler (r) | Apple Inc. |
| Første udgivelse | 9. juni 1999 |
| Stabil frigivelse | 2.3.3 / 28. april 2020
|
| Datalager |
|
| Skrevet i | C |
| Operativ system | Unix-lignende , Windows , ArcaOS |
| Efterfølger | OpenPrinting CUPS |
| Type | Print server |
| Licens | Apache-licens 2.0 |
| Internet side | www |
| Udvikler (r) | OpenPrinting og community |
|---|---|
| Stabil frigivelse | 2.3.3op2 / 1. februar 2021
|
| Datalager | github |
| Forgænger | Apple CUPS |
| Internet side | openprinting |
CUPS (tidligere et akronym for Common UNIX Printing System ) er et modulært udskrivningssystem til Unix-lignende computeroperativsystemer , der gør det muligt for en computer at fungere som en printserver . En computer, der kører CUPS, er en vært, der kan acceptere udskriftsjob fra klientcomputere , behandle dem og sende dem til den relevante printer.
CUPS består af en udskriftsspooler og planlægning, et filtersystem, der konverterer udskriftsdataene til et format, som printeren forstår, og et backend-system, der sender disse data til udskrivningsenheden. CUPS bruger IPP ( Internet Printing Protocol ) som grundlag for styring af udskriftsjob og køer . Det giver også de traditionelle kommandolinjegrænseflader til System V- og Berkeley- printersystemerne og yder support til Berkeley-printersystemets Line Printer Daemon-protokol og begrænset support til SMB-protokollen ( server message block ). Systemadministratorer kan konfigurere de enhedsdrivere, som CUPS leverer, ved at redigere tekstfiler i Adobes PostScript Printer Description (PPD) -format. Der er et antal brugergrænseflader til forskellige platforme, der kan konfigurere CUPS, og den har en indbygget webbaseret grænseflade. CUPS er gratis software , der leveres under Apache-licensen .
Historie
Michael Sweet , der ejede Easy Software Products , startede udviklingen af CUPS i 1997, og de første offentlige betas dukkede op i 1999. Det originale design af CUPS brugte Line Printer Daemon Protocol (LPD) protokol, men på grund af begrænsninger i LPD og leverandør uforenelighed, Internet Printing Protocol (IPP) blev valgt i stedet. CUPS blev oprindeligt kaldt "The Common UNIX Printing System". Dette navn blev forkortet til bare "CUPS" begyndende med CUPS 1.4 på grund af juridiske problemer med UNIX-varemærket. CUPS blev hurtigt vedtaget som standardudskrivningssystem til de fleste Linux-distributioner . I marts 2002 vedtog Apple Inc. CUPS som udskrivningssystem til Mac OS X 10.2. I februar 2007 hyrede Apple Inc. chefudvikler Michael Sweet og købte CUPS-kildekoden. Den 20. december 2019 meddelte Michael Sweet på sin blog, at han havde forladt Apple. I 2020 forkyndte OpenPrinting- organisationen projektet, hvor Michael Sweet fortsatte arbejdet med det.
Oversigt
CUPS giver en mekanisme, der gør det muligt at sende udskriftsjob til printere på en standard måde. Udskrivningsdataene går til en planlægger, der sender job til et filtersystem, der konverterer udskriftsjobbet til et format, som printeren vil forstå. Filtersystemet videregiver derefter dataene til en backend - et specielt filter, der sender udskrivningsdata til en enhed eller netværksforbindelse. Systemet bruger udstrakt brug af PostScript og rasterisering af data til at konvertere dataene til et format, der passer til destinationsprinteren.
CUPS tilbyder et standard- og modulariseret udskrivningssystem, der kan behandle adskillige dataformater på printserveren. Før CUPS var det vanskeligt at finde et standardprinterstyringssystem, der kunne rumme de meget forskellige printere på markedet ved hjælp af deres egne printersprog og -formater. For eksempel var System V- og Berkeley-udskrivningssystemerne stort set uforenelige med hinanden, og de krævede komplicerede scripts og løsninger for at konvertere programmets dataformat til et printbart format. De kunne ofte ikke registrere det filformat, der blev sendt til printeren, og kunne derfor ikke automatisk og korrekt konvertere datastrømmen. Derudover blev datakonvertering udført på individuelle arbejdsstationer snarere end på en central server.
CUPS giver printerproducenter og printerdriverudviklere lettere mulighed for at oprette drivere, der fungerer indbygget på printserveren. Behandling finder sted på serveren, hvilket muliggør lettere netværksbaseret udskrivning end med andre Unix-udskrivningssystemer. Når Samba er installeret, kan brugerne adressere printere på eksterne Windows-computere, og generiske PostScript-drivere kan bruges til udskrivning over hele netværket.
Planlægning
CUPS-planlæggeren implementerer IPP ( Internet Printing Protocol ) via HTTP / 1.1. En hjælperapplikation (cups-lpd) konverterer Line Printer Daemon Protocol (LPD) anmodninger til IPP. Planlæggeren giver også en webbaseret grænseflade til styring af udskriftsjob, konfigurationen af serveren og til dokumentation om selve CUPS.
Et godkendelsesmodul styrer, hvilke IPP- og HTTP-meddelelser der kan passere gennem systemet. Når IPP / HTTP-pakkerne er godkendt, sendes de til klientmodulet , som lytter til og behandler indgående forbindelser. Klientmodulet er også ansvarligt for at udføre eksterne CGI- programmer efter behov for at understøtte webbaserede printere, klasser og jobstatusovervågning og -administration. Når dette modul har behandlet sine anmodninger, sender det dem til IPP- modulet, der udfører URI-validering ( Uniform Resource Identifier ) for at forhindre en klient i at sidestille enhver adgangskontrol eller godkendelse på HTTP-serveren. URI er en tekststreng, der angiver et navn eller en adresse, der kan bruges til at henvise til en abstrakt eller fysisk ressource på et netværk.
Planlæggeren tillader klasser af printere. Applikationer kan sende anmodninger til grupper af printere i en klasse, så planlæggeren kan dirigere jobbet til den første tilgængelige printer i den klasse. Et job modul styrer udskriftsjob, sende dem til filteret og backend processer til endelig konvertering og trykning, og overvågning af statusmeddelelser fra disse processer.
CUPS-planlæggeren bruger et konfigurationsmodul , som parser konfigurationsfiler, initialiserer CUPS- datastrukturer og starter og stopper CUPS-programmet. Konfigurationsmodulet stopper CUPS-tjenester under behandling af konfigurationsfiler og genstarter derefter tjenesten, når behandlingen er afsluttet.
Et logningsmodul håndterer logning af planlægningshændelser for adgangs-, fejl- og sidelogfiler . De vigtigste modul håndtag timeouts og forsendelse af I / O-anmodninger om klientforbindelser, se efter signaler , håndtering barn proces fejl og udgange, og genindlæse serverkonfigurationsfiler efter behov.
Andre moduler, der bruges af planlæggeren, inkluderer:
- den MIME -modulet, som håndterer en Multipurpose Internet Mail Extensions (MIME) type og konvertering database, der bruges i filtrering, der konverterer udskriver data til et format egnet til en print-enhed;
- et PPD- modul, der håndterer en liste med PPD-filer ( Postscript Printer Description );
- et enhedsmodul , der administrerer en liste over enheder, der er tilgængelige i systemet
- et printermodul , der håndterer printere og PPD'er inden for CUPS.
Filtersystem
CUPS kan behandle en række dataformater på printserveren. Det konverterer udskriftsjobdataene til det endelige sprog / format på printeren via en række filtre . Det bruger MIME-typer til at identificere filformater.
MIME-databaser
Når CUPS-systemet har tildelt udskriftsjobbet til planlæggeren, sendes det til CUPS-filtersystemet. Dette konverterer dataene til et format, der passer til printeren. Under opstart indlæser CUPS-dæmonen to MIME-databaser: mime.types der definerer de kendte filtyper, som CUPS kan acceptere data til, og mime.convs som definerer de programmer, der behandler hver bestemt MIME-type.
Den mime.types fil har syntaksen:
mimetype { [file-extensions] | [pattern-match] }
For at registrere en HTML- fil vil f.eks. Følgende post være relevant:
text/html html htm \
printable(0,1024) + (string(0,"<HTML>") string(0,"<!DOCTYPE"))
Den anden linje matcher filindholdet med den specificerede MIME-type ved at bestemme, at den første kilobyte tekst i filen indeholder udskrivbare tegn, og at disse tegn inkluderer HTML-markering. Hvis ovenstående mønster matcher, markerer filtersystemet filen som MIME-typen tekst / html.
Den mime.convs fil har syntaksen:
source destination cost program
Den kilde felt angiver MIME-typen, der er bestemt ved at se op på mime.types filen, mens destination felt anfører type output anmodet om, og bestemmer, hvad programmet skal bruges. Dette hentes også fra mime.types . De omkostninger felt hjælper i udvælgelsen af sæt af filtre, når konvertere en fil. Det sidste felt, programmet , bestemmer hvilket filterprogram der skal bruges til at udføre datakonvertering.
Nogle eksempler:
text/plain application/postscript 50 texttops application/vnd.cups-postscript application/vnd.cups-raster 50 pstoraster image/* application/vnd.cups-postscript 50 imagetops image/* application/vnd.cups-raster 50 imagetoraster
Filtreringsproces
Filtreringsprocessen fungerer ved at tage inputdata formateret med seks argumenter:
- job-id'et for udskriftsjobbet
- brugernavnet
- jobnavnet
- antallet af kopier, der skal udskrives
- eventuelle udskriftsindstillinger
- filnavnet (selvom dette er unødvendigt, hvis det er omdirigeret fra standardinput ).
Det bestemmer derefter typen af data, der indtastes, og det filter, der skal bruges ved brug af MIME-databaser; for eksempel detekteres og behandles billeddata gennem et bestemt filter, og HTML-data detekteres og behandles gennem et andet filter.
CUPS kan konvertere leverede data enten til PostScript- data eller direkte til rasterdata. Hvis det konverteres til PostScript-data, anvendes der et ekstra filter kaldet et forfilter , der kører PostScript-data gennem en anden PostScript-konverter, så det kan tilføje printerspecifikke indstillinger som f.eks. Valg af sideområder til udskrivning, indstilling af n-op- tilstand og anden enhedsspecifik ting. Når forfiltreringen er udført, kan dataene enten sendes direkte til en CUPS- backend, hvis de bruger en PostScript-printer, eller de kan videregives til et andet filter som Foomatic af linuxprinting.org . Alternativt kan den sendes til Ghostscript , som konverterer PostScript til et mellemliggende CUPS-rasterformat . Det mellemliggende rasterformat sendes derefter til et endeligt filter, der konverterer rasterdataene til et printerspecifikt format. Standardfiltrene, der følger med CUPS, inkluderer:
- raster til PCL
- raster til ESC / P eller ESC / P2 (et Epson- printersprog, der nu stort set erstattes af deres nye ESC / P-Raster-format)
- raster til Dymo (et andet printerfirma).
- raster til Zebra Programming Language eller ZPL (et Zebra Technologies- printersprog)
Fra og med 2009 understøttes andre proprietære sprog som GDI eller SPL (Samsung Printer Language) af Splix, en raster til SPL-oversætter.
Imidlertid kan flere andre alternativer integreres med CUPS. HPLIP (tidligere kendt som HP-IJS) leverer Linux + CUPS-drivere til HP-printere, Gutenprint (tidligere kendt som Gimp-Print) er en række printerdrivere i høj kvalitet til (for det meste) inkjet-printere, og TurboPrint til Linux har et andet sortiment af printerdrivere af høj kvalitet til en lang række printere.
Bageste
Baggrundene er de måder, hvorpå CUPS sender data til printere. Der er flere backends tilgængelige til CUPS: parallel- , seriel- og USB- porte, kopper-pdf PDF Virtual Printing samt netværksbackends, der fungerer via IPP , JetDirect (AppSocket), Line Printer Daemon ("LPD") og SMB protokoller .
En ny mdns backend i CUPS 1.4 giver Bonjour ( DNS-SD ) -baseret printeropdagelse. I CUPS 1.6 understøttes Bonjour-printeropdagelse og deling ved hjælp af Avahi også.
Kompatibilitet
CUPS leverer både System V- og Berkeley-udskrivningskommandoer, så brugere kan fortsætte med traditionelle kommandoer til udskrivning via CUPS. CUPS bruger port 631 (TCP og UDP), som er standard IPP-porten, og valgfrit på port 515 af inetd , launchd , Solaris Service Management Facility eller xinetd, der bruger cups-lpd hjælperprogrammet til at understøtte LPD-udskrivning. Når CUPS er installeret lp , er kommandoen til System V-udskrivningssystemet og lpr Berkeley-udskrivningssystemkommandoerne installeret som kompatible programmer. Dette tillader en standardgrænseflade til CUPS og giver maksimal kompatibilitet med eksisterende applikationer, der er afhængige af disse udskrivningssystemer.
Værktøjer til brugergrænseflade
Der findes flere værktøjer til at hjælpe med opsætningen af CUPS.
CUPS webbaseret administrationsgrænseflade
På alle platforme har CUPS en webbaseret administrationsgrænseflade, der kører på port 631 . Det hjælper især organisationer, der har brug for at overvåge udskriftsjob og tilføje udskriftskøer og printere eksternt.
CUPS 1.0 leverede en simpel klasse-, job- og printerovervågningsgrænseflade til webbrowsere.
CUPS 1.1 erstattede denne grænseflade med en forbedret administrationsgrænseflade, der giver brugerne mulighed for at tilføje, ændre, slette, konfigurere og kontrollere klasser, job og printere.
CUPS 1.2 og senere giver en moderniseret webgrænseflade, som har forbedret læsbarhed og design, understøttelse af automatisk opdagede printere og bedre adgang til systemlogfiler og avancerede indstillinger.
GNOME
I GNOME startende fra GNOME 3 er CUPS-udskrivning håndteret i applikationen Indstillinger, som er en del af GNOME-kerneapplikationerne . GUI kan tilføje CUPS-printere og administrere CUPS-printere og køer. Før GNOME 3 blev GNOME Print Settings (tidligere kaldet CUPS Manager) brugt til at udføre disse opgaver.
GNOME's widget-værktøjssæt GTK + inkluderede integreret udskrivningssupport baseret på CUPS i sin version 2.10, udgivet i 2006.
KDE
KDEPrint-rammen til KDE indeholder forskellige GUI- værktøjer, der fungerer som CUPS -frontend og tillader administration af klasser, udskriftskøer og udskriftsjob; det inkluderer en printerguide til at hjælpe med tilføjelse af nye printere blandt andre funktioner. KDEPrint dukkede først op i KDE 2.2.
KDEPrint understøtter flere forskellige udskrivningsplatforme, hvor CUPS er en af de bedst understøttede. Det erstattede en tidligere version af understøttelse af udskrivning i KDE, qtcups og er bagudkompatibel med dette modul af KDE. Fra 2009 fungerer kprinter , et dialogboksprogram , som det vigtigste værktøj til at sende job til printerenheden. det kan også startes fra kommandolinjen . KDEPrint inkluderer et system til forfiltrering af job, inden de overdrages til CUPS, eller til at håndtere job alene, såsom konvertering af filer til PDF . Disse filtre er beskrevet af et par Desktop / XML- filer.
KDEPrints hovedkomponenter inkluderer:
- et dialogboks til udskrivning, der gør det muligt at ændre printeregenskaber
- en Print Manager, der tillader styring af printere, f.eks. tilføjelse og fjernelse af printere, gennem en Tilføj printer-guide
- en Job Viewer / Manager, der administrerer printerjob, f.eks. hold / frigør, annullerer og flytter til en anden printer
- et CUPS-konfigurationsmodul (integreret i KDE)
Mac OS X
I Mac OS X 10.5 konfigureres printere i panelet Udskriv og fax i Systemindstillinger og i printerproxy-applikationer, der viser udskriftskøerne og tillader yderligere konfiguration, når printerne er konfigureret. Tidligere versioner af Mac OS X inkluderede også et printeropsætningsværktøj , der leverede konfigurationsmuligheder, der manglede i tidligere versioner af præferenceruden Print & Fax.
Printeropsætning
PrinterSetup-systemet kan håndtere CUPS-køer. Det tager metoden at tildele en tekstfil til at beskrive hver udskriftskø. Disse 'PrinterSetupFiles' kan derefter føjes til andre tekstfiler kaldet 'PrinterSetupLists'. Dette muliggør logisk gruppering af printere. Fra 2009 er PrinterSetup-projektet stadig i sin barndom.
Red Hat Linux / Fedora
Fra og med Red Hat Linux 9 leverede Red Hat en integreret printmanager baseret på CUPS og integreret i GNOME . Dette gjorde det muligt at tilføje printere via en brugergrænseflade svarende til den, Microsoft Windows bruger, hvor en ny printer kunne tilføjes ved hjælp af en tilføj ny printerguide sammen med at ændre standardprinteregenskaber i et vindue, der indeholder en liste over installerede printere. Job kunne også startes og stoppes ved hjælp af en udskriftsadministrator, og printeren kunne stoppes midlertidigt ved hjælp af en genvejsmenu, der dukker op, når printerikonet højreklikkes.
Eric Raymond kritiserede dette system i sit stykke The Luxury of Ignorance . Raymond havde forsøgt at installere CUPS ved hjælp af Fedora Core 1 print manager, men fandt det ikke intuitivt. han kritiserede interface-designerne for ikke at designe med brugerens synspunkt i tankerne. Han fandt ideen om printerkø ikke var åbenlyst, fordi brugerne opretter køer på deres lokale computer, men disse køer oprettes faktisk på CUPS-serveren.
Han fandt også den overflod af køtypemuligheder forvirrende, da han kunne vælge mellem netværksbaseret CUPS (IPP), netværksnetværk Unix ( LPD ), netværksbaseret Windows ( SMB ), netværksbaseret Novell ( NCP ) eller netværksnet JetDirect . Han fandt hjælpefilen særligt uhensigtsmæssig og stort set irrelevant for en brugers behov. Raymond brugte CUPS som et generelt emne for at vise, at brugergrænsefladesign på Linux-desktops har brug for nytænkning og mere omhyggeligt design. Han sagde:
Metaproblemet her er, at konfigurationsguiden udfører alle de godkendte ritualer (GUI med standardiserede klikknapper, hjælp til at dukke op i en browser osv. Osv.), Men ikke har den centrale attribut, som disse formodes at opnå: opdagelighed. Det vil sige den kvalitet, som hvert punkt i grænsefladen har anvisninger og handlinger knyttet til, hvorfra du kan lære, hvad du skal gøre næste. Har dit projekt denne kvalitet?
ESP Print Pro
Easy Software Products , de oprindelige skabere af CUPS, oprettede en GUI, leverede support til mange printere og implementerede en PostScript RIP . ESP Print Pro kørte på Windows, UNIX og Linux, men er ikke længere tilgængelig, og support til dette produkt sluttede den 31. december 2007.
Se også
- Foomatic
- Gutenprint
- HP Linux Imaging og udskrivning
- Lp (Unix)
- LPRng
- Scanneadgang nu let
- Spoling
- Xprint
Referencer
Yderligere læsning
- Design af CUPS-filtreringssystem - inklusive konteksten til Mac OS X ("Jaguar") . LinuxPrinting.org . Hentet 5. januar 2005.
- KDE . KDEPrint information . KDE-udskrivningswebsted. Hentet 14. januar 2005.
- Sådan administreres printere i Linux , Linux.com, 2015-04-27.