Me gustaría generar una lista de todos los paquetes instalados en un archivo de texto para poder revisarlo e instalarlo de forma masiva en otro sistema. ¿Cómo haría esto?
Me gustaría generar una lista de todos los paquetes instalados en un archivo de texto para poder revisarlo e instalarlo de forma masiva en otro sistema. ¿Cómo haría esto?
Respuestas:
La apt
herramienta en Ubuntu 14.04 y superior lo hace muy fácil.
apt list --installed
Para obtener una lista de paquetes instalados localmente, haga esto en su terminal:
dpkg --get-selections | grep -v deinstall
(La -v
etiqueta "invierte" grep para devolver líneas no coincidentes)
Para obtener una lista de un paquete específico instalado:
dpkg --get-selections | grep postgres
Para guardar esa lista en un archivo de texto llamado packages
en su escritorio, haga esto en su terminal:
dpkg --get-selections | grep -v deinstall > ~/Desktop/packages
Alternativamente, simplemente use
dpkg -l
(no es necesario ejecutar ninguno de estos comandos como superusuario, por lo que aquí no se necesita sudo
ninguna otra variante)
sudo dpkg --set-selections < ~/Desktop/packages && sudo apt-get -u dselect-upgrade
Hace el truco.
Para obtener solo los paquetes que se instalaron expresamente (no solo como dependencias), puede ejecutar
aptitude search '~i!~M'
Esto también incluirá una breve descripción, que puede desear. Si no, también agregue la opción -F '%p'
, como lo menciona karthick87.
Parece que otra opción es copiar el archivo /var/lib/apt/extended_states
, que es una base de datos de archivos de texto en este formato:
Package: grub-common
Architecture: amd64
Auto-Installed: 0
Package: linux-headers-2.6.35-22-generic
Architecture: amd64
Auto-Installed: 1
Auto-Installed: 0
indica que el paquete se instaló expresamente y no es solo una dependencia.
apt-get
?
Para enumerar todos los paquetes instalados intencionalmente (no como dependencias) mediante comandos apt, ejecute lo siguiente:
(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
egrep '^(Start-Date:|Commandline:)' |
grep -v aptdaemon |
egrep '^Commandline:'
Esto proporciona una vista basada en el tiempo inverso, con los comandos más antiguos enumerados primero:
Commandline: apt-get install k3b
Commandline: apt-get install jhead
...
Los datos de instalación también muestran el uso sináptico, pero sin detalles (lo mismo con la fecha de instalación):
(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
egrep '^(Start-Date:|Commandline:)' |
grep -v aptdaemon |
egrep -B1 '^Commandline:'
proporcionando lo siguiente:
Start-Date: 2012-09-23 14:02:14
Commandline: apt-get install gparted
Start-Date: 2012-09-23 15:02:51
Commandline: apt-get install sysstat
...
zgrep -hE '^(Start-Date:|Commandline:)' $(ls -tr /var/log/apt/history.log*.gz ) | egrep -v 'aptdaemon|upgrade' | egrep -B1 '^Commandline:'
dpkg
??
Cree una copia de seguridad de los paquetes que están instalados actualmente:
dpkg --get-selections > list.txt
Luego (en otro sistema) restaure las instalaciones de esa lista:
dpkg --clear-selections
sudo dpkg --set-selections < list.txt
Para deshacerse de los paquetes obsoletos:
sudo apt-get autoremove
Para instalarse como en el momento de la copia de seguridad (es decir, para instalar paquetes establecidos por dpkg --set-selections
)
sudo apt-get dselect-upgrade
ubuntu-desktop
se desinstaló, probablemente debido a uno de los comandos dpkg. ¡cuidado, me tomó horas reparar el daño!
sudo apt-mark hold name-your-package
. Esto evitará que apt-get se actualice a la versión actual, que es el valor predeterminado para el proceso de actualización.
apt-mark showmanual
estado de las páginas man:
imprimirá una lista de paquetes instalados manualmente
Por lo tanto, solo debe dar una lista de paquetes instalados explícitamente (aunque esto incluye los paquetes que formaban parte de la instalación inicial predeterminada) sin todas las dependencias incluidas debido a la instalación de estos paquetes.
Para generar el resultado en un archivo de texto:
apt-mark showmanual > list-manually-installed.txt
apt-mark showmanual
realidad no. También enumera toneladas de paquetes instalados automáticamente, probablemente parte de la instalación base.
apt list --manual-installed
.
dpkg-query
(en lugar de dpkg --get-selections
, que enumera algunos paquetes que no están instalados) de la siguiente manera:
dpkg-query -W -f='${PackageSpec} ${Status}\n' | grep installed | sort -u | cut -f1 -d \ > installed-pkgs
O:
dpkg -l | grep ^ii | sed 's_ _\t_g' | cut -f 2 > installed-pkgs
# for pkg in `cat installed-pkgs`; do apt-get install -y $pkg; done
en el segundo sistema, hice esto para que instale los paquetes.
apt-get install -y $(< installed-pkgs)
hará que apt-get se ejecute solo una vez y se encargue de todas las dependencias a la vez.
sudo apt-get build-dep name-package; sudo apt-get install name-package;
?
Para enumerar todos los paquetes instalados,
dpkg -l |awk '/^[hi]i/{print $2}' > 1.txt
o
aptitude search -F '%p' '~i' > 1.txt
o
dpkg --get-selections > 1.txt
Nota:
Obtendrá el resultado 1.txt en su carpeta de inicio o puede especificar su propia ruta.
Puede usar Synaptic para guardar el estado actual de su paquete instalado. En Synaptic, seleccione "archivo / guardar marcas", ingrese el nombre del archivo para guardar el estado y asegúrese de marcar la casilla "Guardar estado completo, no solo cambios".
El archivo guardado a partir de esto se puede cargar en una nueva máquina usando "marcas de archivo / lectura" en Synaptic.
Recomiendo usar blueprint . Aunque está diseñado para servidores, también se puede usar desde escritorios. Creará un script de shell / chef / puppet que puede usar para reinstalar todos sus paquetes.
Desea reinstalar los paquetes ahora allí en 12.04, ¿verdad?
Si es así, es muy fácil. Necesitará una "cuenta de inicio de sesión único de Ubuntu". (Créelo antes de reinstalar para que su sistema esté sincronizado).
Vaya al Centro de software y busque la opción "Sincronizar entre computadoras ..." en el menú Archivo.
Cuando haga clic en él, verá su computadora registrada y una lista de todas las aplicaciones en su computadora.
Cuando instale fresh, esa computadora se considerará una computadora nueva.
Solo tiene que iniciar sesión en su cuenta de Ubuntu y se mostrará su computadora anterior.
Haz click en eso; obtendrá una lista de todas las aplicaciones. Seleccione "instalar" en la aplicación que desea instalar.
También hay una herramienta llamada Aptik (línea de comandos y GUI) que puede ayudarlo a ver una lista de todos los paquetes instalados, con la opción de seleccionar / deseleccionar algunos de ellos, hacer una lista de respaldo y luego restaurar el mismo conjunto de paquetes en otro sistema
Instalar:
sudo add-apt-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install aptik
Más información: https://teejeetech.in/aptik/
Como se puede ver en la captura de pantalla, Aptik también le permite hacer copias de seguridad y restaurar PPA , que sin duda será necesario para instalar algunos de los paquetes instalados.
apt-get install aptik-gtk
, así
APT-Clone . Este paquete se puede usar para clonar / restaurar los paquetes en un sistema basado en apt.
- Guardará / restaurará los paquetes, sources.list, llavero y estados de instalación automática.
- También puede guardar / restaurar paquetes que ya no se pueden descargar usando dpkg-repack.
fuente:
man apt-clone
APT-Clone es utilizado por ubiquity
(instalador de Ubuntu) para el proceso de actualización. Es mucho mejor que la dpkg --get-selections
solución porque:
Cómo utilizar
Instalar en pc
sudo apt-get install apt-clone
Hacer una copia de seguridad
sudo apt-clone clone path-to/apt-clone-state-ubuntu-$(lsb_release -sr)-$(date +%F).tar.gz
Restaurar copia de seguridad
sudo apt-clone restore path-to/apt-clone-state-ubuntu.tar.gz
Restaurar a una versión más reciente:
sudo apt-clone restore-new-distro path-to/apt-clone-state-ubuntu.tar.gz $(lsb_release -sc)
Crea un archivo tar comprimido con gzip que se puede editar y revisar fácilmente antes de restaurarlo en otras máquinas. Aquí un ejemplo de su estructura:
/
├── etc
│ └── apt
│ ├── preferences.d
│ ├── sources.list
│ ├── sources.list.d
│ │ ├── anton_-ubuntu-dnscrypt-vivid.list
│ │ ├── maarten-baert-ubuntu-simplescreenrecorder-vivid.list
│ │ └── megasync.list
│ ├── trusted.gpg
│ └── trusted.gpg.d
│ ├── anton__ubuntu_dnscrypt.gpg
│ ├── anton__ubuntu_dnscrypt.gpg~
│ ├── maarten-baert_ubuntu_simplescreenrecorder.gpg
│ └── maarten-baert_ubuntu_simplescreenrecorder.gpg~
└── var
└── lib
└── apt-clone
├── extended_states
├── installed.pkgs
└── uname
Hay una gran explicación en Unix StackExchange que describe cómo usar aptitude para enumerar paquetes no instalados como dependencias, y cómo comparar esa lista con la lista de paquetes predeterminados para su versión de Ubuntu.
Para obtener el archivo de manifiesto para las versiones de escritorio de 12.04 y posteriores, visite este sitio , elija su versión y desplácese hacia abajo debajo de las imágenes del CD hasta la sección de archivos. Encontrará algo como "ubuntu-12.04.4-desktop-amd64 + mac.manifest" que coincide con su arquitectura.
Para las versiones de servidor, deberá obtener el archivo de manifiesto de la ISO que se utilizó para instalar el sistema original. Para un servidor VPS o en la nube, su proveedor puede hacer que las imágenes estén disponibles o puede que necesite contactarlas.
Aquí hay un ejemplo usando el código de la publicación referenciada, junto con modificaciones para instalar en el nuevo servidor.
Servidor anterior (código de otra publicación, salida guardada en el archivo):
aptitude search '~i !~M' -F '%p' --disable-columns | sort -u > currently-installed.list
wget -qO - http://mirror.pnl.gov/releases/precise/ubuntu-12.04.3-desktop-amd64.manifest \
| cut -f1 | sort -u > default-installed.list
comm -23 currently-installed.list default-installed.list > user-installed.list
En el nuevo servidor, copie el archivo usando scp, luego use sed para agregar 'instalar' a cada línea (-i realiza un reemplazo en línea). Luego puede usar la lista como entrada para 'dpkg --set-selections' e instalar los paquetes con apt-get:
scp user@oldserver:user-installed.list .
sed -i 's/$/\tinstall/' user-installed.list
sudo dpkg --set-selections < user-installed.list
sudo apt-get dselect-upgrade
Antes de comenzar esta tarea, recomiendo leer y comprender todas las partes de la publicación mencionada al principio, y luego consultar la guía de referencia de aptitud para obtener detalles sobre los patrones de búsqueda.
Me sorprende que el apt-cache
comando diseñado exactamente para este propósito no se haya mencionado anteriormente ...
apt-cache pkgnames
Para más información, ejecute apt-cache --help
:
** apt-cache es una herramienta de bajo nivel utilizada para consultar información de los archivos de caché binarios de APT Comandos: gencaches: compila el paquete y el caché de origen showpkg: muestra información general para un solo paquete showsrc - Mostrar registros fuente stats: muestra algunas estadísticas básicas dump: muestra todo el archivo en forma concisa dumpavail - Imprime un archivo disponible en stdout insatisfecho - Mostrar dependencias insatisfechas search: busca en la lista de paquetes un patrón regex show: muestra un registro legible para el paquete depende - Muestra información de dependencia sin procesar para un paquete rdepends - Muestra información de dependencia inversa para un paquete pkgnames - Lista los nombres de todos los paquetes en el sistema dotty - Genera gráficos de paquetes para GraphViz xvcg - Genera gráficos de paquetes para xvcg política: muestra la configuración de la política Opciones: -h Este texto de ayuda. -p =? El paquete de caché. -s =? El caché de origen. -q Desactiva el indicador de progreso. -i Muestra solo deps importantes para el comando no satisfecho. -c =? Lea este archivo de configuración -o =? Establezca una opción de configuración arbitraria, por ejemplo, -o dir :: cache = / tmp Consulte las páginas de manual de apt-cache (8) y apt.conf (5) para obtener más información. ** **
apt --installed list
da el mejor resultado (como se sugiere en la respuesta superior anterior. Aunque apt-cache pkgnames
parece hacer el truco a primera vista, enumera "todos los paquetes en el sistema" (según el texto de ayuda anterior), que también incluye paquetes que apt conoce pero en realidad no están instalados. Hay una --installed
opción pero parece que no funciona pkgnames
.
apt-cache pkgnames | wc -l
da 55909
paquetes (el sistema lo sabe), mientras que aptitude search '~i!~M' | wc -l
da 2160
(paquetes instalados explícitamente, sin dependencias).
Para el resumen completo ver:
a mitad de la página:
dpkg --list
El siguiente comando también enumerará todos los paquetes instalados,
grep ' installed ' /var/log/dpkg.log /var/log/dpkg.log.1 | awk '{print $5}' | sort -u
/var/log/dpkg.log*
obtener todos los registros rotados.
Ayude a este wiki de la comunidad: agregue soluciones actualizadas.
Este comando debe lograr la creación de un archivo de texto que contiene los paquetes instalados:
dpkg -l | awk '{print $2}' > package_list.txt
Para realizar la instalación masiva de los paquetes enumerados, deberá editar 'package_list.txt'. Elimine las líneas extrañas en la parte superior del archivo con un editor de texto. Luego puede usar este comando para instalar paquetes desde el archivo creado usando:
xargs < package_list.txt apt-get install -y
Utilice este método solo si desea que todos los paquetes actuales se instalen utilizando la lista ( que incluye la instalación automática, etc.).
Envíe la respuesta de 'apt-cache pkgnames' a un archivo que simplemente llamaremos "package_list.txt". Puede lograr esto con:
apt-cache pkgnames > package_list.txt
Luego, cuando desee instalar paquetes desde "package_list.txt", usaría este comando:
xargs < package_list.txt apt-get install -y
Podemos usar el comando apt-mark showmanual
para dar una lista de paquetes que se instalaron manualmente o inicialmente con Ubuntu. Queremos enviarlo a un archivo que llamaremos "package-list.txt". Use este comando para lograr eso:
apt-mark showmanual > package-list.txt
El comando que usaríamos para instalar paquetes desde el archivo "package_list.txt" está debajo.
xargs < package_list.txt apt-get install -y
Utilidad para simplificar la reinstalación de paquetes de software después de actualizar / reinstalar distribuciones basadas en Ubuntu.
[ Launchpad | Aptik ]
Para obtener información sobre Aptik, intente visitar su página oficial y, para obtener una captura de pantalla, haga clic aquí o vea el final de esta sección.
Instalar Aptik es simple. Sigue estos pasos:
Agregue el PPA con:
sudo add-apt-repository -y ppa:teejee2008/ppa
Actualice apt con el siguiente comando.
sudo apt-get update
Instale Aptik usando:
sudo apt-get install aptik
apt-mark showmanual
incluye Bash, Unity y Xorg, entre otros. ¿Se supone que deben estar allí?
Creo que es interesante notar apt list --installed
o dpkg-query --list
usar el archivo llamado /var/lib/dpkg/status
detrás, donde toda la información sobre los paquetes es barba.
Entonces, si desea lidiar con la lista súper extendida de paquetes solo cat /var/lib/dpkg/status
.
Nota: no modifique el /var/lib/dpkg/status
archivo.
Además de los paquetes APT , muchos paquetes GUI se distribuyen actualmente como snaps .
Si no puede encontrar su paquete apt list --installed
, intente snap list
:
$ snap list
Name Version Rev Tracking Publisher Notes
gimp 2.10.10 165 stable snapcrafters -
gnome-calculator 3.32.1 406 stable/… canonical✓ -
keepassxc 2.4.1 267 stable keepassxreboot -
...
También es una buena idea agregar /snap/bin
a la RUTA para que pueda iniciarlos desde el terminal (hecho automáticamente para usuarios no root).
El paquete dctrl-tools
proporciona la grep-status
herramienta para obtener la lista de los paquetes marcados como instalados en su sistema:
sudo apt install dctrl-tools
Uso:
grep-status -FStatus -sPackage -n "install ok installed"
ver : man dctrl-tools
https://www.rosehosting.com/blog/list-all-installed-packages-with-apt-on-ubuntu/ :
1. Enumere los paquetes de software instalados en Ubuntu
Para enumerar los paquetes de software instalados en su máquina, puede usar el siguiente comando:
sudo apt list --installed
El resultado del comando será muy similar al siguiente, según los paquetes que estén instalados actualmente:
Listing... acl/xenial,now 2.2.52-3 amd64 [installed] adduser/xenial,xenial,now 3.113+nmu3ubuntu4 all [installed] apache2/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed] apache2-bin/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed,automatic] apache2-data/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed,automatic] apache2-doc/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed] apache2-utils/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed] apparmor/xenial-updates,now 2.10.95-0ubuntu2.5 amd64 [installed,automatic] apt/xenial-updates,now 1.2.19 amd64 [installed] apt-utils/xenial-updates,now 1.2.19 amd64 [installed] ...
2. Use el programa MENOS
Para leer fácilmente toda la salida, puede usar el
less
programa.sudo apt list --installed | less
3. Use el comando GREP
Puede buscar un paquete específico a través de la salida utilizando el
grep
programa.sudo apt list --installed | grep -i apache
4. Enumere todos los paquetes que incluyen Apache
El resultado del comando anterior enumerará todos los paquetes que se incluyen
apache
en sus nombres.apache2/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed] apache2-bin/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed,automatic] apache2-data/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed,automatic] apache2-doc/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed] apache2-utils/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed] libapache2-mod-php/xenial,xenial,now 1:7.0+35ubuntu6 all [installed,automatic] libapache2-mod-php7.0/xenial-updates,now 7.0.13-0ubuntu0.16.04.1 amd64 [installed,automatic] libapache2-mod-security2/xenial,now 2.9.0-1 amd64 [installed] libapache2-modsecurity/xenial,xenial,now 2.9.0-1 all [installed]
Apt admite patrones para hacer coincidir los nombres de los paquetes y las opciones para enumerar los
(--installed)
paquetes instalados , los(--upgradeable)
paquetes actualizables o todas las(--all-versions)
versiones de paquetes disponibles .5. Use el programa DPKG
Otra alternativa que puede usar para enumerar los paquetes de software instalados en su Ubuntu VPS es el
dpkg
comando.sudo dpkg -l
El resultado del comando le proporcionará información como el nombre del paquete, la versión, la arquitectura y una breve descripción sobre el paquete. Por supuesto, puede usar el
grep
programa nuevamente para buscar un paquete específico.sudo dpkg -l | grep -i apache
El resultado debería verse como el siguiente:
ii apache2 2.4.18-2ubuntu3.1 amd64 Apache HTTP Server ii apache2-bin 2.4.18-2ubuntu3.1 amd64 Apache HTTP Server (modules and other binary files) ii apache2-data 2.4.18-2ubuntu3.1 all Apache HTTP Server (common files) ii apache2-doc 2.4.18-2ubuntu3.1 all Apache HTTP Server (on-site documentation) ii apache2-utils 2.4.18-2ubuntu3.1 amd64 Apache HTTP Server (utility programs for web servers) rc apache2.2-common 2.2.22-6ubuntu5.1 amd64 Apache HTTP Server common files ii libapache2-mod-php 1:7.0+35ubuntu6 all server-side, HTML-embedded scripting language (Apache 2 module) (default) rc libapache2-mod-php5 5.5.9+dfsg-1ubuntu4.16 amd64 server-side, HTML-embedded scripting language (Apache 2 module) ii libapache2-mod-php7.0 7.0.13-0ubuntu0.16.04.1 amd64 server-side, HTML-embedded scripting language (Apache 2 module) ii libapache2-mod-security2 2.9.0-1 amd64 Tighten web applications security for Apache ii libapache2-modsecurity 2.9.0-1 all Dummy transitional package ii libapr1:amd64 1.5.2-3 amd64 Apache Portable Runtime Library ii libaprutil1:amd64 1.5.4-1build1 amd64 Apache Portable Runtime Utility Library ii libaprutil1-dbd-sqlite3:amd64 1.5.4-1build1 amd64 Apache Portable Runtime Utility Library - SQLite3 Driver ii libaprutil1-ldap:amd64 1.5.4-1build1 amd64 Apache Portable Runtime Utility Library - LDAP Driver .
Con la competencia de este tutorial, ha aprendido con éxito cómo enumerar los paquetes instalados en Ubuntu.
Hay muchas formas de hacer eso. En caso de que esté usando CentOS como yo, puede usar estos: 1. yum list installed
2.rpm -qa