Personalizzare l'elenco dei pacchetti

Personalizzare la visualizzazione dei pacchetti
Personalizzare la gerarchia dei pacchetti
Personalizzare l'ordinamento dei pacchetti

L'elenco dei pacchetti può essere in vasta parte personalizzato: come i pacchetti vengono visualizzati, come viene formata la gerarchia dei pacchetti, come vengono ordinati i pacchetti e persino come è organizzata la visualizzazione sono tutte cose che è possibile modificare.

Personalizzare la visualizzazione dei pacchetti

Questa sezione descrive come configurare il contenuto e il formato dell'elenco dei pacchetti, della riga di stato e di quella d'intestazione, così come l'output di aptitude search.

Il formato di ciascuna di queste cose è definito da una «stringa di formato». Una stringa di formato è una stringa di testo che contiene codici % come %p, %S e così via. L'output risultante viene creato prendendo il testo e sostituendo i codici % in base al loro significato (descritto in seguito).

Un codice % può avere una dimensione fissa, nel qual caso viene sempre sostituito dalla stessa quantità di testo (se necessario, aggiungendo caratteri di spazio in più di riempimento), oppure può essere «espandibile», cioè può usare lo spazio che non è reclamato da colonne di dimensione fissa. Se c'è più di una colonna espandibile, lo spazio in più viene suddiviso in modo equo tra tutte le colonne.

Tutti i codici % vengono forniti con una dimensione predefinita o con espandibilità. La dimensione di un codice % può essere modificata scrivendola tra il carattere % e il carattere che identifica il codice; per esempio, %20V genera la versione candidata del pacchetto con una larghezza di 20 caratteri. Se si mette un punto interrogativo (?) tra il % e il carattere che identifica il codice, la larghezza «base» della colonna varia a seconda del suo contenuto. Notare che le colonne risultanti potrebbero non essere allineate verticalmente!

