Elencare tutto il software installato da un componente particolare (non gratuito, contrib)


12

C'è un modo per elencare tutto non-freee il contribsoftware installato in Debian tramite apt?

/etc/apt/sources.list è come segue

deb http://ftp.us.debian.org/debian/ wheezy main non-free contrib
deb-src http://ftp.us.debian.org/debian/ wheezy main non-free contrib

deb http://security.debian.org/ wheezy/updates main non-free contrib
deb-src http://security.debian.org/ wheezy/updates main non-free contrib

# wheezy-updates, previously known as 'volatile'
deb http://ftp.us.debian.org/debian/ wheezy-updates main
deb-src http://ftp.us.debian.org/debian/ wheezy-updates main

Ho aggiunto non-freee contribanni fa perché avevo bisogno di un driver non libero per la mia scheda video, che ora è stato sostituito con uno nuovo che non richiede un driver non libero. Vorrei sbarazzarmi delle cose non libere, ma temo di aver installato altri software non liberi negli anni che non posso permettermi di disinstallare.


Risposte:


15
  • dpkg-query -W -f='${Section}\t${Package}\n' | grep ^non-free
  • aptitude search '~i ?section(non-free)'

Section sarà non libero / ... per tutto, dal percorso non libero.

[Nota] per i documenti gcc ...

 This documentation is licensed under the terms of the GNU Free
 Documentation License, and contains invariant sections, so it can't be
 part of Debian main.

(Mi chiedevo anche questo, ma non mi sono preoccupato di controllare fino a quando non è stato menzionato.)


Entrambi hanno prodotto risultati diversi ( pastebin.com/rAhYHTk8 ). La roba di NVIDIA è il driver, quindi dpkg sembra giusto! Upvoted. Mi chiedo solo cosa ci faccia gcc-doc.
Alex,

La roba NVIDIA era già stata rimossa, probabilmente la elencava perché manteneva il .deb o qualcosa del genere. Ho appena ricordato una cosa che ho da non libero che non era elencato: i dpkg -l | grep -i nonfreerisultati in flashplugin-nonfree. Mi chiedo perché questo non sia elencato per attitudine e se in realtà elenca tutto da non libero.
Alex,

2
Perché è in contrib :: debian / pool / contrib / f / flashplugin-nonfree ( Section: contrib/web)
Ricky Beam,

1
Un one-liner per entrambe le sezioni è dpkg-query -W -f='${Section}\t${Package}\n' | sort | egrep ^contrib\|^non-free
GKFX,

Riguardo dpkg-query -W -f='${Section}\t${Package}\n': Sectionnon visualizza i componenti. (Almeno, non lo fa per me su Ubuntu 18.04.) Un elemento di esempio potrebbe essere main, contribo non-free. Mentre le sezioni sono cose come: admin, gnome, utils, o x11.
mpb,

6

Esiste un programma chiamato VRMS(un Richard M. Stallman virtuale) che riporterà tutto il software non libero sul sistema in un breve riepilogo. È nei repository e puoi installarlo tramite apt;-)


2
Vale la pena ricordare che si vrmsaggiunge a /etc/cron.monthly. Sono stato piacevolmente sorpreso quando ho ricevuto una mail da Stallman virtuale un mese dopo l'installazione.
Alex,

2

Ho avuto un simile 'impulso' alcuni anni fa e non sono riuscito a determinare che le informazioni originali sul pacchetto fossero conservate sul sistema dopo aver scaricato il pacchetto. Non credo che queste informazioni siano disponibili per dpkg.

Quindi quello che ho finito è stato installare una macchina virtuale pulita, impostare l'appropriato /etc/apt/sources.liste installare l'intero elenco generato da:

dpkg --get-selections | fgrep -v deinstall | cut -s -f 1

i pacchetti che non sarebbero stati installati (l'ho scaricato solo per risparmiare tempo apt-get -d).

Potresti essere in grado di fare una cosa simile usando apt-get --root-directory=some_dirdopo aver modificato temporaneamente il tuo sources.list, ma non sarei sicuro se questo utilizza il tuo database di installazione corrente e sposta semplicemente il pacchetto lì. Una VM per questo tipo di sperimentazione è molto più sicura. Di solito ho un'installazione di base pulita del mio attuale Linux come VM, quindi devo solo clonarlo (non che l'installazione di Linux su una VM richieda così tanto tempo).


Bella "soluzione". Al momento non ho lo spazio su disco per esso, ma immagino che apt visualizzi prima i pacchetti che non sono stati trovati (quindi non sono liberi), giusto?
Alex,

@Alex Sì, è corretto. Questo è un po 'mancante dalla risposta. Ma l'approccio di Ricky è migliore a meno che non sia accaduto l'improbabile e un pacchetto si è effettivamente spostato nel tempo da un repository a un altro (e non si è aggiornati o il pacchetto non ha cambiato il numero di versione).
Timo,

0

Visita Chiedi a Ubuntu . Ecco la riga di comando:

FILTER=non-free TMP_DIR=$(mktemp -d) && {
  dpkg -l | grep ^ii | cut -f 3 -d' ' | cut -f 1 -d : | sort | uniq > ${TMP_DIR}/pkg_installed.list
  cat /var/lib/apt/lists/*_${FILTER}_*Packages | grep "^Package:"  | sort | uniq | cut -d' ' -f2 > ${TMP_DIR}/pkg_filtered.list
  comm -12 ${TMP_DIR}/pkg_installed.list ${TMP_DIR}/pkg_filtered.list
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.