Apt-mark: differenze tra le versioni
m (→In uno script) |
m (→In uno script) |
||
Riga 62: | Riga 62: | ||
=== In uno script === | === In uno script === | ||
Per controllare lo stato di un pacchetto (''nomepacchetto'') in uno script quindi è sufficiente controllare se viene restituito il nome del pacchetto oppure no: | Per controllare lo stato di un pacchetto (''nomepacchetto'') in uno script quindi è sufficiente controllare se viene restituito il nome del pacchetto oppure no: | ||
<pre>if [ "$(apt-mark showauto | <pre> | ||
# inserire il nome del pacchetto nella variabile | |||
pacchetto="nomepacchetto" | |||
if [ "$(apt-mark showauto "$pacchetto")" = "$pacchetto" ]; then | |||
echo "Pacchetto installato automaticamente" | echo "Pacchetto installato automaticamente" | ||
elif [ "$(apt-mark showmanual | elif [ "$(apt-mark showmanual "$pacchetto")" = "$pacchetto" ]; then | ||
echo "Pacchetto installato manualmente" | echo "Pacchetto installato manualmente" | ||
Riga 77: | Riga 81: | ||
Alternativamente si può controllare l'installazione con [[dpkg|dpkg-query]], contenuto in un pacchetto essenziale del sistema, in modo da usare soltanto una volta <code>apt-mark</code> per leggere gli stati, che è più lento di <code>dpkg-query</code>: | Alternativamente si può controllare l'installazione con [[dpkg|dpkg-query]], contenuto in un pacchetto essenziale del sistema, in modo da usare soltanto una volta <code>apt-mark</code> per leggere gli stati, che è più lento di <code>dpkg-query</code>: | ||
<pre> | <pre> | ||
# inserire il nome del pacchetto nella variabile | |||
pacchetto="nomepacchetto" | |||
# stato del pacchetto (eliminando il secondo carattere) | |||
stato=$(dpkg-query -f '${db:Status-Abbrev}' -W "$pacchetto" 2> /dev/null) && | |||
stato=${stato%?} || | |||
stato="" | |||
if [ "$stato" != "i" ]; then | |||
echo "Pacchetto non installato" | echo "Pacchetto non installato" | ||
elif [ "$(apt-mark showauto | elif [ "$(apt-mark showauto "$pacchetto")" = "$pacchetto" ]; then | ||
echo "Pacchetto installato automaticamente" | echo "Pacchetto installato automaticamente" | ||
Versione delle 19:53, 8 apr 2015
Versioni Compatibili Tutte le versioni supportate di Debian |
|
Introduzione
apt-mark è un comando per visualizzare e modificare lo stato dei pacchetti installati nel sistema, in particolare se sono stati installati in automatico (stato: auto) o manualmente (stato: manual), e se futuri aggiornamenti sono bloccati (stato: hold) oppure no.
Fa parte del pacchetto apt, assieme per esempio a:
- apt-get per svolgere le operazioni di installazione, aggiornamento e rimozione dei pacchetti;
- apt-cache per effettuare operazioni di ricerca su tutti i pacchetti di Debian.
Comandi principali
- auto
# apt-mark auto pacchetto1 pacchetto2 ... pacchettoNModifica lo stato della lista dei pacchetti come installati in automatico, e quindi installati solo per soddisfare le dipendenze di altri pacchetti. Si noti che un pacchetto con tale stato può essere rimosso automaticamente con
apt-get autoremove
oppure durante un aggiornamento, in base alle impostazioni del comando utilizzato, se non c'è almeno un pacchetto installato manualmente che dipende da esso.
- manual
# apt-mark manual pacchetto1 pacchetto2 ... pacchettoNModifica lo stato della lista dei pacchetti come installati manualmente, e quindi segnalati al sistema APT come richiesti specificatamente dall'utente. Non saranno quindi rimovibili in automatico durante un aggiornamento o in seguito alla rimozione di altri pacchetti, anche se non essenziali.
- hold
# apt-mark hold pacchetto1 pacchetto2 ... pacchettoNPreviene l'aggiornamento di tutti i pacchetti, marcandoli come hold.
- unhold
# apt-mark unhold pacchetto1 pacchetto2 ... pacchettoNRimuove il blocco sull'aggiornamento dei pacchetti, rimuovendo lo stato hold, se precedentemente impostato.
- showauto
$ apt-mark showautoLista tutti i pacchetti installati automaticamente sul sistema per soddisfare altre dipendenze.
- showmanual
$ apt-mark showmanualLista tutti i pacchetti installati manualmente sul sistema, compresi quelli in fase di installazione.
- showhold
$ apt-mark showholdLista tutti i pacchetti installati sul sistema per i quali sono impediti futuri aggiornamenti.
Controllare lo stato di un pacchetto
I comandi showauto
, showmanual
e showhold
possono essere usati con degli argomenti, per specificare l'insieme di pacchetti tra cui limitare la selezione degli stati desiderati.
Quindi per esempio:
$ apt-mark showauto nomepacchetto
restituisce nomepacchetto soltanto se è stato installato in automatico, e niente altrimenti (pacchetto non installato oppure installato manualmente).
Mentre per controllare se è installato manualmente, il seguente comando deve restituire nomepacchetto:
$ apt-mark showmanual nomepacchetto
In uno script
Per controllare lo stato di un pacchetto (nomepacchetto) in uno script quindi è sufficiente controllare se viene restituito il nome del pacchetto oppure no:
# inserire il nome del pacchetto nella variabile pacchetto="nomepacchetto" if [ "$(apt-mark showauto "$pacchetto")" = "$pacchetto" ]; then echo "Pacchetto installato automaticamente" elif [ "$(apt-mark showmanual "$pacchetto")" = "$pacchetto" ]; then echo "Pacchetto installato manualmente" else echo "Pacchetto non installato" fi
Purtroppo non esiste un altro modo, se non ricorrendo ad aptitude, dato che per apt-mark
non c'è nemmeno un valore di ritorno da controllare.
Alternativamente si può controllare l'installazione con dpkg-query, contenuto in un pacchetto essenziale del sistema, in modo da usare soltanto una volta apt-mark
per leggere gli stati, che è più lento di dpkg-query
:
# inserire il nome del pacchetto nella variabile pacchetto="nomepacchetto" # stato del pacchetto (eliminando il secondo carattere) stato=$(dpkg-query -f '${db:Status-Abbrev}' -W "$pacchetto" 2> /dev/null) && stato=${stato%?} || stato="" if [ "$stato" != "i" ]; then echo "Pacchetto non installato" elif [ "$(apt-mark showauto "$pacchetto")" = "$pacchetto" ]; then echo "Pacchetto installato automaticamente" else echo "Pacchetto installato manualmente" fi
Manpages
man apt-mark
Guida scritta da: HAL 9000 19:04, 8 apr 2015 (CEST) | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |