Instalaciones offline, paquetes .deb y dependencias (SOLUCIONADO)

Imagen de Ivan W
6 puntos

Hola a todos, quiero armarme un disco de paquetes para Ubuntu para que después de instalarlo, lo pueda actualizar e instalar programas específicos en PC's que no tienen internet. Para ello, hice lo siguiente: instalé el sistema en una PC virtual, actualicé los repos y desde Synaptic marqué todas las actualizaciones y programas extra. Luego generé un script de descarga y me bajé los paquetes por separado por fuera de Synaptic (con el JDownloader). Una vez hecho esto, lo que hice fue copiarme el contenido de los directorios /etc/apt/ y /var/lib/apt/ para poder llevarlos a cualquier otra PC y no tener problemas con los orígenes del software, las claves y las dependencias (ya hice la prueba con una PC virtual y con una "real" y funcionó a las mil maravillas).

Ahora bien, mi problema es el siguiente: cuando generé el script de descarga, me vinieron todos los paquetes juntos, y yo lo que debería haber hecho es tener por un lado las actualizaciones solas por un lado, y los programas por otro (separados también unos de otros, para tenerlos con sus correspondientes dependencias), y lo que les pregunto es si alguien sabe cómo podría hacer para separar los programas y sus dependencias para tener todo más arreglado... :)

Estuve viendo que la opción apt-cache show -nombre_del_paquete- sirve para ver las dependencias de un .deb, pero no sé como saber si las librerías que necesita un paquete no las requeriría otro, por lo que no sería muy efectivo separar los paquetes de esta forma (creo)...

En fin, gracias a todos y disculpen la maraña de cosas, cualquier cosa pregunten de nuevo y trataré de dejar más clara la idea. Saludos cordiales a todos!

Imagen de Alcruz
+1
0
-1

Las URLS de descargas de las actualizaciones las puedes obtener mediante la ejecución de

apt-get --print-uris  -y upgrade | grep .deb | awk '{print $1  }' > 111

esto generará el archivo 111 en tu carpeta personal y contendrá todas las URLs de descargas de todas las actualizaciones, una vez las descargas en un equipo con conexión, pones esos paquetes en el caché, o sea en
/var/cache/apt/archives
y luego ejecutas
sudo apt-get upgrade
Para los programas, crea un archivo de textos en tu carpeta personal y pones todos los programas que quieras instalar uno debajo del otro, o sea en una columna y lo guardas con el nombre de paq.txt
para crear la lista de descargas , ejecuta

apt-get --print-uris -y install $(cat paq.txt) | grep .deb | awk '{print $1  }' > 222

Esta vez se generará el archivo 222
Una vez descargados los paquetes y puestos en el caché, ejecuta
sudo apt-get install $(cat paq.txt)

+1
0
-1
Imagen de Ivan W
+1
0
-1

Mhhh... creo entender lo que me dices, pero yo ya tengo los paquetes descargados. El problema es que están todos juntos y yo los quiero separar de acuerdo a si son actualizaciones (como las relativas a los paquetes de idioma, por ejemplo), y programas con sus librerías y dependencias requeridas (como Audacity y libtwolame). Por ahora lo estoy haciendo a mano, cotejando los script de descarga (del sistema en general, aún) con los archivos que ya tengo en el disco. ¡Gracias por tu respuesta!

+1
0
-1
Imagen de rioport
+1
0
-1

Pues hay actualizaciones que son programas, lo que quizá se puede hacer es separar las actualizaciones de los paquetes que vienen por default en Ubuntu y los programas (junto con sus dependencias) que se instalan por separado, algo que se me ocurre es:
1 Instalar Ubuntu y actualizar la lista de paquetes
2 Instalar Synaptic y copiar los paquetes que se descarguen para posterior uso.
3 En Synaptic marcar todas las actualizaciones y en el menú Archivo seleccionar la opción Crear un script de descarga de paquetes
4 Seleccionar los paquetes extras que se quiera instalar y volver al generar otro script de descarga de paquetes.

Con eso ya se tienen dos scripts para descarga de paquetes, uno contiene la lista de paquetes de actualizaciones y otro el de actualizaciones más los programas extras que se requiere instalar, posteriormente puedes usar sed, grep, ... etc para que de esos scripts obtengas unicamente el nombre del archivo y de esas listas puedas separar actualizaciones de paquetes extas.

A ver si logré hacerme entender xD, si no es así házmelo saber.

+1
0
-1

-- GC --

Imagen de Ivan W
+1
0
-1

rioport Lun, 24/09/2012 - 00:24:
"...lo que quizá se puede hacer es separar las actualizaciones de los paquetes que vienen por default en Ubuntu y los programas (junto con sus dependencias) que se instalan por separado..."

¡Exacto! Veo que no me he expresado tan mal. Por ahora, lo que hice fue instalar el sistema y pedirle a Synaptic que me marque los paquetes de actualizaciones por un lado. Luego tomé de esta lista los nombres de los .deb que separé de donde tengo descargados los paquetes. Ahora estoy haciendo lo mismo con los "programas" (los llamo así por costumbre, ya sé que muchos son actualizaciones). Me queda el arduo trabajo de cotejar los script de salida del Synaptic con la lista de .deb que tengo descargados. De a poco va saliendo.

De todas formas, si aparece otra idea, mejor.

¡Gracias!

+1
0
-1
Imagen de rioport
+1
0
-1

¿Ya tienes en cache los paquetes que necesitas?, pues entonces modifica las listas de paquetes para dejar unicamente el nombre de los paquetes (sin las urls ni demás), ordena su contenido alfabéticamente (p. ej. cat lista1.txt | sort > lista1Ordenada.txt y lo mismo con la segunda lista de paquetes), compara el contenido de ambos archivos, para ello puedes usar comm, al final deberías tener dos listas; una en la que sólo tienes los paquetes a actualizar y en la otra la de los paquetes extras, luego con un script y usando un bucle for copias los paquetes hacia otro lugar, p. ej.:


for linea in actualizar.txt;
do 
   cp /var/cache/apt/archives/$linea ~/actualizar;
done

Nota: Recuerda que es un ejemplo, para usarlo debe haber un archivo llamado actualizar.txt, en donde está el script, que contenga el nombre de paquetes a copiar y en tu carpeta de usuario debe existir una carpeta llamada actualizar que es a donde se copiaran los paquetes que están en la lista llamada actualizar.txt.

+1
0
-1

-- GC --

Imagen de Ivan W
+1
0
-1

¡Je, je! ¡Es buenísimo! ¡Es Basic puro! Pero ya me automaticé y he avanzado mucho para ponerme a ver otro método. Con los scripts de Synaptic, me armé una base de datos con Calc y le agregué los comandos necesarios (al mejor estilo batch) para que haga copia de los .deb necesarios para cada programa en carpetas separadas y ya no importa si se repiten... Y ya está... ya casi termino. Gracias por tus ideas, las usaré la próxima vez que tenga que hacer esto.

Doy por solucionado el tema. ¡Gracias!

+1
0
-1