13.1.1 Pacchetti tarball
Un tarball è un file contenente un insieme di altri file, in formato non compresso, che ha
generalmente l’estensione .tar. Tale file viene gestito dal comando tar (man page tar(1))
che è un “archiviatore” di file, ovvero non fa altro che raggruppare più file all’interno di un
unico file.
____________________________________________________________________
Comando: tar
Path: /bin/tar
SINTASSI
$ tar [option] file_name [file_name_2 [...]]
DESCRIZIONE
-
option indica le opzioni di funzionamento di tar. Può assumere i seguenti
valori:
-
-A | --catenate | --concatenate
aggiunge uno o più archivi ad un archivio;
-
-c | --create
crea un nuovo archivio;
-
-d | --diff | --compare
confronta il contenuto di un archivio con i file presenti su un
filesystem, evidenziandone le differenze;
-
--delete
rimuove uno o più file da un archivio;
-
-r | --append
aggiunge uno o più file in un archivio;
-
-t | --list
elenca i file contenuti in un archivio;
-
-u | --update
aggiunge soltanto i file più recenti di quelli già presenti nell’archivio;
-
-x | --extract | --get
estrae i file da un archivio;
-
--atime-preserve
preserva la data/ora dell’ultimo accesso dei file estratti dall’archivio;
-
-b num | --block-size num
imposta la dimensione dei blocchi in num × 512 byte (default
num=20);
-
-B | --read-full-blocks
ridimensiona i blocchi man mano che li legge;
-
-C dir | --directory dir
cambia la directory in dir;
-
--checkpoint
visualizza i nomi delle directory durante la lettura dell’archivio;
-
-f [hostname:]filename | --file [hostname:]filename
indica l’archivio rappresentato dal file filename sul computer
hostname (default /mnt/rmt0);
-
--force-local
il file contenente l’archivio è sul sistema locale anche se è stato
specificato il carattere ‘:’;
-
-F filename | --info-script filename | --new-volume-script filename
esegue lo script contenuto nel file filename alla fine di ogni volume
(nastro);
-
-G | --incremental
indica di considerare l’archivio di tipo incrementale (vecchia versione
GNU);
-
-g filename | --listed-incremental filename
indica di considerare l’archivio di tipo incrementale (nuova versione
GNU);
-
-h | --dereference
indica di non considerare i symlink, ma direttamente i file ai quali
essi si riferiscono;
-
-i | --ignore-zeros
indica di ignorare i blocchi di zero contenuti nell’archivio
(normalmente hanno il significato di EOF, ovvero fine del file);
-
-j | -I | --bzip
tratta l’archivio con bzip2 (l’uso di -I è deprecato);
-
--ignore-failed-read
indica di ignorare gli errori di lettura dei file;
-
-k | --keep-old-files
non sovrascrive i file già presenti sul filesystem con quelli contenuti
nell’archivio;
-
-K filename | --starting-file filename
indica di iniziare le operazioni dal file filename;
-
-l | --one-file-system
indica di creare l’archivio sul filesystem locale;
-
-L num | --tape-length num
specifica l’ampiezza del volume (nastro) in num × 1024 byte;
-
-m | --modification-time
indica di non estrarre dall’archivio la data/ora relativa all’ultima
modifica dei file;
-
-M | --multi-volume
indica di effettuare le operazioni relative ad un archivio su più volumi
(nastri);
-
-N date | --after-date date | --newer date
memorizza i file più recenti di date;
-
-o | --old-archive | --portability
indica di creare un archivio nel formato V7 anziché ANSI;
-
-O | --to-stdout
indica di estrarre i file sullo standard output (sul monitor del
terminale);
-
-p | --same-permissions | --preserve-permissions
indica di estrarre i file preservandone i permessi di accesso;
-
-P | --absolute-paths
indica di non rimuovere il path dai nomi dei file presenti nell’archivio;
-
--preserve
come -p -s;
-
-R | --record-number
visualizza il numero del file nell’archivio in ogni messaggio;
-
--remove-files
indica di cancellare i file dopo averli aggiunti all’archivio;
-
-s | --same-order | --preserve-order
indica di estrarre i file nello stesso ordine di quelli contenuti
nell’archivio;
-
--same-owner
indica di estrarre i file contenuti nell’archivio preservandone il
proprietario;
-
-S | --sparse
tratta in maniera efficiente gli sparse file;
-
-T filename | --files-from=filename
legge l’elenco dei nomi dei file da aggiungere/estrarre a/da l’archivio
dal file filename;
-
--null indica di leggere i nomi dei file terminati dal carattere NUL;
-
--totals
visualizza il numero totale dei byte scritti con --create;
-
-v | --verbose
visualizza l’elenco dei file su cui sono state effettuate le operazioni;
-
-V volname | --label volname
crea l’archivio con il nome di volume volname;
-
--version
visualizza la versione del comando tar;
-
-w | --interactive | --confirmation
indica di richiedere una conferma per ogni operazione;
-
-W | --verify
tenta di verificare l’archivio subito dopo averlo effettivamente scritto
sul supporto magnetico;
-
--exclude filename
indica di escludere il file filename dalle operazioni;
-
-X filename | --exclude-from filename
indica di escludere dalle operazioni l’elenco di file contenuto nel file
filename;
-
-Z | --compress | --uncompress
tratta l’archivio con compress;
-
-z | --gzip | --ungzip
tratta l’archivio con gzip;
-
--use-compress-program cmdname
tratta l’archivio con cmdname (NB. cmdname deve essere compatibile
con l’opzione -d);
-
file_name è il nome del file da aggiungere/estrarre in/da l’archivio (possono essere
specificati più file o una o più directory);
____________________________________________________________________
Quindi, per installare il software contenuto in un pacchetto .tar, è sufficiente copiare il file
che lo contiene all’interno di una directory ed estrarre i file in esso contenuti con il seguente
comando
# tar -xvf nome_file.tar
dove nome_file.tar è il nome del file contenente il tarball.
Per esigenze di spazio, tali pacchetti vengono generalmente compressi mediante i
programmi compress, gzip o bzip2. Si ottengono così file con dimensioni più contenute, con
le estensioni .tar.Z, .taZ o .taz (tarball compressi con compress), .tar.gz o .tgz (tarball
compressi con gzip) e .tar.bz2, .tar.bz, .tbz2 o .tbz (tarball compressi con
bzip2).
Per installare un pacchetto tarball compresso con compress o gzip, si deve prima
decomprimere il file con l’opportuno decompressore, uncompress o gunzip (gunzip è
completamente compatibile con uncompress), ottenendo un tarball che può essere
trattato come precedentemente illustrato. Si possono anche effettuare entrambi i passi
contemporaneamente, con il comando
# tar -zxvf nome_file
dove optnome_file è il nome del file contenente il tarball, compresso con gzip. Esso ha
generalmente estensione .tar.Z, .taZ, .taz, .tar.gz o .tgz.
Per installare un pacchetto tarball compresso con bzip2, si deve prima decomprimere il
file con l’opportuno decompressore bunzip2, ottenendo un tarball che può essere
trattato come precedentemente illustrato. Si possono anche effettuare entrambi i passi
contemporaneamente, con il comando
# tar -jxvf nome_file
dove nome_file è il nome del file contenente il tarball, compresso con bzip2. Esso ha
generalmente estensione .tar.bz2, .tar.bz, .tbz2 o .tbz.
A questo punto sarà possibile utilizzare il pacchetto stesso dopo aver letto le
relative istruzioni, presenti, in genere, in un file denominato README, INSTALL,
o simili, all’interno della directory creata dalla decompressione del pacchetto
stesso.
Poiché il comando tar esegue soltanto l’estrazione di più file da un unico file,
eventualmente compresso, non si ha la possibilità di eseguire comandi specifici, inerenti
all’installazione di un software su un filesystem. Pertanto è probabile che, una volta estratti i
file del software considerato, si debba anche lanciare uno specifico comando per
l’inizializzazione di alcuni file, che generalmente viene effettuata con uno script di shell
denominato install.sh (o qualcosa del genere).
Nel caso in cui si voglia installare un software di cui si ha un tarball contenente i file
sorgenti dello stesso (il nome del file è del tipo pkg_name.scr.ext, dove pkg_name è il nome
indicativo del pacchetto e ext è l’estensione che denota il tipo del pacchetto), è
necessario effettuare la compilazione dei sorgenti prima di poter utilizzare il software. La
compilazione dei sorgenti è un’operazione complessa e delicata, e poiché non esiste una
procedura standard è necessario leggere la documentazione distribuita assieme ai
sorgenti.
Tipicamente la procedura di installazione di un pacchetto di sorgenti si riassume nei
seguenti passi:
# tar -zxvf nome_file
# cd package_dir
# ./configure
# make
# make install
dove nome_file è il nome del file contenente il pacchetto tarball compresso (in questo caso si
è considerato soltanto il caso della compressione con compress o gzip) e package_dir è la
directory creata dalla decompressione del file stesso.
Di seguito è riportata una breve descrizione dei comandi precedenti:
-
tar -zxvf nome_file scompatta il file nome_file. Generalmente viene creata una directory
(package_dir) in cui viene messo il contenuto del pacchetto;
-
cd package_dir imposta la working directory a quella appena creata dalla
scompattazione del file nome_file;
-
./configure verifica le dipendenze tra i file sorgenti e crea il makefile (file
contenente le opportune direttive per il compilatore);
-
make per mezzo del makefile creato precedentemente compila i sorgenti,
creando i file eseguibili dal sistema;
-
make install copia i file necessari (eseguibili e non) nelle opportune directory in
modo da rendere utilizzabile l’applicazione considerata.