SDB:Print Settings with CUPS
Version: 7.2
İçindekiler
Bulgu
Diyelim ki; yönetici(admin) olarak CUPS yazım sistemi ile karşılaştınız. Karşınıza farklı biçimlerde kuyruğa atma (queue) ve atılanları izleme ile ilgili sorunlar çıkabilir. Örneğin;
- Birden fazla kullanıcı, benzer ya da aynı kuyruğa atılı, bir veya birden fazla farklı yazıcı çıktısı almak isteyebilir.(kötü kalitede ya da sonuçsuz çıktılar gibi...)
- Ağ üzerindeki yazdırma işlemlerinde; farklı kullanıcıların benzer ya da aynı kuyruğa atılı, yazdırma işlemi farklı kullanıcıların bilgisayarlarından geliyor olabilir.
Sonuç olarak, bu durum genel kuyruk ayarlarına başvuracaktır : Genel kuyruk ayarları için, ek olarak PRINTER
çevresel değişkeni gelmektedir. Eğer bu çevresel değişkene bir değer atanmışsa lp
, bu atama genel kuyruk ayarlarına en yüksek dereceden öncelik tanıyacaktır. Eğer PRINTER
; lp
, olarak ayarlanmışsa CUPS tarafından gözardı edilir. Geleneksel yazdırma sistemlerinde, /etc/profile
ya da /etc/SuSEconfig/profile
için bir giriş mevcuttur. Ki bu durum PRINTER
'i lp
yapar. Ve yine bu durumun genel kuyruk ayarlarına en yüksek dereceden öncelik tanıyacağı gibi. Bu durum, CUPS araçları ile genel kuyruk ayarlarını değiştirmeyi imkansız kılmaktadır.
Bununla birlikte, CUPS sunucular üzerinde yer alan makinelere genel kuyruk ayarlarını atamak mümkün olmayacaktır. Çünkü birden fazla istemci için, birden fazla CUPS sunucusu olabilir. Bu nedenle, her istemci kendine ait varsayılan sıra ayarlarına sahip olmalıdır. Genel sıra ayarlarına göre bir değişiklik mümkün değilse, ilk sıra ayarı alfabetik olarak atanacaktır.
Neden
not only on client machines, but also on the CUPS server).
Bu durum aslında bir hata değil, CUPS'un basit bir özelliğidir.
- Tüm kullanıcılar, her bir sıra ayarı için farklı atama yapabilirler.
- Ayrıca, "kök dizin" her bir makine için farklı sıra ayarı ataması yapabilir. (sadece istemci makineler için değil, Cups sunucular için de geçerlidir.)
Çözüm
Çözüm aslında çok kolay olmakla birlikte, ayarların nerede olduğunu ve hangi ayarların hangi konumlarda etkili olduğunu bilmek gerekiyor.
SuSE Linux 8.1'den itibaren, temel bilgi; Yönetici Klavuzundaki, "Yazıcı İşlemi"(Printer Operation) bölümündeki "CUPS Yazdırma işlemleri için Komut Dizisi Araçları"(Command Line Tools for the CUPS Printing System) başlığında ya da "Yerel yazdırma sıra ayarlarında Yönetim"(Managing Local Queues) alt başlıklarında bulunabilir.
Örnek
Konuyu tam açıklamaya yönelik, şöyle bir örnek seçtik ki, durum itibari ile çok daha karmaşık hale gelmektedir. Örneği mümkün olduğunca net ve anlaşılır yapmaya çalıştık ki, içeriğinde sadece komut satırı yönergeleri bulunmaktadır. Bununla birlikte, Kprinter ve XPP veya ağ tabanlı CUPS gibi çizgesel(graphical) araçlar kullanılsa dahi bir farklılık yaratmayacaktır.
Başlangıç olarak :
- "sun" olarak anılacak olan CUPS sunucusu, "tek renk" ve "renkli" olarak kuyruğa atılı renkli mürekkep püskürtmeli yazıcı ile iliştirilmiştir. '''''(bu cümleyi e-posta grubuna soracağım.)'''''
Çünkü, her iki yazdırma sırası da, aynı yazıcı için kullanılacaktır. Aynı PDD dosyası, her iki yazdırma için de temel olarak kullanılacak, fakat her bir yazdırma sırası için farklı değer alacaktır. Örneğin, YaST2; farklı biçimde oluştururken, bu geçiş yolunu kullanır. (bakınız: SDB yazısı "SuSE linux 8.1 ile yazıcı biçimlendirme)
PPD dosyaları, sıra ayarları ile sürekli bir iletişim(uyum) halindedirler; /etc/cups/ppd/mono.ppd
ve /etc/cups/ppd/color.ppd
dosyaları aşağıdaki gibi geçerli ayarları ve temel değerleri içermktedir:
*DefaultColors: Gray *Colors Gray ... *Colors Color ... ... *DefaultInkCartridge: Black *InkCartridge Black ... *InkCartridge Color ... ... *DefaultResolution: 600dpi *Resolution 150dpi ... *Resolution 300dpi ... *Resolution 600dpi ... and *DefaultColors: Color *Colors Gray ... *Colors Color ... ... *DefaultInkCartridge: Color *InkCartridge Black ... *InkCartridge Color ... ... *DefaultResolution: 300dpi *Resolution 150dpi ... *Resolution 300dpi ... *Resolution 600dpi ... In certain circumstances it makes sense to have several queues with their respective settings for the same printer due to the following reasons:
Bu gibi durumlarda, aynı yazıcı için bir kaç kuyruk ayarını kendi ayarlarına göre algılayacak ve bunun sebebi aşağıdaki gibi olacaktır:
- Yazdırma seçenekleri arasında birçok değişiklik yapmak mümkün olabilecek ve bu durum özellikle renkli mürekkep püskürtmeli için, aşağıdaki örnekte olduğu gibi olacaktır:
- "Tek renk"(mono) için;
Colors=Gray
veInkCartridge=Black
- "renkli"(color) için;
Colors=Color
veInkCartridge=Color
- "Tek renk"(mono) için;
- Bazı özel yazdırma işlemleri, sadece belli çözünürlüklerde çalışabilir, özellikle "mürekkep püskürtmeli yazıcılarda" aşağıdaki örneklerde olduğu gibi:
- Çözünürlük
150dpi
,300dpi
, ve600dpi
olduğunda "tek renk"(mono) çalışacaktır. - Çözünürlük sadece
150dpi
ve300dpi
olduğunda "renkli"(color) çalışacaktır. SuSE Linux 8.2'den beri (özellikle Foomatic Vers.3.x) Bir çok PPD dosyalarındaki "Çıktı modu" seçeneği Püskürtmeli yazıcılar içindir. Kullanıcı çıktı biçemini seçtiğinde, tüm kişisel biçem ayarları ki sadece özel yazıcı çıktısı seçeneğidir, eşzamanlı olarak ayarlanacaktır. Bu sebeple, bir yazıcı için adet PPd dosyası yeterli olacaktır.
- Çözünürlük
- Yazdırma seçenekleri arasında birçok değişiklik yapmak mümkün olabilecek ve bu durum özellikle renkli mürekkep püskürtmeli için, aşağıdaki örnekte olduğu gibi olacaktır:
- "earth" ve "moon" adlı istemcilerin sıra(kuyruk) ayarı yoktur. Ayrıca "kök dizin"(root); normal kullanıcılar "tux" ve "geeko" da bu istemciler üzerindedirler.
- Sıra(kuyruk) ayarları yenden yapılandırılmadıkça; tüm makineler için,"tek renk"(mono)için sıra(kuyruk)ayarı, yazıcı çıktısı 600 dpi çözünürlükte, ve "renkli" için sıra(kuyruk)ayarı da 300 dpi çözünürlükte olacaktır.
Now the options will be changed in the following order: Şimdi de seçenekler aşağıdaki gibi değiştirilecektir:
- "root" (kök dizin) aşağıdaki komut ile, "sun" üzerinde, PPD dosyası içindeki temel çözünürlük değerini 150 dpi yapar:
lpadmin -p mono -o Resolution=150dpi
/etc/cups/ppd/mono.ppd
*DefaultColors: Gray *Colors Gray ... *Colors Color ... ... *DefaultInkCartridge: Black *InkCartridge Black *InkCartridge Color ... *DefaultResolution: 150dpi *Resolution 150dpi ... *Resolution 300dpi ... *Resolution 600dpi ... Thus, the queue "mono" prints in grayscale with a 150 dpi resolution for all users on all machines.
- Then "root" executes the following command on "sun":
lpoptions -p mono -o Resolution=300dpi
to set the default resolution value to 300 dpi only for the machine "sun" in its file/etc/cups/lpoptions
:
Dest mono Resolution=300dpi Thus, "mono" prints in grayscale with a 300 dpi resolution for all the users on "sun" and in grayscale with a 150 dpi resolution for all users on "earth" and "moon".
- Now "root" executes the following command on "earth":
lpoptions -p mono -o Resolution=600dpi
to set the default resolution value to 600 dpi only for the machine "earth" in its file/etc/cups/lpoptions
Dest mono Resolution=600dpi Thus, "mono" prints in grayscale with a 600 dpi resolution for all the users on "earth", in grayscale with a 300 dpi resolution for all the users on "sun", and in grayscale with a 150 dpi resolution for all the users on "moon".
- The normal user "tux" executes the following command on "earth":
lpoptions -p mono -o Resolution=300dpi
to set his default resolution value as 300dpi in his home directory in the file~/.lpoptions
:
Dest mono Resolution=300dpi Thus, "mono" prints in grayscale with a 300 dpi resolution for the user "tux" on "earth" and in grayscale with a 600 dpi resolution for the rest of users on "earth". The settings on "sun" and "moon" remain unchanged.
- The user "geeko" executes on "earth" the command
lpoptions -p mono -o Colors=Color
to change his settings for the queue "mono". The new settings for the user "geeko" will be saved in the file~/.lpoptions
in his home directory:
Dest mono Colors=Color Geeko's settings for the queue "mono" on "earth" make no sense, because two contradictory values are used:Colors=Color
andInkCartridge=Black
.
- "geeko" executes the following command on "earth":
lpoptions -p color -o Resolution=600dpi
to set his options for the queue "color" as follows. The new settings will be saved in his file~/.lpoptions
:
Dest color Resolution=600dpi
Dest mono Colors=Color
The settings of the queue "color" for "geeko" on "earth" are wrong, because the only deployed value is Resolution=600dpi
, which does not work for this printer (see above). This results in the queue "color" no longer working for "geeko" on "earth".
- "geeko" executes the following command on "earth":
lpoptions -p color -o Resolution=1200dpi -o Foo=Bar
to set his options for the queue "color" as follows. The new settings will be saved in his file~/.lpoptions
:
Dest color Resolution=1200dpi Foo=Bar Dest mono Colors=Color It is possible to set values likeResolution=1200dpi
and options likeFoo=Bar
, even though they are not considered in the PPD file. When printing, however, the default value from the PPD file (Resolution=300dpi
) will be used and the option (Foo=Bar
) will be ignored. Thus, the queue "color" works again for "geeko" on "earth", but the set values are totally unsuitable.
- When "root" deletes the queue "mono" on "sun" with the command
lpadmin -x mono
the now invalid entries in the fileslpoptions
mentioned above are not deleted, but remain unchanged. - "root" creates again the queue "mono" on "sun", but a different PPD file is used:
*DefaultColours: Gray *Colours Gray ... *Colours Color ... ... *DefaultResolution: 300x300dpi *Resolution 300x300dpi ... *Resolution 600x600dpi ... None of the previous entries in the fileslpoptions
are valid for the new queue "mono", since either the option names no longer match (Colours
instead ofColors
) so the option is ignored or the option values no longer match (300x300dpi
and600x600dpi
instead of150dpi
,300dpi
, and600dpi
) so the default value from the PPD file is used.
General Rules for Setting Definitions:
- When the user customizes an option (e.g., in his file
~/.lpoptions
), those settings will be used for the print job. - If a file
/etc/cups/lpoptions
is already available on the computer, only the options not previously defined by the user will be used for the print job. - If any invalid option has been defined in the previous steps, it will be ignored. If any option value is invalid, it will be replaced with the default value from the PPD file.
- Default values for the corresponding queue (specially default values from the PPD file) will be used for the remaining options.
The commandlpoptions -p "queue" -l
displays the possible settings. The values that, according to the rules above, will be used for a print job are marked with a preceding *
.
According to this, the user "geeko" on "earth" might have used the following command in item 7lpoptions -p color -l
to verify which settings would be used for his print job via the queue "color". He would have seen that these do not correspond to the settings in his file ~/.lpoptions
, because the output would be
Colors: Gray *Color InkCartridge: Black *Color Resolution: 150dpi *300dpi 600dpi
Suggestion for Keeping an Overview:
- Never define general presettings separately on each machine. Set the default values in the PPD file:
- If possible, do not use any
/etc/cups/lpoptions
files. - If possible, do not execute the command
lpoptions
as "root" on each machine. Instead, execute the commandlpadmin
on the CUPS server.
- If possible, do not use any
- Remove any unsuitable or unwanted setting from the PPD file manually or add appropriate constraints to the PPD file:
- For example, to avoid unsuitable settings as described in the items 5 and 6 above, "root" can edit the PPD files
/etc/cups/ppd/mono.ppd
and/etc/cups/ppd/color.ppd
manually on the CUPS server as follows (see also the article "ASCII Editors"):
- For example, to avoid unsuitable settings as described in the items 5 and 6 above, "root" can edit the PPD files
*DefaultColors: Gray *Colors Gray ... ... *DefaultInkCartridge: Black *InkCartridge Black ... ..."root" *DefaultResolution: 600dpi *Resolution 150dpi ... *Resolution 300dpi ... *Resolution 600dpi ... and *DefaultColors: Color *Colors Color ... ... *DefaultInkCartridge: Color *InkCartridge Color ... ... *DefaultResolution: 300dpi *Resolution 150dpi ... *Resolution 300dpi ...
- Adding appropriate constraints to the PPD file is another solution. The constraints avoid that the user can select incompatible value combinations in the PPD file, but often appropriate constraints are missing in the PPD files. The example PPD file with constraints may look as follows. Note that each constraint must be specified in both ways - for example: When "*Colors Gray" was selected then "*InkCartridge Color" is no longer allowed and when "*InkCartridge Color" was selected then "*Colors Gray" is no longer allowed.
*UIConstraints: *Colors Gray *InkCartridge Color *UIConstraints: *InkCartridge Color *Colors Gray *UIConstraints: *Colors Color *InkCartridge Black *UIConstraints: *InkCartridge Black *Colors Color *UIConstraints: *Colors Color *Resolution 600dpi *UIConstraints: *Resolution 600dpi *Colors Color *UIConstraints: *InkCartridge Color *Resolution 600dpi *UIConstraints: *Resolution 600dpi *InkCartridge Color ... *DefaultColors: Color *Colors Gray ... *Colors Color ... ... *DefaultInkCartridge: Color *InkCartridge Black ... *InkCartridge Color ... ... *DefaultResolution: 300dpi *Resolution 150dpi ... *Resolution 300dpi ... *Resolution 600dpi ...
- Some values might be possible for the printer, but unwanted for a particular queue, such as high resolutions for a "draft" queue. Such option settings should be removed for the particular queue. After manually changing PPD files, the CUPS daemon must be forced to reread the files by using the command
rccups reload
orrccups restart
.
- Some values might be possible for the printer, but unwanted for a particular queue, such as high resolutions for a "draft" queue. Such option settings should be removed for the particular queue. After manually changing PPD files, the CUPS daemon must be forced to reread the files by using the command
- The users must be informed about any queue modification on the CUPS server, if the modification leads to the invalidity of the settings in the users'
~/.lpoptions
files, especially if a queue is deleted completely or if a different PPD file will be used for an existing queue.- Then, the users can use the command
lpoptions -x "queue"
or, in the example above,lpoptions -x mono
to remove the corresponding entries from their~/.lpoptions
files then reconfigure their personal settings for the relevant queue. -
lpoptions -x
does not work for deleted queues. Invalid entries can be either ignored or manually deleted from the~/.lpoptions
file (see the SDB article "ASCII Editors"). - If personal settings will be newly configured, the whole file should first be deleted with the command
rm ~/.lpoptions
- Then, the users can use the command
SDB:Printer Configuration from SuSE Linux 8.1 on
SDB:Print Settings for ASCII Texts with CUPS
<keyword>print,printer,cups,settings,options</keyword>