Provided by: manpages-it_0.3.4-5_all bug

NOME

       locatedb - base di dati di nomi di file compressa con front

DESCRIZIONE

       Questa  pagina  di  manuale  documenta il formato delle basi di dati di
       nomi di file per la versione GNU di locate.  Le basi di dati di nomi di
       file  contengono  le  liste  dei file presenti in particolari directory
       l’ultima volta che tali basi di dati sono state aggiornate.

       Ci possono essere diverse basi di dati. Gli utenti possono decidere  su
       quali  basi  di  dati  locate deve fare la ricerca usando una variabile
       d’ambiente o  un’opzione  in  riga  di  comando;  si  veda  locate(1L).
       L’amministratore di sistema può scegliere il nome di file della base di
       dati di default, la frequenza con la quale sono aggiornate le  basi  di
       dati,  e  le  directory  per  le  quali queste contengono informazioni.
       Solitamente, le basi di dati di nomi di file sono aggiornate  lanciando
       periodicamente  il  programma  updatedb (tipicamente di notte); si veda
       updatedb(1L).

       updatedb lancia un programma chiamato frcode per comprimere, usando  la
       compressione  front  ("front-compression"),  le  liste di nomi di file,
       riducendo in tal modo la dimensione della base di dati di 4 o 5  volte.
       La   compressione  front  (nota  anche  come  codifica  incrementale  -
       "incremental encoding") funziona come segue.

       Le voci della base di dati sono una lista ordinata  (considerando,  per
       convenienza  dell’utente, maiuscole e minuscole equivalenti). Poiché la
       lista è ordinata, è probabile  che  ogni  voce  condivida  un  prefisso
       (stringa iniziale) con la voce precedente. Ogni voce della base di dati
       inizia con un byte di  conteggio  dell’offset  differenziale  ("offset-
       differential  count  byte"),  che è il numero di caratteri del prefisso
       della voce precedente da usare, oltre a quelli che tale  voce  usa  dei
       suoi  predecessori  (il  contatore  può  essere  negativo).   Dopo  del
       contatore c’è il rimanente ASCII (terminato con un null) — la parte del
       nome che segue il prefisso condiviso.

       Se   il  valore  dell’offset  differenziale  è  maggiore  di  quanto  è
       immagazzinabile in un byte (+/-127), tale byte sarà posto pari a 0x80 e
       il  contatore  seguirà  in  una  parola  di  2  byte,  con  il byte più
       significativo per primo (ordinamento dei byte di  rete  -"network  byte
       order").

       Ogni  base  di  dati  inizia con una voce fittizia per il file chiamato
       ‘LOCATE02’, che locate controlla per assicurarsi che il  formato  della
       base di dati sia corretto; questa voce è ignorata durante la ricerca.

       Le  basi di dati non possono essere concatenate una all’altra, anche se
       la prima voce (quella fittizia) è rimossa da  tutte  tranne  che  dalla
       prima.  Questo  perché  il valore dell’offset differenziale della prima
       voce della seconda e delle successive basi di dati sarà errato.

       Ciò vale anche per il vecchio formato delle  basi  di  dati  usato  dai
       programmi  Unix locate e find e dalle prime release delle versioni GNU.
       updatedb lancia i programmi chiamati bigram e code per produrre le basi
       di  dati  nel  vecchio  formato.  Il  vecchio  formato differisce dalla
       descrizione precedente nel seguente modo. Invece di far  iniziare  ogni
       voce con con un byte per il contatore dell’offset differenziale e farla
       finire con un null, i valori del byte da 0  a  28  indicano  un  valore
       dell’offset  differenziale  da  -14 a 14. Il valore del byte che indica
       che di seguito è presente un contatore dell’offset differenziale  lungo
       è   0x1e   (30),  non  0x80.  I  contatori  lunghi  sono  immagazzinati
       nell’ordine di byte della macchina  ("host  byte  order"),  che  non  è
       necessariamente  il network byte order, e nella dimensione delle parole
       della macchina, che di solito è di 4 byte. Questi inoltre rappresentano
       un  numero  che  è 14 in meno del loro valore effettivo. Le righe della
       base di dati non hanno nessun byte di terminazione; l’inizio della riga
       successiva  è  indicato  dal primo byte che ha valore minore o uguale a
       30.

       Inoltre, invece di cominciare con una voce fittizia, il vecchio formato
       delle  basi  di dati inizia con un tabella di 256 byte contenente i 128
       "bigrammmi" più comuni nella lista dei file. Un bigrammma ("bigram")  è
       una  coppia  di  byte adiacenti. I byte che nella base di dati hanno il
       bit  più  significativo  a  1  sono  indicizzati  (con   il   bit   più
       significativo  posto  a  0) nella tabella dei bigrammi. I bigrammi e la
       codifica dei contatori dell’offset differenziale rendono queste basi di
       dati  il  20-25%  più  piccole  rispetto a quelle nel nuovo formato, ma
       fanno sì che non siano "8-bit clean". Qualsiasi byte che in un nome  di
       file  è  nel  range usato per i codici speciali viene rimpiazzato nella
       base di dati da un  punto  di  domanda,  il  quale  non  a  caso  è  il
       metacarattere  della  shell  che  corrisponde ad un qualsiasi carattere
       singolo.

ESEMPIO

       Ingresso a frcode:
       /usr/src
       /usr/src/cmd/aardvark.c
       /usr/src/cmd/armadillo.c
       /usr/tmp/zoo

       Lunghezza dei prefissi più lunghi condivisi con le voci
       precedenti:
       0 /usr/src
       8 /cmd/aardvark.c
       14 rmadillo.c
       5 tmp/zoo

       Output di frcode, con i null finali cambiati in newline  e  i  byte  di
       conteggio resi stampabili:
       0 LOCATE02
       0 /usr/src
       8 /cmd/aardvark.c
       6 rmadillo.c
       -9 tmp/zoo

       (6 = 14 - 8, e -9 = 5 - 14)

VEDERE ANCHE

       find(1L),  locate(1L),  locatedb(5L),  xargs(1L) Finding Files (Info in
       linea, o stampato)

                                                                  LOCATEDB(5L)