Apt-show-versions: differenze tra le versioni
Nessun oggetto della modifica |
m (verificata) |
||
(20 versioni intermedie di 6 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
Per chi | {{Versioni compatibili|Jessie|Stretch|Buster|Testing_2019|Unstable_2019}} | ||
==Introduzione== | |||
Per chi utilizza un sistema misto (testing/Sid) è senz'altro utile sapere quanti e quali pacchetti provengono da quale [[release]]. | |||
===Sintassi e utilizzo== | 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. | ||
==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 install apt-show-versions | |||
</pre> | |||
==Sintassi e utilizzo== | |||
Dando il comando: | |||
<pre>$ apt-show-versions <nomepacchetto></pre> | <pre>$ apt-show-versions <nomepacchetto></pre> | ||
si ottiene: | |||
<pre><nomepacchetto>/<release> <aggiornabilità> (uptodate o upgradeable from xxx to yyy) <versione_attuale></pre> | <pre><nomepacchetto>/<release> <aggiornabilità> (uptodate o upgradeable from xxx to yyy) <versione_attuale></pre> | ||
Riga 15: | Riga 25: | ||
aptitude/squeeze uptodate 0.4.11.11-1</pre> | aptitude/squeeze uptodate 0.4.11.11-1</pre> | ||
Come sopra, otteniamo che il pacchetto aptitude | Come sopra, otteniamo che il pacchetto aptitude proviene da Squeeze, è aggiornato ed è alla versione 0.4.11.11-1.<br/> | ||
Per ottenere una lista di tutti i pacchetti basterà digitare il comando: | Per ottenere una lista di tutti i pacchetti basterà digitare il comando: | ||
Riga 21: | Riga 31: | ||
<pre>$ apt-show-versions</pre> | <pre>$ apt-show-versions</pre> | ||
dunque senza nessun pacchetto | dunque senza specificare nessun pacchetto.<br/> | ||
==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 una release=== | |||
È sufficiente filtrare tutti i risultati per [[suite]] e [[codename]] di quella release: | |||
<pre>$ apt-show-versions | grep -E "/(suite|codename)\b"</pre> | |||
In questo modo si catturano entrambi i casi, senza dipendere dalle scelte effettuate nel file <code>/etc/apt/sources.list</code>. | |||
{{Box | grep | L'opzione -E attiva le espressioni regolari estese, in questo caso permettendo l'uso di alternative senza bisogno di backslash. | |||
< | Il pattern precedente cerca tutte le release nella forma "/suite\b" oppure "/codename\b", dato che nell'output di <code>apt-sho-versions</code> le release sono precedute dal carattere '''<code>/</code>''' e sono seguite da uno spazio. | ||
'''\b''' indica la fine della parola. Per esempio se si cercasse '''/jessie''' sarebbero catturati anche ''jessie-updates'' e ''jessie-backports'', mentre con '''/jessie\b''' si trovano soltanto i repository principali di ''jessie''.}} | |||
<pre>$ apt-show-versions | grep sid | Per esempio per visualizzare tutti i pacchetti provenienti da [[Sid]]/[[unstable]]: | ||
<pre>$ apt-show-versions | grep -E "/(unstable|sid)\b"</pre> | |||
Per i [[backports]] ''suite'' e ''codename'' sono equivalenti, quindi è sufficiente: | |||
<pre>$ apt-show-versions | grep "/codename-backports\b"</pre> | |||
utilizzando il ''codename'' relativo alla release desiderata, oppure più semplicemente: | |||
<pre>$ apt-show-versions | grep "/.*-backports\b"</pre> | |||
<pre> | ===Contare tutti i pacchetti provenienti da Sid=== | ||
<pre>$ apt-show-versions | grep -E "/(unstable|sid)\b" | wc -l</pre> | |||
dove con | ===Rimuovere tutti i pacchetti provenienti da Sid=== | ||
<pre># apt remove $(apt-show-versions | grep -E "/(unstable|sid)\b" | cut -d / -f1)</pre> | |||
dove con <code>cut -d '/' -f1</code>, dividiamo la stringa dove c'è lo slash (/) e ne prendiamo solo il primo campo (<code>-f1</code>) per avere il nome del pacchetto senza le informazioni relative alla release, all'aggiornabilità e alla versione (che non sarebbero accettate da apt-get). | |||
===Pinning=== | ===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; | |||
<!-- COMMENTATO - NON PIU' RAGGIUNGIBILE: | |||
* la [http://www.debian.org/doc/manuals/quick-reference/ch-package.it.html guida ufficiale] Debian, nella sezione dedicata alla gestione dei pacchetti; | |||
--> | |||
* una interessante [http://forum.debianizzati.org/viewtopic.php?f=23&t=34728 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]]: | |||
<pre> $ apt-cache policy nomepacchetto </pre> | |||
Questo, come <code>apt-show-versions</code> 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: | |||
<pre> $ 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</pre> | |||
Un'ulteriore alternativa è l'utilizzo di [[aptitude]] con versions, che mostra sempre i risultati per [[suite]]. Ad esempio, per vedere i pacchetti provenienti da unstable (la ''suite'' di Sid) sul proprio sistema: | |||
<pre>$ aptitude versions --group-by=none \~i | grep unstable</pre> | |||
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 <code>apt-show-versions</code>): | |||
<pre># aptitude remove $(aptitude versions --group-by=none \~i | grep unstable | awk '{if ($2=="A") print $3; else print $2}')</pre> | |||
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 ! | Happy debian ! | ||
[[Utente:Brunitika|Brunitika]] | {{Autori | ||
|Autore=[[Utente:Brunitika|Brunitika]] | |||
|Estesa_da= | |||
|Verificata_da= | |||
:[[Utente:HAL 9000|HAL 9000]] 15:24, 14 lug 2019 (CEST) | |||
|Numero_revisori=1 | |||
}} | |||
[[Categoria:Apt]] | [[Categoria:Apt]] | ||
Versione attuale delle 13:24, 14 lug 2019
![]() Debian 8 "jessie" Debian 9 "stretch" Debian 10 "buster" |
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 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 una release
È sufficiente filtrare tutti i risultati per suite e codename di quella release:
$ apt-show-versions | grep -E "/(suite|codename)\b"
In questo modo si catturano entrambi i casi, senza dipendere dalle scelte effettuate nel file /etc/apt/sources.list
.
Per esempio per visualizzare tutti i pacchetti provenienti da Sid/unstable:
$ apt-show-versions | grep -E "/(unstable|sid)\b"
Per i backports suite e codename sono equivalenti, quindi è sufficiente:
$ apt-show-versions | grep "/codename-backports\b"
utilizzando il codename relativo alla release desiderata, oppure più semplicemente:
$ apt-show-versions | grep "/.*-backports\b"
Contare tutti i pacchetti provenienti da Sid
$ apt-show-versions | grep -E "/(unstable|sid)\b" | wc -l
Rimuovere tutti i pacchetti provenienti da Sid
# apt remove $(apt-show-versions | grep -E "/(unstable|sid)\b" | 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 accettate da apt-get).
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;
- 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:
$ 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, che mostra sempre i risultati per suite. Ad esempio, per vedere i pacchetti provenienti da unstable (la suite di Sid) 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 | ![]() |
Estesa da: | |
Verificata da:
| |
Verificare ed estendere la guida | Cos'è una guida Debianized |