# Opções do &CUPS; indisponíveis de momento no &kcontrol;

Este capítulo dá ao utilizador algumas sugestões acerca de mais possibilidades de configuração que podem não estar disponíveis através da interface gráfica do &CUPS; no &kdeprint;.

## Resumo das funcionalidades oferecidas

Todas as funcionalidades mais usadas que o &CUPS; oferece são suportadas pelo &kdeprint;.

- A gestão de impressoras é suportada: adicionar, remover, modificar, configurar, testar, desactivar, activar ...

- A gestão de tarefas é suportada: cancelar, reter, libertar, mover para outra impressora

- Opções de impressão: para um controlo completo da forma que o &CUPS; possibilita.

## Onde encontrar ajuda ao usar o &CUPS;

Existe uma grande quantidade de informação acerca do funcionamento interno do &CUPS; na interface Web, a qual o &CUPS; irá sempre suportar. Funciona com qualquer navegador Web (sim, até mesmo os em modo texto). Basta o utilizador aceder a http://localhost:631/ inicialmente. Aí, irá encontrar uma ligação para a documentação do &CUPS; disponível localmente em HTML e PDF, se for novato no &CUPS;.

O &CUPS; está acessível através de outras formas que não o &kdeprint;: a linha de comandos e o navegador Web são duas interfaces nativas do &CUPS;. Os vários utilitários da linha de comandos possibilitam o controlo completo do &CUPS;. A interface Web representa apenas um sub-conjunto das opções de controlo ou configuração.

Isto também é verdade para o &kdeprint;. De um modo geral, à medida que o &CUPS; se desenvolve, a maioria das funcionalidades serão primeiro implementadas através da linha de comandos. Confirme se for tendo as últimas versões das páginas de manual do &CUPS;, para se manter actualizado com as novas funcionalidades, depois de instalar uma nova versão.

Dependendo do seu método de actualização do &CUPS;, o seu ficheiro de configuração activo pode não ter sido substituído por um novo; por isso, o seu novo e mais poderoso servidor de &CUPS; pode não ter sido notificado pelo ficheiro de configuração antigo, acerca das novas funcionalidades.

