
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 install
comandos 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 install
comandos 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 losapt
registros comprimidos/var/log/apt
, los concatena e imprime enstdout
;cat - /var/log/apt/history.log
: agrega/var/log/apt/history.log
e imprime astdout
;grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*'
: selecciona solo las líneas que comienzanCommandline: apt-get
coninstall
un espacio inicial y final e imprime el resto de cada línea seleccionada enstdout
;
Esto generará la lista de todos los apt-get install
comandos 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);install
install
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 dpkg
uso 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.log
las versiones anteriores comprimidas con gzip de ese registro, cualquier elemento instalado mediante un apt-get install
comando 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á gunzip
sus 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 install
durante la instalación. Sé que el Centro de software es una interfaz, apt
pero 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.