Apt-on-cd ha muerto, crear script apt-on-pendrive con zenity

Foro de soporte para usuarias de habla hispana

Moderator: Wibol

Forum rules
Topics in this forum are automatically closed 6 months after creation.
Locked
User avatar
hatteras
Level 11
Level 11
Posts: 3886
Joined: Fri Sep 24, 2010 6:43 pm
Location: En el paraiso en la tierra
Contact:

Apt-on-cd ha muerto, crear script apt-on-pendrive con zenity

Post by hatteras »

Aptoncd en su dia fue un muy buen programa para tener una copia de seguridad de los paquetes .deb en un cd o dvd, pero dado que hoy en dia los cd/dvd han sido sustituidos por los pendrives /discos duros externos de gran capacidad, ( ya ni siquiera son necesarios los cd/dvd para instalar una distro ) me parece que aptoncd es un programa algo anticuado...no se puede usar en muchos pcs actuales que no llevan ya lector de cd/dvd.

En http://foro.ubuntu-guia.com/Synaptic-Co ... 84264.html
y http://foro.ubuntu-guia.com/Script-de-c ... 47880.html
se explica como hacer una copia de seguridad de synaptic, que se puede guardar en un pendrive, esto podría sustituir a aptoncd...solo faltaría añadirle una interfaz gráfica para que fuera mas atractivo visualmente.

Se que se puede hacer, pero no se como, un script para que haga el trabajo con una interfaz gráfica, con Zenity http://library.gnome.org/users/zenity/s ... ex.html.es

A ver si algún experto en scripts y zenity hace uno para esta tarea.

Gracias de antemano
Last edited by LockBot on Wed Dec 28, 2022 7:16 am, edited 1 time in total.
Reason: Topic automatically closed 6 months after creation. New replies are no longer allowed.
Todos somos muy ignorantes. Pero no todos ignoramos las mismas cosas.
Es un placer ayudar, y ver que a alguien le es útil.
Es un placer pedir ayuda y ver que alguien te la da desinteresadamente.
nestoriano

Re: Apt-on-cd ha muerto, crear script apt-on-pendrive con ze

Post by nestoriano »

Hace bastante tiempo cuando no disponia de banda ancha me ha tocado crear un repositorio local con debian lenny y sus dvds. La descarga de los 5 o 6 isos lo habia hecho via descarga directa y la imagen estaban todas corruptas y no podia agregarlo al sources.list (ahora uso torrent).

Lo que hice fue extraer todos los .deb que podia, revisar los md5 y borrar los paquetes corruptos (1 a 4 paquetes por dvd) y crear un repositorio a partir de los debs salvados.

Estoy buscando aquel tuto y no lo encuentro pero el procedimiento era casi lo mismo que se dice aca: http://www.ubuntu-es.org/node/81336#.UZf4GqnM0yg

En este caso habria que guardar todos los paquetes en un pendrive y ejecutar dpkg-scanpackage (me habia tardado unos 10 a 15min con 4gb de paquetes en athlon64x2). Luego conectas ese pen a una pc sin internet, lo agregas en sources.list y actualizas los repos.

De zenity apenas se usarlo pero el script deberia ser algo similar a esto. Hay que modificarlo como corresponda porque no creo que funcione.

Code: Select all

#!/bin/sh

repodir=`zenity --file-selection --directory --title="Seleccione un directorio"`
## cp /var/cache/apt/archives/*.deb $repodir
zenity --info --text "El repositorio estara en  $repodir"
## sudo dpkg-scanpackages local /dev/null | gzip -c > $repodir/local/Packages.gz"
User avatar
hatteras
Level 11
Level 11
Posts: 3886
Joined: Fri Sep 24, 2010 6:43 pm
Location: En el paraiso en la tierra
Contact:

Re: Apt-on-cd ha muerto, crear script apt-on-pendrive con ze

Post by hatteras »

He creado este script:
#!/bin/sh

repodir=`zenity --file-selection --directory --title="Seleccione un directorio"`

tar zcvf apt-synaptic.tgz /etc/apt/ /var/lib/apt/ /var/cache/apt/
mv apt-synaptic.tgz $repodir

zenity --text="Espera mientras se copia" --progress --auto-close --auto-kill

zenity --info --text "La copia de repositorios esta en el directorio $repodir"

