¿Cómo obtener la lista de paquetes instalados sin dependencias?

¿Cómo obtener la lista de paquetes instalados sin dependencias?

El Centro de software de alguna manera muestra una lista bastante corta de paquetes instalados. ¿Cómo obtenerlo en un archivo de texto?

Lo intenté:

> dpkg --get-selections|wc -l
3265

> aptitude search '~i!~M'|wc -l
1181

> dpkg -l | grep ^ii | sed 's_  _\t_g' | cut -f 2|wc -l
3076

> dpkg --get-selections | grep -v deinstall|wc -l
3076

> apt-mark showmanual|wc -l
1181

Sé que he instalado algunas docenas de paquetes, no miles. Necesito en la lista exactamente los paquetes que elegí sin dependencias para revisarlos.

ACTUALIZAR

Muchas gracias a @kos, finalmente obtuve la lista con ese comando:

> zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline: apt-get install \K.*' | tr ' ' '\n' | grep -v '\-\-reinstall'|grep -v '\-\-force-yes'|grep -v '\-y'|grep -v '\-f'|sort|uniq wc -l
103

Respuesta1

Esto no responde exactamente a la pregunta: más bien proporciona un comando para enumerar todos los apt-get installcomandos que se han ejecutado junto con algunos consejos sobre cómo analizar la lista más a fondo para obtener una lista de todos los apt-get installcomandos que se han ejecutado, excluyendo los ejecutados por Ubiquity. ya que la solución perfecta para esta tarea parece no existir.

zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*'
  • zcat /var/log/apt/history.log.*.gz: descomprime todos los aptregistros comprimidos /var/log/apt, los concatena e imprime en stdout;
  • cat - /var/log/apt/history.log: agrega /var/log/apt/history.loge imprime a stdout;
  • grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*': selecciona solo las líneas que comienzan Commandline: apt-getcon installun espacio inicial y final e imprime el resto de cada línea seleccionada en stdout;

Esto generará la lista de todos los apt-get installcomandos alguna vez ejecutados (el único resultado no deseado podría ser un comando apt-get-no- que mencione un paquete, pero ese paquete no existe (¿todavía?), al menos en los repositorios predeterminados);installinstall

Nota:En mi instalación (Ubuntu 15.04 de 64 bits), los primeros cuatro comandos enumerados son los que ejecuta Ubiquity durante la instalación; para excluirlos, puede canalizar la salida a sed:

sed '1,4d'

para que la finalaproximadoEl comando para Ubuntu 15.04 de 64 bits sería:

zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*' | sed '1,4d'

Respuesta2

apt-mark showmanual

le dará una lista de todos los paquetes instalados manualmente sin las dependencias; lo importante a tener en cuenta es que también mostrará qué paquetes se instalaron durante la instalación de Ubuntu.

Para escribir la salida en un archivo:

apt-mark showmanual > algún archivo

En realidad, hay muchas otras formas, como usar este comando.

comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u) 

Aunque no tengo ni idea de cómo funciona lo anterior;)

Para ver los paquetes instalados por fecha:

Paquetes instalados por fecha de uso cat /var/log/dpkg.log | grep "\ install\ > somefile"
Paquetes instalados mediante dpkguso ls -l /var/log/dpkg* > somefile: este es probablemente lo que estás buscando.

Para ver los paquetes instalados usando dpkg:

Este archivo contiene la información anterior:/var/log/dpkg.log

Respuesta3

En realidad, esto es más complicado de lo que parece y hay bastantes preguntas similares en Ask Ubuntu.

Descubrí que al buscar en /var/log/apt/history.loglas versiones anteriores comprimidas con gzip de ese registro, cualquier elemento instalado mediante un apt-get installcomando aparece como instalado mediante ese comando.

Entonces:

grep "apt-get install" /var/log/apt/history.log

Le mostrará todos ellos durante el período que cubre el registro histórico de apt actual. Necesitará gunzipsus registros más antiguos y los recuperará para reunir toda su información. Todos los comandos grep se pueden redirigir a un archivo de texto para brindarle una buena lista.

Probablemente esto solo sea útil para su caso si el Centro de software lo utiliza apt-get installdurante la instalación. Sé que el Centro de software es una interfaz, aptpero no estoy seguro de que use ese comando explícitamente.

Respuesta4

Este comando proporcionará una lista de paquetes instalados manualmente, así como aquellos en los que se han eliminado sus dependencias inversas "instaladas automáticamente" (por ejemplo, si elimina el metapaquete ubuntu-server, sus dependencias ya no se marcarán como automáticas y ahora estará en esta lista):

apt list --installed | grep -v automatic

En otras palabras, la lista anterior devolverá todos los paquetes que no tengan dependencias inversas o que también estén marcados como instalados manualmente.

información relacionada