Apt-show-versions: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (verificata)
Riga 1: Riga 1:
{{Versioni compatibili}}
{{Versioni compatibili}}
==Introduzione==
==Introduzione==
Per chi utilizza un sistema misto (testing/Sid) è senz'altro utile sapere quanti e quali pacchetti provengono da quale [[release]].


Per chi come me utilizza un sistema misto (testing/Sid) è ogni tanto utile sapere quanti e quali pacchetti provengono da quale [[release]]. Proprio dopo il recente aggiornamento a Squeeze/Sid mi sono trovato con diversi pacchetti provenienti da Sid. Non tutti sono forse però basilari per il sistema; intendo dire, alcuni sono magari prelevabili da Squeeze, senza scomodare Sid.<br/>
A questo scopo esiste <code>apt-show-versions</code>, che permette di ottenere facilmente la lista di tutti i pacchetti di una data release, meglio di [[apt-cache]] e [[aptitude]], che funzionano meglio se invocati su singoli pacchetti.
Cercando in lungo e in largo tutte le espressioni regolari possibili con [[aptitude]], non sono riuscito a trovare un buon metodo per ottenere il risultato voluto. Infine sono incappato in <code>apt-show-versions</code>, e ho capito subito che le mie ricerche avevano dato buon frutto.<br/>
 
==Installazione==
<code>apt-show-versions</code> è un pacchetto opzionale, per cui per prima cosa va installato l'omonimo pacchetto. Per cui per esempio, con [[privilegi di amministrazione]]:
<pre>
# apt-get install apt-show-versions
</pre>


==Sintassi e utilizzo==
==Sintassi e utilizzo==
Dando il comando:
Dando il comando:


Riga 89: Riga 94:
{{Autori
{{Autori
|Autore=[[Utente:Brunitika|Brunitika]]
|Autore=[[Utente:Brunitika|Brunitika]]
|Estesa_da=
|Verificata_da=
:[[Utente:HAL 9000|HAL 9000]] 21:20, 11 mag 2015 (CEST)
|Numero_revisori=1
}}
}}


[[Categoria:Apt]]
[[Categoria:Apt]]

Versione delle 19:20, 11 mag 2015

Debian-swirl.png Versioni Compatibili

Tutte le versioni supportate di Debian

Introduzione

Per chi utilizza un sistema misto (testing/Sid) è senz'altro utile sapere quanti e quali pacchetti provengono da quale release.

A questo scopo esiste apt-show-versions, che permette di ottenere facilmente la lista di tutti i pacchetti di una data release, meglio di apt-cache e aptitude, che funzionano meglio se invocati su singoli pacchetti.

Installazione

apt-show-versions è un pacchetto opzionale, per cui per prima cosa va installato l'omonimo pacchetto. Per cui per esempio, con privilegi di amministrazione:

# apt-get install apt-show-versions

Sintassi e utilizzo

Dando il comando:

$ apt-show-versions <nomepacchetto>

si ottiene:

<nomepacchetto>/<release> <aggiornabilità> (uptodate o upgradeable from xxx to yyy) <versione_attuale>

Ad esempio:

$ apt-show-versions aptitude
aptitude/squeeze uptodate 0.4.11.11-1

Come sopra, otteniamo che il pacchetto aptitude proviene da Squeeze, è aggiornato ed è alla versione 0.4.11.11-1.

Per ottenere una lista di tutti i pacchetti basterà digitare il comando:

$ apt-show-versions

dunque senza specificare nessun pacchetto.

Alcuni esempi

Grazie all'utilizzo di qualche pipe, ovvero la possibilità di eseguire un comando o un'applicazione all'interno di un altro, e di grep, necessario per "filtrare" il risultato, potremmo ora scegliere, contare, rimuovere, tutti i pacchetti di una particolare release.

Visualizzare tutti i pacchetti provenienti da Sid

$ apt-show-versions | grep sid

Contare tutti i pacchetti provenienti da Sid

$ apt-show-versions | grep sid | wc -l

Rimuovere tutti i pacchetti provenienti da Sid

# aptitude remove `apt-show-versions | grep sid | cut -d '/' -f1`

dove con cut -d '/' -f1, dividiamo la stringa dove c'è lo slash (/) e ne prendiamo solo il primo campo (-f1) per avere il nome del pacchetto senza le informazioni relative alla release, all'aggiornabilità e alla versione (che non sarebbero "digerite" da aptitude).

Pinning

Dal momento che l'utilità del pacchetto si trova in un sistema misto, molto probabilmente anche se non necessariamente, utilizzerete il pinning per gestire i pacchetti provenienti da release diverse.

Approfondimenti

Ulteriori risorse:

  • manpage relative ai comandi citati in questa guida;
  • la guida ufficiale Debian, nella sezione dedicata alla gestione dei pacchetti;
  • una interessante discussione sul forum di Debianizzati.

Alternative simili

Soprattutto in caso di un sistema con pinning dei pacchetti si suggerisce anche l'utilizzo del comando:

 $ apt-cache policy nomepacchetto 

Questo, come apt-show-versions mostra la versione del pacchetto installata ed i possibili upgrade, inoltre indica per ogni possibile versione del medesimo sia il repository di provenienza sia il valore di pinning attribuito.

Ad esempio, sul mio sistema:

 $ apt-cache policy aptitude
aptitude:
  Installed: 0.6.1.5-3
  Candidate: 0.6.1.5-3
  Version table:
     0.6.2.1-2 0
        600 http://ftp.it.debian.org unstable/main Packages
 *** 0.6.1.5-3 0
        990 http://ftp.it.debian.org squeeze/main Packages
        100 /var/lib/dpkg/status
     0.4.11.11-1~lenny1 0
         10 http://ftp.it.debian.org stable/main Packages

Un'ulteriore alternativa è l'utilizzo di aptitude con versions. Ad esempio, per vedere i pacchetti provenienti da unstable sul proprio sistema:

$ aptitude versions --group-by=none ~i | grep unstable

in questo modo cerchiamo le versioni di tutti i pacchetti installati (~i), visualizzando per ogni riga il nome del pacchetto con la versione e la provenienza (--group-by=none) e filtrando con un semplice "grep" le versioni che provengono da "unstable" appunto. Se si volesse passare il tutto ad esempio allo stesso aptitude per rimuovere tutti i pacchetti in unstable (v. esempio con apt-show-versions):

# aptitude remove $(aptitude versions --group-by=none ~i | grep unstable | awk '{if ($2=="A") print $3; else print $2}')

siamo "costretti" ad utilizzare awk (al posto di cut) in quanto i primi indici delle linee potrebbero essere "i" e poi <nome_pacchetto> oppure "i A" <nome_pacchetto> se quest'ultimo è stato installato automaticamente e dunque come dipendenza. awk ci permette dunque di inserire la "clausola" di verificare se è presente appunto il carattere "A" come secondo elemento (ricordo che awk utilizza di default gli spazi come delimitatori) e di stampare dunque il terzo elemento (dunque il nome del pacchetto, altrimenti quest'ultimo come secondo elemento).

Happy debian !




Guida scritta da: Brunitika Swirl-auth40.png Debianized 40%
Estesa da:
Verificata da:
HAL 9000 21:20, 11 mag 2015 (CEST)

Verificare ed estendere la guida | Cos'è una guida Debianized