Deve estar sempre disponível uma lista completa dos ficheiros disponíveis e das páginas de manual no Manual de Administração de Software do &CUPS; (http://localhost:631/sam.html#FILES. No campo de URL/localização do &konqueror;, escreva `man:/lpadmin` e `man:/cupsd.conf` para descobrir o comando mais importante e o ficheiro de configuração. Já deverá conhecer a capacidade interessante do &konqueror; para mostrar as páginas do 'man' de &UNIX;, não conhece? Leia isto. A partir daqui, poderá descobrir mais sugestões e referências a outras páginas de manual e documentação.

### Como encontrar páginas de manual relacionadas com o &CUPS;

Aqui está uma forma de descobrir quais as páginas de manual do &CUPS; que existem no seu sistema:

    kurt@transmeta:~
    > apropos cups
    cups-calibrate (8)   - Ferramenta de Calibração de Impressoras ESP
    lpstat (1)           - imprime a informação de estado da impressão no cups
    cups-lpd (8)         - recebe tarefas de impressão e comunica o estado da impressora aos clientes de lpd
    classes.conf (5)     - ficheiro de configuração da classe no cups
    backend (1)          - interfaces de transmissão da infra-estrutura do cups
    filter (1)           - interfaces do filtro de conversão do cups
    cups-polld (8)       - servidor de detecção de impressoras do cups
    mime.types (5)       - ficheiro de descrição do tipo MIME para o cups
    cupsd (8)            - o servidor do cups
    lpadmin (8)          - configura as impressoras e classes do cups
    cupsd.conf (5)       - ficheiro de configuração do servidor do cups
    mime.convs (5)       - ficheiro de conversão do tipo MIME do cups
    printers.conf (5)    - ficheiro de configuração de impressoras do cups
    mime.convs (5)       - ficheiro de conversão do tipo MIME para o cups
    cups-polld (8)       - servidor de detecção de impressoras do cups
    lpstat (1)           - imprime a informação de estado da impressão no cups
    backend (1)          - interfaces de transmissão da infra-estrutura do cups
    mime.types (5)       - ficheiro de descrição do tipo MIME do cups
    cupsd (8)            - o servidor do cups
    lpadmin (8)          - configura as impressoras e classes do cups
    printers.conf (5)    - ficheiro de configuração de impressoras do cups
    cupsd.conf (5)       - ficheiro de configuração do servidor do cups
    filter (1)           - interfaces do filtro de conversão de ficheiros do cups
    cups-lpd (8)         - recebe tarefas de impressão e comunica o estado da impressora aos clientes do lpd

## Fora do &kdeprint;: Dicas & e Truques com o &CUPS; na Linha de Comandos

Aqui estão alguns exemplos de opções que só estão, de momento, disponíveis na linha de comandos.

### Permitir ou proibir o acesso às impressoras por parte de certos utilizadores

Ao instalar (ou modificar) uma impressora, através da linha de comandos, tanto poderá permitir como negar a utilização dessa impressora a certos utilizadores:

    lpadmin -pHeidelbergDigimaster9110 -v lpd:/10.160.16.99/mqueue -u allow:kurt,sylvi,hansjoerg -E -P /home/kurt/PPDs/DVHV.ppd

irá permitir a utilização desta (acredite em mim: muito boa e também muito profissional) impressora somente aos três utilizadores mencionados e, ao mesmo tempo, proibir o acesso a todos os outros. Se outro utilizador quiser imprimir na DigiMaster através deste servidor de &CUPS;, irá receber uma mensagem de erro ao longo das linhas client-error-not-possible.

    lpadmin -p HeidelbergDigimaster9110 -v lpd:/10.160.16.99/mqueue -u deny:tackat,boss,waba -E -P /home/kurt/PPDs/DVHV.ppd

irá negar a utilização da mesma impressora aos três utilizadores indicados e, ao mesmo tempo, permiti-la a todos os outros. Se o utilizador proibido quiser imprimir na DigiMaster através deste servidor de &CUPS;, irá receber uma mensagem de erro ao longo das linhas client-error-not-possible.

Só uma das duas opções pode ser usada de cada vez; de momento não existe o suporte para ter uma opção semelhante de uma forma baseada em grupos. Isto será implementado no futuro.

### Impor quotas para certas impressoras

Algumas das vezes, poderá querer impor quotas para certas impressoras. Com as quotas, poderá definir limites superiores para o número de páginas ou a quantidade de dados a serem impressos, durante um certo período ou numa certa impressora.

As quotas podem ser definidas, com a opção `-o`, quando instalar uma impressora com o comando `lpadmin` ou, posteriormente, para uma impressora existente. Seguem-se algumas regras (que não constam na altura na documentação oficial do &CUPS;):

- Com o &CUPS;, poderá ter quotas baseadas no número de páginas e no tamanho dos ficheiros para as impressoras individualmente.

- As quotas são calculadas para cada utilizador em separado (de modo a que um conjunto simples de limites se aplique a todos os utilizadores para a impressora em questão).

- As quotas incluem as páginas de "banners" (se forem usadas).

- Isto significa que o utilizador poderá limitar cada utilizador a 20 páginas por dia numa impressora cara, mas não poderá limitar todos os utilizadores, excepto o Kurt ou o root.

- Existem opções `job-k-limit` (tamanho das tarefas em k), `job-page-limit` (limite de páginas por tarefa) e `job-quota-period` (período de quota da tarefa) que podem ser atribuídas ao configurar uma impressora.

- O `job-quota-period` define um intervalo de tempo ao calcular a quota (os intervalos estão definidos em segundos; de modo que um dia são 60x60x24=86 400, uma semana são 60x60x24x7=604 800 e um mês são 60x60x24x30=2 592 000 segundos).

- Para as quotas serem aplicadas, o período de tempo mais, pelo menos, um limite de tarefa deverá ser não-nulo.

- O valor por omissão igual a 0 para o `job-k-limit` define a inexistência de limite.

- O valor por omissão igual a 0 para o `job-page-limit` significa que não existe limite.

- O valor por omissão de 0 para o `job-quota-period` significa que os limites se aplicam a todas as tarefas que foram impressas por um utilizador e que ainda constam do conhecimento do sistema.

#### Exemplos Funcionais:

Como são definidos os limites de tarefas e de período de tempo

    lpadmin -p danka_infotec_4850 -o job-quota-period=604800 -o job-k-limit=1024

Isto define um limite no tamanho dos ficheiros igual a 1 MB (no total), para cada utilizador, na impressora chamada danka_infotec_4850, durante uma semana.

    lpadmin p danka_infotec_4105 -o job-quota-period=604800 -o job-page-limit=100

Isto define um limite de 100 páginas (no total), para cada utilizador na impressora danka_infotec_4105, durante uma semana.

    lpadmin -p danka_infotec_P450 -o job-quota-period=604800 -o job-k-limit=1024 -o job-page-limit=100

Isto define um valor combinado de 1 MB (no total) e de 100 páginas (no total), para cada utilizador na impressora danka_infotec_P450, durante uma semana. O primeiro limite atingido torna-se efectivo.

#### Exemplos não-funcionais

NÃO funcionam, porque só está definido um período de tempo ou limite de tarefas)

    lpadmin -p danka_infotec_P320 -o job-quota-period=604800

    lpadmin -p danka_infotec_FullColor -o job-page-limit=100

    lpadmin -p danka_infotec_HiSpeed -o job-k-limit=1024