Se si desidera che un particolare codice % sia espandibile, anche se normalmente ha una larghezza fissa, farlo immediatamente seguire da un carattere cancelletto (cioè «#»). Ad esempio, per visualizzare la versione candidata di un pacchetto, indipendentemente da quanto sia lunga, usare la stringa di formato %V#. Si può anche mettere un # dopo qualcosa che non è un codice %: aptitude «espande» allora il testo che precede il # inserendo spazi aggiuntivi dopo di esso.

In breve, la sintassi di un codice % è:

%[larghezza][?]codice[#]

Le variabili di configurazione Aptitude::UI::Package-Display-Format, Aptitude::UI::Package-Header-Format e Aptitude::UI::Package-Status-Format definiscono rispettivamente i formati predefiniti per l'elenco dei pacchetti, l'intestazione in cima all'elenco dei pacchetti, e la riga di stato sotto all'elenco dei pacchetti. Per cambiare il modo in cui viene visualizzato il risultato di un comando aptitude search, usare l'opzione-F.

Nelle stringhe di formato sono disponibili i seguenti codici %:

[Nota]Nota

Alcune delle descrizioni che seguono fanno riferimento a «il pacchetto». Nella GUI, questo è o il pacchetto visualizzato o il pacchetto attualmente selezionato; nelle ricerche da riga di comando è il pacchetto visualizzato.

CodiceNomeDimensione predefinitaEspandibileDescrizione
%%% letterale1No Questo non è realmente un codice; inserisce semplicemente un segno di percentuale nell'output nel punto in cui appare.
%#numeroSostituzione di parametriVariabileNo In alcune circostanze, una stringa di formato di visualizzazione possiede dei «parametri»: ad esempio, nella riga di comando search, i gruppi che corrispondono alla ricerca vengono usati come parametri quando vengono visualizzati i risultati. Questo codice di formato viene sostituito dal parametro indicato da numero.
%aContrassegno per l'azione1No Un contrassegno di un solo carattere che riassume ogni azione da effettuare sul pacchetto, come descritto in Figura 2.10, «Valori dell'indicatore dell'«azione»».
%AAzione10No Una descrizione un po' più lunga dell'azione da effettuare sul pacchetto.
%BConteggio difettosi12No Se non ci sono pacchetti difettosi non produce nulla. Altrimenti, produce una stringa del tipo «Errati: 10» che descrive il numero dei pacchetti difettosi.
%cContrassegno dello stato attuale1No Un contrassegno di un solo carattere che riassume lo stato attuale del pacchetto, come descritto in Figura 2.9, «Valori dell'indicatore dello «stato attuale»».
%CStato attuale11No Una descrizione più lunga dello stato attuale del pacchetto.
%dDescrizione40 La descrizione breve del pacchetto.
%DDimensione del pacchetto8No La dimensione del file di pacchetto che contiene il pacchetto.
%EArchitettura10No Produce in output la strina dell'architettura, per esempio «amd64».
%eSorgente30No Produce in output il pacchetto sorgente, per esempio «aptitude» per «aptitude-doc-en».
%HNome host15No Il nome del computer su cui è in esecuzione aptitude.
%iPriorità di pin4No Visualizza la priorità più alta assegnata ad una versione di pacchetto; per i pacchetti, visualizza la priorità della versione che verrà imposta come quella da installare (se ce n'è una).
%IDimensione da installato8No La quantità (stimata) di spazio che il pacchetto occupa sul disco.
%mManutentore30 Il manutentore del pacchetto.
%MContrassegno di automatico1No Se il pacchetto è stato installato automaticamente, produce in output «A», altrimenti l'output è vuoto.
%nVersione del programmaLa lunghezza di «0.8.9».No Produce in output la versione di aptitude che è in esecuzione, attualmente «0.8.9».
%NNome del programmaLa lunghezza del nome.No Produce in output il nome del programma; solitamente «aptitude».
%oDimensione di scaricamento17No Se non ci sono pacchetti che verranno installati, l'output è vuoto. Altrimenti produce in output una stringa che descrive la dimensione totale dei file di pacchetto che verranno installati (una stima di quanti dati devono essere scaricati); ad esempio, «Scarica: 1000B».
%OOrigine30No Produce in output una stringa con l'origine del pacchetto, per esempio «Debian: unstable [amd64]».
%pNome del pacchetto30 Produce in output il nome del pacchetto. Quando un pacchetto è visualizzato in un contesto ad albero, il nome del pacchetto verrà fatto rientrare, se possibile, in modo appropriato alla sua profondità nell'albero.
%PPriorità9No Produce in output la priorità del pacchetto.
%rConteggio delle dipendenze inverse2No Produce in output il numero approssimato dei pacchetti installati che dipendono dal pacchetto.
%RPriorità abbreviata3No Produce in output una descrizione abbreviata della priorità del pacchetto: per esempio, «Importante» diventa «Imp».
%sSezione10No Produce in output la sezione del pacchetto.
%SStato di fiducia1No Se il pacchetto non è fidato, visualizza la lettera "U".
%tArchivio10 L'archivio in cui si trova il pacchetto.
%TEtichettato (e user-tags)30No

Produce in output «*» se il pacchetto è etichettato, altrimenti nulla.[19]

Questo campo include anche user-tags.

%uCambiamento nell'uso del disco30No Se le azioni pianificate modificheranno la quantità di spazio usato su disco, produce in output una descrizione del cambiamento; ad esempio, «Occuperà 100MB su disco.»
%vVersione attuale14No Produce in output la versione attualmente installata del pacchetto oppure <nessuna> se il pacchetto non è attualmente installato.
%VVersione candidata14No Produce in output la versione del pacchetto che verrebbe installata se PacchettoInstalla (+) fosse eseguito sul pacchetto, o <nessuna> se il pacchetto non è attualmente disponibile.
%ZCambiamento in dimensione9No Produce in output quanto spazio aggiuntivo verrà usato o quanto spazio verrà liberato dall'installazione, l'aggiornamento o la rimozione di un pacchetto.

Personalizzare la gerarchia dei pacchetti

La gerarchia dei pacchetti viene generata da una politica di raggruppamento: le regole descrivono come la gerarchia debba essere costruita. La politica di raggruppamento descrive una «successione» di regole; ciascuna regola può scartare pacchetti, creare sotto-gerarchie in cui inserire i pacchetti o manipolare l'albero in altro modo. Le voci di configurazione Aptitude::UI::Default-Grouping e Aptitude::UI::Default-Preview-Grouping impostano, rispettivamente, le politiche di raggruppamento per gli elenchi e le schermate di anteprima appena creati. È possibile impostare la politica di raggruppamento per l'elenco attuale dei pacchetti premendo G.

La politica di raggruppamento è descritta da un elenco di regole separate da virgole: regola1,regola2,.... Ogni regola consiste del nome della regola, eventualmente seguito da argomenti: ad esempio, versions o section(subdir). Se gli argomenti siano necessari e quanti siano necessari (o permessi) dipende dal tipo di regola.

Le regole possono essere non-terminali o terminali. Una regola non terminale elabora un pacchetto generando una parte della gerarchia e quindi passando il pacchetto ad una regola successiva. Invece una regola terminale genera lo stesso una parte dell'albero (tipicamente voci che corrispondono ai pacchetti), ma non passa il pacchetto ad una regola successiva. Se non viene specificata alcuna regola terminale, aptitude usa la regola predefinita, che è quella di creare le «voci di pacchetto» standard.

action

Raggruppa i pacchetti in base all'azione pianificata per essi; i pacchetti che non sono aggiornabili e che non verranno modificati vengono ignorati. Questo è il raggruppamento che viene usato negli alberi di anteprima.

architecture

Raggruppa i pacchetti in base alla loro architettura.

deps

Questa è una regola terminale.

Crea voci di pacchetto standard che possono essere espanse per rivelare le dipendenze del pacchetto.

filter(modello)

Include solo i pacchetti per i quali almeno una versione corrisponde a modello.

Se modello è «assente» non viene scartato alcun pacchetto. Questa è una funzionalità inserita per compatibilità all'indietro e potrebbe essere rimossa in futuro.

firstchar[(modalità)]

Raggruppa i pacchetti in base all'iniziale del loro nome.

Per la precisione non è sempre la prima lettera: per i pacchetti che iniziano con lib* il nome del gruppo è liba, libb, ... come nei FTP Debian.

modo può essere uno dei seguenti:

binary

Raggruppa in base al nome del pacchetto binario. Questo è il comportamento predefinito se non viene specificata alcuna modalità.

Esempio 2.7. Politica di raggruppamento firstchar o firstchar(binary)

Prendendo come esempio il pacchetto sorgente dpkg, i pacchetti binari dselect, dpkg e dpkg-dev vengono raggruppati sotto la d, mentre libdpkg-dev e libdpkg-perl vengono aggiunti al gruppo libd.


source

Raggruppa in base al nome del pacchetto sorgente.

Questo è utile ad esempio quando si sfogliano i pacchetti provenienti dallo stesso pacchetto sorgente (politica di raggruppamento source) all'interno di vaste raccolte (esempi: tutti i pacchetti installati, tutti i pacchetti aggiornabili, tutti i pacchetti dalla sezione «main», per aggiungere un livello di raggruppamento intermedio. In questo modo si può, ad esempio, emulare la gerarchia dei FTP (provare a raggruppare per: section(topdir),firstchar(source),source").

Esempio 2.8. Politica di raggruppamento firstchar(source)

Prendendo nuovamente ad esempio il pacchetto sorgente dpkg, tutti i pacchetti binari dselect, dpkg, dpkg-dev, libdpkg-dev e libdpkg-perl vengono raggruppati sotto la d.


pattern(modello [=> titolo] [{ politica }] [, ...])

Una politica di raggruppamento personalizzabile. Ogni versione di ogni pacchetto viene confrontata con il/i modello/i specificato/i. La prima corrispondenza trovata viene usata per assegnare un titolo al pacchetto; i pacchetti vengono quindi raggruppati in base al loro titolo. Le stringhe nella forma \N che appaiono in titolo vengono sostituite dall'N-simo risultato della corrispondenza. Se titolo non è presente, gli viene assegnato il valore \1. Notare che i pacchetti che non corrispondono ad alcun modello non compaiono affatto nell'albero dei pacchetti.

Esempio 2.9. Uso di pattern per raggruppare i pacchetti in base al loro manutentore.

pattern(?maintainer() => \1)


L'esempio precedente raggruppa i pacchetti in base al loro campo Maintainer. La politica pattern(?maintainer()) fa la stessa cosa, dato che per il titolo mancante viene usato il predefinito \1.

Invece di => titolo, una voce può terminare con ||. Questo indica che i pacchetti che corrispondono al relativo modello saranno inseriti nell'albero allo stesso livello del raggruppamento pattern invece di essere inseriti in sottoalberi.

Esempio 2.10.  Uso di pattern con alcuni pacchetti posti nel livello più alto

pattern(?action(remove) => Packages Being Removed, ?true ||)


L'esempio precedente mette i pacchetti che stanno per essere rimossi in un sottoalbero e mette tutti gli altri pacchetti nel livello attuale, raggruppati in base alle politiche che seguono pattern.

In modo predefinito, tutti i pacchetti che corrispondono a ciascun modello sono raggruppati in base alle regole che seguono la politica del pattern. Per specificare una diversa politica per alcuni pacchetti, scrivere la politica tra parentesi graffe ({}) dopo il titolo del gruppo, dopo le || o dopo il modello se nessuno dei due è presente. Per esempio:

Esempio 2.11.  Uso della politica di raggruppamento pattern con sottopolitiche.

pattern(?action(remove) => Packages Being Removed {}, ?action(install) => Packages Being Installed, ?true || {status})


La politica nell'esempio precedente ha i seguenti effetti:

  • I pacchetti che stanno per essere rimossi vengono messi in un sottoalbero chiamato «Packages Being Removed»; la politica di raggruppamento per questo sottoalbero è vuota, perciò i pacchetti vengono messi in un semplice elenco.

  • I pacchetti che stanno per essere installati vengono messi in un sottoalbero chiamato Packages Being Installed e raggruppati secondo le politiche che seguono pattern.

  • Tutti i pacchetti rimasti vengono messi nel livello più alto dell'albero, raggruppati in base al loro stato.

Vedere sezione chiamata «Modelli di ricerca» per maggiori informazioni sul formato di modello.

priority

Raggruppa i pacchetti in base alla loro priorità.

section[(modo[,passthrough])]

Raggruppa i pacchetti in base al loro campo Section.

modo può essere uno dei seguenti:

none

Raggruppa in base all'intero campo Section, perciò vengono create categorie quali «non-free/games». Questo è il valore predefinito se non viene specificato modo.

topdir

Raggruppa in base alla parte del campo Section che precede il primo carattere /; se questa parte di Section non viene riconosciuta, o se non c'è alcun carattere /, viene usata invece la prima voce nell'elenco Aptitude::Sections::Top-Sections.

subdir

Raggruppa in base alla parte del campo Section dopo il primo carattere /, se è presente nell'elenco Aptitude::Sections::Top-Sections. Se non è presente o se non c'è alcun carattere /, raggruppa in base all'intero campo Section.

subdirs

Raggruppa in base alla parte del campo Section dopo il primo carattere /, se la parte del campo che lo precede è contenuta nell'elenco Aptitude::Sections::Top-Sections; in caso contrario, o se non c'è alcun carattere /, viene usato l'intero campo. Se c'è più di un carattere / nella parte del campo che è usata, viene formata una gerarchia di gruppi. Per esempio, se «games» non è un membro di Aptitude::Sections::Top-Sections, allora un pacchetto della sezione «games/arcade» viene messo sotto il titolo di più alto livello «games», in un sottoalbero chiamato «arcade».

Se è presente passthrough, i pacchetti che per qualche ragione mancano di una vera Section (per esempio i pacchetti virtuali) vengono passati direttamente al livello successivo di raggruppamento senza essere prima messi in sottocategorie.

status

Raggruppa i pacchetti nelle seguenti categorie:

  • Aggiornamenti di sicurezza

  • Aggiornabili

  • Nuovi

  • Installati

  • Non installati

  • Obsoleti e creati localmente

  • Virtuali

source

Raggruppa i pacchetti in base al nome del loro pacchetto sorgente.

tag[(faccetta)]

Raggruppa i pacchetti in base all'informazione Tag memorizzata nei file di pacchetto Debian. Se viene specificata faccetta, allora vengono visualizzate solo le etichette corrispondenti a quella faccetta di significato, e i pacchetti che non hanno questa faccetta vengono nascosti; altrimenti, tutti i pacchetti vengono visualizzati almeno una volta (con i pacchetti senza etichette elencati separatamente da quelli che hanno etichette).

Per maggiori informazioni sui debtags, vedere http://debtags.alioth.debian.org.

task

Crea un albero chiamato «Task» che contiene i task disponibili (le informazioni sui task vengono lette da debian-tasks.desc nel pacchetto tasksel). La regola che segue task crea le sue categorie come fratelli di Task.

versions

Questa è una regola terminale.

Crea voci standard per i pacchetti che possono essere espanse per rivelare le versioni del pacchetto.

Personalizzare l'ordinamento dei pacchetti

In modo predefinito, i pacchetti nell'elenco dei pacchetti o nell'output di aptitude search vengono ordinati in base al nome. Tuttavia, è spesso utile ordinarli secondo criteri diversi (per esempio la dimensione del pacchetto) e aptitude permette di fare proprio questo modificando la politica di ordinamento.

Come la politica di raggruppamento descritta nella sezione precedente, la politica di ordinamento è un elenco separato da virgole. Ogni voce nell'elenco è il nome di una regola di ordinamento; se i pacchetti sono «uguali» per ciò che riguarda la prima regola, per ordinarli viene usata la seconda regola, e così via. Un carattere tilde (~) che precede una regola ne inverte il significato normale. Per esempio, priority,~name ordina i pacchetti in base alla priorità, ma i pacchetti con la stessa priorità vengono ordinati in modo inverso in base al nome.

Per cambiare la politica di ordinamento per un elenco di pacchetti attivo, premere S. Per cambiare l'ordinamento predefinito per tutti gli elenchi dei pacchetti, impostare l'opzione di configurazione Aptitude::UI::Default-Sorting. Per cambiare la politica di ordinamento per aptitude search, usare l'opzione da riga di comando --sort.

Le regole disponibili sono:

installsize

Ordina i pacchetti in base alla quantità stimata di spazio di cui hanno bisogno una volta installati.

installsizechange

Ordina i pacchetti in base all'entità della modifica della dimensione installata (quantità stimata di spazio richiesta quando installati), confrontando la versione attuale (se installata) e la versione candidata all'installazione, aggiornamento o rimozione.

debsize

Ordina i pacchetti in base alla loro dimensione.

name

Ordina i pacchetti in base al nome.

priority

Ordina i pacchetti in base alla priorità.

version

Ordina i pacchetti in base al loro numero di versione.



[19] Attualmente l'etichettatura non è gestita; questo codice verrà usato in futuro.