----------------
- con la segunda linea me pide que eliga un directorio, que luego sera donde se guarde la copia .tgz
- con la tercera linea me crea un archivo comprimido synaptic.tgz que contiene toda la copia de seguridad de synaptic ( los paquetes .deb , la lista de repositorios, y las claves gpg (vease http://hatteras.wordpress.com/2010/11/0 ... -synaptic/) en el directorio donde esta el script
- con la cuarta linea mueve el archivo synaptic.tgz al directorio elegido con la primera linea
- la linea quinta sive para que aparezca una pantalla con una linea de progreso, que debería ir progresando conforme se va haciendo lo indicado en la linea 3 y 4
- la sexta linea hace que aparezca una ventana con un texto indicando que la copia de repositorios esta en el directorio indicado en la primera línea.

Lo que me falla es que mientras se va ejecutando lo indicado en las lineas 3 y 4 no aparece la ventana con la barra de progreso, sino que ésta aparece cuando el proceso se ha terminado, y hay que dar al botón cancelar para que aparezca lo indicado en la 6ª linea.

Falta hacer algo para que mientras se realiza lo indicado en las lineas 3y 4 aparezca la ventana con la barra de progreso, que ésta indique el progreso de la copia, y que se cierre cuando la copia termine, apareciendo a continuación el mensaje final de la linea 6.
¿ Sabes como modificar el script para que ocurra esto ?

Muchas gracias.
Todos somos muy ignorantes. Pero no todos ignoramos las mismas cosas.
Es un placer ayudar, y ver que a alguien le es útil.
Es un placer pedir ayuda y ver que alguien te la da desinteresadamente.
nestoriano

Re: Apt-on-cd ha muerto, crear script apt-on-pendrive con ze

Post by nestoriano »

Este tipo de script van desde la linea de arriba y zenity progress es llamado recien en la anteultima linea. Viendo el ejemplo del manual de zenity seria algo mas o menos asi:

Code: Select all

#!/bin/sh
(
echo "10" ; sleep 1
echo "# copiando .deb" ; sleep 1
## cp /var/cache/apt/archive $repodir


echo "50" ; sleep 1
echo "# copiando llave" ; sleep 1
## cp /var/lib/apt/archive $repodir


echo "75" ; sleep 1
echo "# comprimiendo a tar.gz" ; sleep 1
## tar.xvzf ...


echo "100" ; sleep 1
echo "# copia finalizada"

) |
zenity --progress \
  title="AptonUSB" \
  text="Guardando una copia de seguridad" \
  percentage=0

if [ "$?" = -1 ] ; then
zenity --error \
text="Backup cancelada."
fi

Hay una barra vertical "|" que obliga a ejecutar al mismo tiempo las 2 partes. Quizas sea mas conveniente copiar todo hacia /tmp y luego de realizar la compresion, moverlo hacia el pen.
User avatar
hatteras
Level 11
Level 11
Posts: 3886
Joined: Fri Sep 24, 2010 6:43 pm
Location: En el paraiso en la tierra
Contact:

Re: Apt-on-cd ha muerto, crear script apt-on-pendrive con ze

Post by hatteras »

Nestoriano:

He modificado ligeramente tu último script:

#!/bin/sh
zenity --width="350" --info --text "Script para realizar copia de seguridad de Synaptic.Elija el directorio en donde quiera que se haga la copia de seguridad"
repodir=`zenity --file-selection --directory --title="Seleccione un directorio de destino"`

(

echo "25" ; sleep 1
echo "# comprimiendo a tar.gz" ; sleep 1
tar zcvf apt-synaptic.tgz /etc/apt/ /var/lib/apt/ /var/cache/apt/
mv apt-synaptic.tgz $repodir


echo "100" ; sleep 1
echo "# Copia de Synaptic FINALIZADA"

) |
zenity --progress \
title="AptonUSB" \
text="Guardando una Copia de seguridad" \
percentage=0

zenity --width="350" --info --text "La copia de Synaptic se ha realizado en el directorio $repodir"
if [ "$?" = -1 ] ; then
zenity --error \
text="Backup cancelada."
fi


Y funciona casi perfecto: primero se hace una copia ( archivo .tgz ) en el mismo directorio donde este el scrpt, luego ese archivo se mueve al directorio que se ha elegido.
Mientras se esta haciendo el trabajo aparece una ventana con una barra de progreso en la que parece que no pase nada, se llena hasta el 25" ( o el número que se especifique en: echo "25") hasta que cuando se acaba el trabajo al final llega al 100% ; lo bueno seria que la barra de progreso fuera llenándose poco a poco conforme se va haciendo el trabajo.

El script tal como está es perfectamente funcional, solo haría falta pulirlo para mejorar el aspecto visual en la barra de desplazamiento.

Muchas gracias por tu interés y tu tiempo
Todos somos muy ignorantes. Pero no todos ignoramos las mismas cosas.
Es un placer ayudar, y ver que a alguien le es útil.
Es un placer pedir ayuda y ver que alguien te la da desinteresadamente.
nestoriano

Re: Apt-on-cd ha muerto, crear script apt-on-pendrive con ze

Post by nestoriano »

Exigir a zenity ser visualmente mas profesional es pedir mucho...
El salto abrupto entre 25 y 100 es porque la linea

tar zcvf apt-synaptic.tgz /etc/apt/ /var/lib/apt/ /var/cache/apt/

tarda mucho o nada dependiendo de cuantas cosas haya ahi. El progreso en bash es linea por linea, conocer cuanto falta para terminar de comprimir se puede pero es algo complicado.

Lo que se me ocurre es, al mismo tiempo que realiza la compresion, va aumentando la barra cada x tiempo

echo "0" ; sleep 1
echo "# comprimiendo a tar.gz" ; sleep 1
tar cvzpf apt-synaptic.tgz /tmp/prueba |

(
for i in 1 5 10 50 99
do
echo $i ; sleep 2
done
)

Mientras ejecuta el tar, con "|" ejecuta al mismo tiempo lo que hay entre parentesis, en este caso un aumento de 1-5-10-50-99 cada 2 segundos.
Esta barra no esta nada sincronizado con el proceso de compresion, es solo otra tarea paralela.

Esto es lo que se me ocurre:

Code: Select all

#!/bin/bash

(
    #----------------------------------------------
    echo "0" ; sleep 1
    echo "# comprimiendo a tar.gz" ; sleep 1
    tar cvzpf apt-synaptic.tgz /tmp/prueba | 
    (
      for i in 1 5 10 50 99 
      do
         echo $i ; sleep 2
      done
    )
    #----------------------------------------------


    #----------------------------------------------
    echo "0" ; sleep 1
    echo "# moviendo a repodir" 
    #mv .... repodir  |
    (
      for i in 1 5 10 50 99 
       do
          echo $i ; sleep 0.2
      done
    )
    #----------------------------------------------



    echo "# Copia de Synaptic FINALIZADA"
    echo "100" ; sleep 1


) |
zenity --progress \
title="AptonUSB" \
text="Guardando una Copia de seguridad" \
percentage=0
Se veria un poco mejor si la compresion se realiza como lo hace winff con la codificacion, abrir una terminal y mostrar el proceso (tar con -v). No se como se hace, habria que estudiar mas.
User avatar
hatteras
Level 11
Level 11
Posts: 3886
Joined: Fri Sep 24, 2010 6:43 pm
Location: En el paraiso en la tierra
Contact:

Re: Apt-on-cd ha muerto, crear script apt-on-pendrive con ze

Post by hatteras »

El siguiente script cumple mis gustos, y funciona bastante bien:

#!/bin/bash
zenity --info --text "Script para realizar copia de seguridad de Synaptic.Eliga el directorio en donde quiera que se haga la copia de seguridad"
repodir=`zenity --file-selection --directory --title="Seleccione un directorio de destino"`

(
#----------------------------------------------
echo "0" ; sleep 1
echo "# Creando el archivo tar.gz" ; sleep 1
tar zcvfp apt-synaptic.tgz /etc/apt/ /var/lib/apt/ /var/cache/apt/


(
for i in 1 5 10 50 99
do
echo $i ; sleep 2
done
)
#----------------------------------------------


#----------------------------------------------
echo "0" ; sleep 1
echo "# Moviendolo al directorio de destino"
mv apt-synaptic.tgz $repodir |
(
for i in 1 5 10 50 99
do
echo $i ; sleep 0.2
done
)
#----------------------------------------------



echo "# Copia FINALIZADA"
echo "100" ; sleep 1


) |
zenity --progress \
title="AptonUSB" \
text="Guardando una Copia de seguridad" \
percentage=0

zenity --width="350" --height="350" --timeout=5 --info --text "La copia se ha realizado en el directorio $repodir"
zenity --width="350" --height="350" --timeout=5 --info --text "Y esto es todo..."
if [ "$?" = -1 ] ; then
zenity --error \
text="Backup cancelada."
fi

---------------------------------------------------
Pero me da este mensaje de error cuando lo ejecuto en la terminal:

tar: Eliminando la `/' inicial de los nombres
tar: /etc/apt/trustdb.gpg: No se puede open: Permiso denegado
tar: /var/lib/apt/lists/lock: No se puede open: Permiso denegado
tar: /var/cache/apt/archives/lock: No se puede open: Permiso denegado
tar: Saliendo con fallos debido a errores anteriores

No se si eso quiere decir que no se han copiado bien todos los archivos y/o directorios y me podría dar problemas al descomprimir el archivo .tgz en el directorio raiz para recuperar la copia de seguridad hecha con este script.

Muchas gracias
Todos somos muy ignorantes. Pero no todos ignoramos las mismas cosas.
Es un placer ayudar, y ver que a alguien le es útil.
Es un placer pedir ayuda y ver que alguien te la da desinteresadamente.
nestoriano

Re: Apt-on-cd ha muerto, crear script apt-on-pendrive con ze

Post by nestoriano »

El primer mensaje a mi tambien me ha aparecido varias veces, nunca le ha dado problemas asi que tampoco he investigado a fondo. En google hay algo de informacion sobre eso.

Creo que se refiere a "tar zcvfp apt-synaptic.tgz /etc/apt/ /var/lib/apt/ /var/cache/apt/ "
o a "tar zcvfp apt-synaptic.tgz /etc/apt/ /var/lib/apt/ /var/cache/apt/"

En el primer caso bastaria con eliminarlas y en el segundo habria que hacer un
cd /
tar zcvfp apt-synaptic.tgz etc var/lib/apt var/cache/apt

Los otros 3 mensajes supongo que sera porque son archivos con proteccion de lectura para usuario normal. Intenta hacer un simple "cp" hacia tu home para saber si es legible.

El archivo lock en /var/cache/apt/archives no se cual es su funcion pero creo que no tiene ni un byte de informacion util. Creo que desaparece o desaparece cuando se ejecuta apt-get o similar. El otro lock supongo que sera lo mismo.

El archivo gpg, no tengo idea de que sera. Debe ser algun tipo de clave pero no se cual es el nivel de importancia (por el hecho de que solo el root pueda leerlo).

Si el backup y restauracion funciona sin esos 3 archivos, prueba ejecutar tar con la opcion --exclude=/ruta para que los ignore.
Si se quiere comprimir todo sin importar que sean archivos sin permisos de lectura, hay que ejecutar "sudo tar ...." o mover el script hacia /usr/sbin y ejecutarlo con "sudo script"
User avatar
hatteras
Level 11
Level 11
Posts: 3886
Joined: Fri Sep 24, 2010 6:43 pm
Location: En el paraiso en la tierra
Contact:

Re: Apt-on-cd ha muerto, crear script apt-on-pendrive con ze

Post by hatteras »

Si ejecuto el comando
tar zcvfp apt-synaptic.tgz /etc/apt/ /var/lib/apt/ /var/cache/apt/
directamente, no a traves del script, en la terminal, no me salen los mensajes de error 2, 3,y 4, si que me sale el error 1 y 5, pero luego descomprimiendo el archivo .tgz creando en un directorio temporal veo que los tres archivos correspondientes a los errores 2, 3, y 4 no se han guardado en la copia de seguridad.

De todas formas creo que esos tres archivos no deben ser importantes, ya que haciendo la copia ( la hice hace ya tiempo con el comando ejecutado directamente en la terminal ) en mi portátil , pude hacer que en otro pc con la misma distro tuviera el mismo synaptic con los .deb y las fuentes etc


Si ejecuto el script con permisos de root solo me sale el mensaje de error 1 , y si que se guardan los tres archivos problemáticos en el archivo .tgz Considero que la solución es esa, ejecutar el archivo con permisos de root, y a la hora de descomprimir el contenido del archivo hacerlo también con permisos de root , y hacerlo sobre el directorio raíz / , para que se sobreescriban los archivos y directorios.


Salvo que indiques otra cosa, creo que pueda dar por solucionado el asunto.

Muchisimas gracias por todo
Todos somos muy ignorantes. Pero no todos ignoramos las mismas cosas.
Es un placer ayudar, y ver que a alguien le es útil.
Es un placer pedir ayuda y ver que alguien te la da desinteresadamente.
Locked

Return to “Español - Spanish”