#### Mensagens de Erro Relacionadas

Uma vez atingido o limite de quota para um utilizador, o mesmo irá obter uma mensagem client-error-not-possible, se quiser imprimir.

### Instalar uma impressora não-formatada

Existem diferentes maneiras de definir uma impressora não-formatada. A mais confortável será usar o comando `lpadmin`. Basta não definir um ficheiro &PPD;, para usar com essa impressora, para que passe a não ser uma impressora formatada:

    lpadmin -p Raw_Danka_infotec -E -v lpd://10.160.16.137/PORT1

As filas de impressão não-formatadas são aquelas que não alteram o ficheiro de impressão, de modo a transformá-lo num formato de ficheiro diferente. O utilizador irá necessitar disto, por exemplo, se quiser imprimir a partir de clientes de &Windows;, usando o Samba para interagir com um servidor de &CUPS; com uma impressora PCL: neste caso, o controlador da impressora no &Windows; iria gerar o formato do ficheiro de impressão final para a impressora de destino e iria passar através dos filtros do &CUPS;, o que iria prejudicar o resultado final. Sob certas circunstâncias (se quiser ter a certeza que o ficheiro vai para a impressora por filtrar pelo &CUPS;) o `lpadmin` sem a &PPD; é bastante adequado.

## Resolução de Problemas do &CUPS; no &kdeprint;

Esta secção do manual do &kdeprint; irá depender da reacção dos leitores. Segue-se uma pequena introdução.

### Mensagens de Erro

O que significa o erro client-error-bad-request?

O utilizador enviou um ficheiro para o &CUPS;, cujo servidor não conseguiu processar. Também poderá obter este erro ao enviar um ficheiro vazio.

E o client-error-not-possible?

O utilizador não tem permissões para imprimir numa dada impressora ou atingiu a sua quota (baseada no tamanho dos ficheiros ou no número de páginas)

O que é o client-error-not-found?

O utilizador tentou aceder a um recurso inexistente no servidor do &CUPS;, assim como pode ter tentado imprimir um ficheiro inexistente ou para o qual é negada a permissão de leitura.

### Perguntas e Respostas

Porque não consigo reiniciar as minhas tarefas?

Para ser capaz de reiniciar as suas tarefas completas, a partir da interface Web, necessita de uma opção do ficheiro `/etc/cups/cupsd.conf`: active a `PreserveJobFiles True`.

Como é que me vejo livre da enorme lista de tarefas concluídas na interface Web?

