Compilar y descompilar un .deb

enero 7, 2009 at 6:27 pm (Consola, Debian, Software Libre)

Hola a todos aquellos que desean iniciarse en el mundo del Software Libre aqui les dejo un Script que he encontrado espero para que les resulte. Es una cosa muy facil debes seguir estos pasos:

  1. Abrir el kwrite (en caso de Kde) o gedit (en caso de Gnome), si esto no te sale o no los tienes intalados solamente habre algún Editor de Texto.
  2. Ahora debes pegar esto que te muestro:
#!/bin/bash

#——————————————————————
# Copyright (C)  2008, Maikel Stinga & Mario Izquierdo
# 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=$3

ayuda() {
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
fi

if [ “$modificador” == “–help” ]; then
ayuda
fi

if [ “$modificador” == “–desempaqueta” ] ; then
desempaqueta
fi

if [ “$modificador” == “-d” ] ; then
desempaqueta
fi

if [ “$modificador” == “–empaqueta” ]; then
empaqueta
fi

if [ “$modificador” == “-e” ]; then
empaqueta
fi

#si no hemos deficnido destino ponemos uno por defecto
if [ “$destino” == “” ]; then
destino=$mirror_extra
fi

if [ “$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

3.Pegalo en el Editor de texto y guardalo con este nombre empaqueta_deb.sh (Debiado a que esto es un Bash) debes guardarlo en /usr/bin. Me inmagino ya lo que piensas no puedes guardarlo hay debido a que no tienes permiso, por tanto debes hacerlo por consola siendo root, después ejecutar el mc y busca el sitio donde debes pegarlo (/usr/bin).

4.Luego siendo root debes darle los siguientes permisos al archivo

chmod 775 empaqueta_deb.sh

5.Ahora para ejecutar el Script debes hacer esto:
Para desempaquetar:

empaqueta_deb.sh -d /ruta donde esta el archivo

Para empaquetar:

empaqueta_deb.sh -e

Nota: El .deb generado se guardara en /tmp/paquete

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: