Este sencillo script me lo facilitó un amigo y realmente no sé de donde lo sacó pero está muy bueno. Lo que el escript hace básicamente es que desempaqueta
un .deb dentro de una carpeta temporal y luego después que lo modifiques, te lo vuelve a empaquetar. Las opciones vienen explicadas dentro del script una vez que le damos todos los permisos y lo ejecutamos. El script contiene esto adentro:
#!/bin/bash
#——————————————————————
# Copyright (C) 2005, Mario Izquierdo mariodebian[AT]gmail[dot]com
# You may distribute this software under the GPL License
#——————————————————————# directorio donde montaremos el mirror
# no poner la ultima barra
# edita esta variable
#
#despues añadir al sources.list la siguiente linea
#deb file:///mirror/extra ./mirror_extra=”/mirror/extra”
# NO EDITES DESDE AQUI
#variables más comodas
modificador=$1
fichero=$2
destino=$3ayuda() {
echo “Uso de empaqueta_deb.sh”
echo “”
echo ” Desempaquetar:”
echo ” empaqueta_deb.sh –desempaqueta (-d) /ruta/donde/este/archivo.deb”
echo ” Esto descomprime nuestro deb a un directorio temporal”
echo ” /tmp/paquete/tmp/”
echo “”
echo ” Empaquetar:”
echo ” empaqueta_deb.sh –empaqueta (-e) [-a /destino/del/mirror]”
echo ” Esto empaqueta el deb préviamente desempaquetado”
echo ” generando de nuevo el archivo .deb”
echo ” “
echo ” ejemplos:”
echo “”
echo ” empaqueta_deb.sh -d /usr/src/sofilin_0.0.3_i386.deb”
echo “”
echo ” empaqueta_deb.sh -e -a /mirror/extra”
exit 0
}desempaqueta() {
#salimos si no hay argumento en $fichero
if [ “$fichero” == “” ]; then
echo “No se ha especificado ningún paquete .deb”;
exit 1
fi#miramos que no haya otro paquete para sobreescribirlo accidentamente
if [ -f “/tmp/paquete/tmp/DEBIAN/control” ]; then
nombre_p=`cat /tmp/paquete/tmp/DEBIAN/control |grep ^Package: | awk ‘{print $2}’`
version_p=`cat /tmp/paquete/tmp/DEBIAN/control |grep ^Version: | awk ‘{print $2}’`
echo “###################################”
echo “# #”
echo “# Ya hay un paquete deb en /tmp #”
echo “# ======># ${nombre_p}_${version_p} “
echo “# ¿Quiere seguir? #”
echo “# #”
echo -n “################################### (S/n) “
read seguir
if [ “$seguir” == “n” ];then
echo “Saliendo…”
exit 1
fi
fi#localizamos el deb (ruta relativa o absoluta lo sabemos porque
# $fichero comience o no por /)
if [ “`echo $fichero | cut -c1`” == “/” ];then
fichero=$fichero
else
fichero=`pwd`/$fichero
echo “la ruta completa es: $fichero”
fi#descomprimir cada cosa en su sitio
cd /tmp/
rm -rf paquete 2>/dev/null
mkdir paquete
cd /tmp/paquete
ar x $fichero >/dev/null
mkdir tmp
cd tmp
tar xzpf ../data.tar.gz
mkdir DEBIAN
cd DEBIAN
tar xzpf ../../control.tar.gz
echo “Desempaquetado.”
exit 0
}empaqueta() {
cd /tmp/paquete/tmp/
dpkg –build . ..
cd ..
ls *.deb
echo “Aquí tienes tu .deb”
}if [ “$#” == “0” ]; then
ayuda
fiif [ “$modificador” == “–help” ]; then
ayuda
fiif [ “$modificador” == “–desempaqueta” ] ; then
desempaqueta
fiif [ “$modificador” == “-d” ] ; then
desempaqueta
fiif [ “$modificador” == “–empaqueta” ]; then
empaqueta
fiif [ “$modificador” == “-e” ]; then
empaqueta
fi#si no hemos deficnido destino ponemos uno por defecto
if [ “$destino” == “” ]; then
destino=$mirror_extra
fiif [ “$fichero” == “-a” ]; then
echo “Copiando paquete en $destino …”
cp *.deb $destino
echo “Actualizando mirror…”
cd $destino
dpkg-scanpackages ./ /dev/null | gzip -9c > ./Packages.gz
if [ ! -f “$destino/Sources.gz” ]; then
#creamos el Sources.gz si no existe
touch Sources
gzip Sources
fi
echo “”
echo “HECHO”
fi
[…] Crear paquetes .deb Desempaqueta y empaqueta .deb […]
amigos podrias explicar mejor en funcionamiendo del script.”’
No entiendo que es lo que quieres que explique 😦
Esto es mucho para mi. Podrás contribuir compilando el juego Rig of rods.
http://download.rigsofrods.com/
Desde ya los que no sabemos y queremos jugar te lo vamos a agradecer.
WordPress modifica las comillas y los guiones dobles con lo cual el script es inusable tal y como está puesto. Además genera un archivo deb de “mala calidad” según el Centro de Software.
De todas formas SIEMPRE se agradece el esfuerzo que hace todo el mundo para ayudar a los demás y este es un claro ejemplo de ello y porque el software libre es grande.
Muchas gracias