A FAZER

Como funciona a contabilidade de páginas?

O &CUPS; implementa a contabilidade de impressões, passando praticamente todas as tarefas através do filtro pstops. Este faz, entre outras coisas, a contagem de páginas. O resultado deste filtro pode então ser enviado para outros filtros (como o pstoraster --> rastertopcl) ou enviado directamente para a impressora (se for uma impressora &PostScript;).

Em qualquer um dos casos, isto funciona para as impressoras de rede, paralelas, série ou USB da mesma forma. Para o 'pstops' funcionar, precisa de um DSC, isto é, &PostScript; em conformidade com a Document Structuring Convention (ou equivalente) como entrada. Deste modo, calcula as páginas, durante a filtragem no servidor de impressão, e regista algumas informações acerca de cada página (a que hora, de que utilizador, com que ID e nome de tarefa, para que impressora, quantas cópias de páginas do documento, quantos quilobytes?) no `/var/log/cups/page_log`.

Já agora: na lista pessoal de desejos, existe uma alteração do webalizer para ler e analisar o 'page_log' e dar um resultado semelhante. Alguém quer?

Contudo, não está a dar resultados correctos nos seguintes casos:

- A impressora encrava e pode, por isso, ter eliminado a tarefa (experiência da vida real; ou simplesmente ter eliminado a tarefa, por causa de problemas com o formato de dados)

- As tarefas impressas como não-formatadas contam sempre como 1 página (e talvez várias cópias).

Por isso, a contabilidade de páginas do &CUPS; é somente uma aproximação (em muitos dos casos excelente, nos outros muito fraca). A única contagem de impressões de confiança é a que é realizada pelo contador interno da impressora (Porque esta é a que você irás pagar, se estiver num sistema de pagamento). Algumas (longe de ser a maioria) impressoras podem ser questionadas remotamente, para obter essa informação, através de SNMP (Simple Network Management Protocol). Isto significa que, numa rede grande com muitas impressoras diferentes, não existe nenhuma ferramenta fiável de contabilidade de páginas!

Porque é que a contabilidade de páginas não funciona com os clientes de &Windows;?

