Listar todo el software instalado desde un componente particular (no libre, contrib)

12

¿Hay alguna manera de enumerar todo non-freey el contribsoftware instalado en Debian a través de apt?

/etc/apt/sources.list es como sigue

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

He añadido non-freey contribhace años porque necesitaba un conductor que no sea libre para mi tarjeta de video, que ahora ha sido reemplazado por uno nuevo que no requiere un controlador que no es libre. Me gustaría deshacerme de las cosas no gratuitas, pero me temo que podría haber instalado otro software no libre a lo largo de los años que no puedo permitirme desinstalar.

Alex
fuente

Respuestas:

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

Section será no libre / ... para todo, desde la ruta no libre.

[Nota] para documentos 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.

(También me preguntaba sobre eso, pero no me molesté en comprobarlo hasta que se mencionó).

Ricky Beam
fuente
Ambos arrojaron resultados diferentes ( pastebin.com/rAhYHTk8 ). El material de NVIDIA es el controlador, ¡así que dpkg parece correcto! Votado Me pregunto qué está haciendo gcc-doc allí.
Alex
El material de NVIDIA ya se eliminó, probablemente lo enumeró porque conservaba el .deb o algo así. Acabo de recordar una cosa que tengo de no libre que no estaba en la lista: dpkg -l | grep -i nonfreeresultados flashplugin-nonfree. Me pregunto por qué eso no se enumeró por aptitud y si en realidad está enumerando todo, desde no libre.
Alex
2
Porque está en contrib :: debian / pool / contrib / f / flashplugin-nonfree ( Section: contrib/web)
Ricky Beam
1
Una dpkg-query -W -f='${Section}\t${Package}\n' | sort | egrep ^contrib\|^non-free
frase
En cuanto a dpkg-query -W -f='${Section}\t${Package}\n': Sectionno muestra los componentes. (Por lo menos, no lo hace para mí en Ubuntu 18.04.) Un componente ejemplo podría ser main, contribo non-free. Mientras que las secciones son cosas como: admin, gnome, utils, o x11.
mpb
6

Hay un programa llamado VRMS(un virtual Richard M. Stallman) que informará todo el software no libre en su sistema en un breve resumen. Está en los repositorios y puede instalarlo a través de apt;-)

Geeb
fuente
2
Vale la pena mencionar que se vrmsagrega a sí mismo /etc/cron.monthly. Me sorprendió gratamente cuando recibí un correo de Stallman virtual un mes después de la instalación.
Alex
2

Hace unos años tuve una "necesidad" similar y no pude determinar si la información del paquete original se guarda en el sistema después de descargar el paquete. No creo que esta información esté disponible para dpkg.

Entonces, lo que terminé fue configurar una máquina virtual limpia, configurar la adecuada /etc/apt/sources.liste instalar toda la lista generada por:

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

los paquetes que no se instalarían (solo descargué para ahorrar tiempo apt-get -d).

Es posible que pueda hacer algo similar usando apt-get --root-directory=some_dirdespués de cambiar temporalmente su sources.list, pero no estoy seguro si eso usa su base de datos de instalación actual y solo mueve el paquete allí. Una máquina virtual para este tipo de experimentación es mucho más segura. Normalmente tengo una instalación básica limpia de mi Linux actual como VM, así que solo tengo que clonar eso (no es que la instalación de Linux en una VM tome tanto tiempo).

Timo
fuente
Buena "solución". Actualmente no tengo espacio en disco, pero imagino que apt mostrará primero los paquetes que no se encontraron (por lo tanto, no son libres), ¿correcto?
Alex
@ Alex Sí, eso es correcto. Eso es algo que falta en la respuesta. Pero el enfoque de Ricky es mejor a menos que ocurra lo improbable y un paquete realmente se haya movido con el tiempo de un repositorio a otro (y usted no esté actualizado o el paquete no haya cambiado el número de versión).
Timo
0

Visita Ask Ubuntu . Aquí la línea de 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
}
Sin código
fuente