Risposte:
Secondo questa discussione :
Per elencare i pacchetti installati:
dpkg --list | wc --lines
Per vedere se un pacchetto è installato:
dpkg --list | grep package
dpkg -l | grep -c '^ii'
Esistono varianti sottili come dpkg -l | grep -c '^?i'
se si desidera includere pacchetti installati ma di cui è stata richiesta la rimozione. Un altro modo è
aptitude search '~i' |wc -l
Puoi anche infilare direttamente nel database dpkg:
sh -c 'set /var/lib/dpkg/info/*; echo $#'
Questo include pacchetti che non sono installati ma che hanno lasciato file di configurazione; puoi elencarli con dpkg -l | grep '^rc'
.
Quello che ho usato è:
dpkg --get-selections | wc --lines
Questo ti darà il numero di pacchetti installati.
Se vuoi scoprire se è installato un pacchetto specifico, usa:
dpkg --get-selections | grep <package>
Credo che questo risolverà la lamentela di Gilles sull'inclusione di altri pacchetti non installati .
Se si desidera un conteggio esatto dei pacchetti, non è necessario contare le righe di intestazione emesse da dpkg-query -l
, quindi è necessario un modello per abbinare le righe che iniziano con ii
. Il seguente one-liner fornisce il numero di righe che iniziano con ii
e quindi il numero di pacchetti installati:
dpkg-query -l | grep "^ii" | wc -l
Questo dà lo stesso output di
dpkg --get-selections | grep "[[:space:]]install" | wc -l
Il modello grep nel secondo comando ignora le righe che contengono la stringa "deinstall" nell'output di dpkg --get-selections
.
Ad esempio, puoi farlo:
dpkg-query -l | nl | tail -1 | awk '{print $1}'
nl | tail -1 | awk '{print $1}'
riporterà il numero di righe nel suo input (tranne, se non c'è input, non dirà nulla invece di riferire 0
) - ma perché consiglieresti un tale kludge quando sono già in uso altre risposte wc -l
?
rc
(Disinstallati ma con i file di configurazione rimasti) nel tuo conteggio.