Nos clientes de &Windows;, as tarefas quase sempre têm de ser enviadas como não-formatadas. Porquê? Se o &CUPS; funciona como um servidor de impressão, para os clientes do &Windows;, usando o controlador original do &Windows; para o dispositivo de destino, isto garante a formatação correcta da tarefa nos clientes à partida; por isso, o servidor não deve alterar a tarefa e deve imprimi-la sem formatação; por isso, não é iniciada nenhuma filtragem (e isto não é sequer possível, dado que os resultados dos cliente não são &PostScript; do qual o 'pstops' fica à espera; por isso, não existe números de páginas para além do 1.

Como é que posso obter uma lista das opções disponíveis, para uma dada impressora ou um ficheiro &PPD;?

Veja a página de manual do comando `lpoptions`. Poderá investigar uma máquina com o &CUPS; activado, em relação às opções das suas impressoras disponíveis. Não é necessário ter a impressora instalada localmente. Enquanto estiver disponível localmente (através da funcionalidade do &CUPS; de navegação de impressoras), também funcionará remotamente.

Para pesquisar uma opção de uma impressora, ao escrever ``lpoptions` `-p` `HitachiDDP70MicroPress` `-l``, irá obter uma lista extensa de todas as opções disponíveis, lidas a partir do ficheiro &PPD; para a impressora Hitachi indicada (no meu caso, está instalada no servidor remoto da 'transmeta'). O servidor remoto Transmeta e o seu servidor de &CUPS;, assim como o do 'localhost', precisam de estar a funcionar para tudo correr bem.

Como leio a lista devolvida pelo comando `lpoptions`?

Deverá saber que, para os fabricantes de impressoras &PostScript;, é legal definir os seus nomes internos e procedimentos, mesmo para as opções normalizadas do &PostScript;. Desde que o controlador seja capaz de obter a opção do &PPD; e mostrá-la de uma forma que ele compreenda, está tudo bem. Mas o que é que você faria, se quisesse utilizar algumas opções obscuras da impressora na linha de comandos? Como é que iria conhecer a sua sintaxe exacta?

Vejamos um exemplo. Se virmos a impressora DDP70 da Hitachi e como ela implementa a impressão duplex, esta revela-se de alguma forma. Como é que você diz para imprimir dos dois lados? duplex ou Duplex? Ou outro nome?.

    lpoptions -h transmeta -p Hitachi_DDP70_ClusterPrintingSystem -l | grep uplex

Isto conduz ao resultado

    TR-Duplex/Duplex: False *True

Isto é para ser interpretado da seguinte forma:

- O nome da opção investigada é `TR-Duplex`;

- Por trás da barra, poderá ver a tradução da opção, como deve ser mostrada numa interface &GUI; ou Web (Duplex);

- A opção pode tomar um de dois valores `Falso` ou `Verdadeiro`;

- O valor actual é `Verdadeiro`, se for reconhecido pela marcação com um asterisco `*`.

Para alterar o valor actual (duplex) e imprimir uma tarefa em simplex, precisa de usar o seguinte comando:

    lpr -P Hitachi_DDP70_ClusterPrintingSystem -o TR-Duplex=False /local/da/sua/tarefa

Como é que obtenho uma lista bem formatada das opções disponíveis, para uma dada impressora ou &PPD;?

Use o comando `lphelp`, que pode estar instalado localmente no seu sistema. Ainda não existe uma página de manual para o `lphelp`.

    lphelp infotecP450

Esta lista as opções disponíveis para a impressora indicada. Encontra-se bem formatada e explica cada opção disponível, bem como a usar. Poderá pesquisar as opções das diferentes impressoras de uma vez:

    lphelp infotec7410color DANKA_fullcolor_D2000 HP_ColorLaserJet8550

Também funciona para os ficheiros &PPD;. Basta definir a localização do &PPD;:

    lphelp /home/kurt/PPDs/HP-ColorLaserJet8550.ppd

### Resolução de Problemas

Nenhum sistema é perfeito. Existem algumas armadilhas bastante comuns onde as pessoas caíram.

A minha impressora chamada 3-lp-duplex tem um comportamento anormal. O que se passa?

Os nomes das impressoras usados no &CUPS; devem começar por uma letra e podem conter até 128 letras, números ou sublinhados. O uso de hífenes pode conduzir a problemas. Por falar em nomes: os nomes das impressoras do &CUPS; não se distinguem por maiúsculas ou minúsculas. Como tal, uma impressora chamada Best_of_Danka será a mesma que best_of_danka ou BEST_OF_DANKA. (Este é um requisito do &IPP;, com o qual o &CUPS; se encontra em conformidade).

Porque é que obtenho o erro Incapaz de ligar à máquina de SAMBA: Sucesso com as minhas partilhas de impressora do &Windows; acedidas através do Samba?

Estão definidos correctamente os privilégios na máquina remota do &Windows;? Tem permissões para imprimir na impressora partilhada do &Windows;?

Os meus ficheiros da impressora lp, por vezes, desaparecem misteriosamente e dois dias depois vêm-me dizer que foram impressos numa impressora 3 andares abaixo do meu escritório. O que se passa?

Acredite, é muito pouco provável que a sua impressora seja a única com o nome lp. Talvez o &CUPS; lhe esteja a pregar uma partida. Dado que pode ter a opção Classes Implícitas ligada, o &CUPS; tenta juntar todas as impressoras que vê na rede numa classe lp. Todas as tarefas destinadas à 'lp' são enviadas para esta classe e o primeiro membro disponível imprime-a. Por isso, é provável que essa pessoa tenha instalado o &CUPS; e percorrido o sistema... percebeu?

Siga o meu conselho: utilize um nome único para qualquer impressora de rede! (Lembre-se que a sua impressora, a que está ligada na sua porta paralela, também se pode tornar uma impressora de rede se não tiver atenção com a sua configuração).