¿Cómo puedo filtrar "dpkg --get-selections" solo para paquetes disponibles en repositorios?

9

Me gustaría obtener una lista de los paquetes instalados en un sistema e instalarlos todos en otro sistema.

Sé que dpkg --get-selectionsme puede dar una lista de todos los paquetes instalados en los que puedo canalizar en dpkg --set-selectionsel sistema de destino. Sin embargo, algunos de los paquetes instalados son los que yo mismo construí localmente (usando, por ejemplo, checkinstall) y no están disponibles en los repositorios. El dpkg --set-selectionsproceso fallará cuando no pueda encontrar estos paquetes en los repositorios.

Entonces, ¿hay alguna manera de filtrar la lista generada dpkg --get-selectionspara que solo contenga paquetes cuya versión instalada actualmente esté disponible en mis repositorios actuales?

Ryan C. Thompson
fuente

Respuestas:

9

Creo que Software Center tiene una función para sincronizar entre computadoras en estos días. Si eso maneja los paquetes faltantes correctamente, podría resolver su problema.

El problema aquí es que dpkgno conoce los repositorios, solo los paquetes instalados. Puede averiguar si un paquete está disponible en un repositorio ejecutando apt-cache policy $package. Si ve un repositorio en el Version Table, está disponible allí.

Entonces, ¿qué tal esto? Es lento, pero debería funcionar:

dpkg --get-selections '*' \
  | while read line; do
    apt-cache policy $(echo "$line" | cut -f1 ) \
      | grep -q 'http://' \
      && echo "$line"
done
planta rodadora
fuente
Esto mostrará el progreso y escribirá en un archivo:total=$(dpkg --get-selections '*'|wc -l); i=0; dpkg --get-selections '*' | while read line; do i=$(($i+1)); apt-cache policy $(echo "$line" | cut -f1 ) | grep -q 'http://' && echo "$i/$total $line"; echo $line>>/var/tmp/dpkg-selection.list; done
rubo77
-4

Usa el siguiente comando

dpkg --get-selections > installed-software

creará un archivo llamado software instalado en su directorio de inicio

en el nuevo sistema

dpkg --set-selections < installed-software

esto leerá la selección e instalará

sarveshlad
fuente
3
No creo que leas la pregunta.
Ryan C. Thompson