Liste de tous les logiciels installés à partir d'un composant particulier (non libre, contrib)

12

Est - il possible d'énumérer tous non-freeet contriblogiciels installés dans Debian via apt?

/etc/apt/sources.list est comme suit

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

J'ai ajouté non-freeet contribil y a des années parce que j'avais besoin d'un pilote non libre pour ma carte vidéo, qui a maintenant été remplacé par un nouveau qui ne nécessite pas de pilote non libre. Je voudrais me débarrasser des éléments non gratuits, mais je crains d'avoir installé d'autres logiciels non libres au fil des ans que je ne peux pas me permettre de désinstaller.

Alex
la source

Réponses:

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

Section sera non libre / ... pour tout, depuis le chemin non libre.

[Remarque] pour les documents 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.

(Je me posais également des questions à ce sujet, mais je n'ai pas pris la peine de vérifier jusqu'à ce que cela soit mentionné.)

Ricky Beam
la source
Les deux ont donné des résultats différents ( pastebin.com/rAhYHTk8 ). Le truc NVIDIA est le pilote, donc dpkg semble juste! A voté. Je me demande simplement ce que fait gcc-doc.
Alex
Le truc NVIDIA a déjà été supprimé, apt l'a probablement répertorié car il a conservé le .deb ou quelque chose. Je viens juste de me souvenir d'une chose que je n'ai pas libre qui n'était pas répertoriée: les dpkg -l | grep -i nonfreerésultats flashplugin-nonfree. Je me demande pourquoi cela n'a pas été répertorié par aptitude et s'il répertorie en fait tout ce qui n'est pas gratuit.
Alex
2
Parce que c'est dans contrib :: debian / pool / contrib / f / flashplugin-nonfree ( Section: contrib/web)
Ricky Beam
1
Un one-liner pour les deux sections est dpkg-query -W -f='${Section}\t${Package}\n' | sort | egrep ^contrib\|^non-free
GKFX
Concernant dpkg-query -W -f='${Section}\t${Package}\n': Sectionn'affiche pas les composants. (Au moins, il ne fonctionne pas moi sur Ubuntu 18.04.) Un composant exemple pourrait être main, contribou non-free. Alors que les sections sont des choses comme: admin, gnome, utilsou x11.
mpb
6

Il existe un programme appelé VRMS(un Richard M. Stallman virtuel) qui rapportera tous les logiciels non libres sur votre système dans un bref résumé. Son dans les repo et vous pouvez l'installer via apt;-)

Geeb
la source
2
Il convient de mentionner vrmss'ajoute à /etc/cron.monthly. J'ai été agréablement surpris lorsque j'ai reçu un courrier de Virtual Stallman un mois après l'installation.
Alex
2

J'ai eu une «envie» similaire il y a quelques années et je n'ai pas pu déterminer que les informations du package d'origine sont conservées sur le système après avoir téléchargé le package. Je ne pense pas que cette information soit disponible dpkg.

J'ai donc fini par configurer une machine virtuelle propre, configurer la appropriée /etc/apt/sources.listet installer toute la liste générée par:

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

les packages qui ne seraient pas installés (je n'ai fait que les télécharger pour gagner du temps apt-get -d).

Vous pourriez peut-être faire une chose similaire en utilisant apt-get --root-directory=some_diraprès avoir changé temporairement votre sources.list, mais je ne sais pas si cela utilise votre base de données d'installation actuelle et y déplace simplement le package. Une machine virtuelle pour ce type d'expérimentation est beaucoup plus sûre. J'ai normalement une installation de base propre de mon Linux actuel en tant que VM, donc je n'ai qu'à le cloner (pas que l'installation de Linux sur une VM prenne autant de temps).

Timo
la source
Belle "solution". Je n'ai actuellement pas d'espace disque pour cela, mais j'imagine qu'apt affichera d'abord les paquets qui n'ont pas été trouvés (donc non libres), n'est-ce pas?
Alex
@Alex Oui, c'est exact. C'est un peu absent de la réponse. Mais l'approche de Ricky est meilleure à moins que l'improbable ne se produise et qu'un package ne soit réellement déplacé au fil du temps d'un dépôt à un autre (et que vous n'êtes pas à jour ou que le package n'ait pas changé de numéro de version).
Timo
0

Visitez Ask Ubuntu . Voici la ligne de commande:

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
}
Pas de code
la source