Crear paquetes .deb para Ubuntu [Solucionado]

Imagen de dvspeed
0 puntos

Hola, estoy creando una aplicacion en C y python y he estado leyendo mucho por internet sobre como empaquetar mi programa.
No uso ni automake ni ./configure, solo un simple Makefile editado a mano para compilar la aplicacion que es muy pequeña unas 200-300 lineas contando todos los ficheros fuente.
Lo que he hecho hasta ahora ha sido ejecutar dh_make y dpkg-buildpackage -rfakeroot, pero me da este error:
dpkg-source: fallo: no se puede representar el cambio de prueba-0.1/Question-file: el contenido del fichero binario ha cambiado
dpkg-source: fallo: añada «Question-file» en «debian/source/include-binaries» si desea guardar el binario modificado en el archivo tar de Debian

Además tengo otra duda: ¿una vez creado el paquete deb fuente, el otro se crea automaticamente?

Lo siento, pero esque estoy bastante perdido en esto.

Imagen de cousteau
+1
0
-1

Si sólo quieres crear el paquete .deb, puedes usar dpkg-deb.
Tienes que crear una carpeta donde recrearás el sistema de archivos con los archivos que vas a poner. Algo así:

datos/
|-- DEBIAN/
|   `-- control
`-- usr/
    |-- bin/
    |   `-- miprograma
    `-- share/
        |-- applications/
        |   `-- miprograma.desktop
        |-- miprograma/
        |   `-- . . .
        `-- pixmaps/
            `-- miprograma.png

Tienes que incluir una carpeta llamada "DEBIAN", como si estuviese colgada de /, y dentro un archivo llamado "control" que tiene información del paquete. Para ver un ejemplo, abre un paquete .deb con el gestor de archivadores y mira dentro de control.tar.gz. También te puede interesar incluir scripts en shell llamados preinst, postinst, prerm y postrm, que se ejecutarán antes/después de instalar/desinstalar.

Una vez acabado, crea el .deb con:

dpkg-deb -b datos/ miprograma_1.0.0_all.deb
+1
0
-1

«E: dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct the problem» significa que dpkg se ha interrumpido y que tienes que ejecutar "sudo dpkg --configure -a" para corregir el problema.
Imagen de dvspeed
+1
0
-1

Vale esto lo he pillado pero una preguntas más:
-¿Hace falta tener un paquete .deb fuente para que más tarde se pudiera colgar en los repos de ubuntu o solo es opcional si subes el codigo fuente a cualquier otro sitio como launchpad, quiero decir codigo fuente puesto sin ninguna organizacion particular, tal y como lo tengo yo?

+1
0
-1
Imagen de cousteau
+1
0
-1

Ya para cosas de autoempaquetado (que compilen automáticamente y todo eso), repositorios y demás, no sé exactamente qué hay que hacer, lo siento. Échale un vistazo a la ayuda de launchpad, igual dicen algo.

+1
0
-1

«E: dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct the problem» significa que dpkg se ha interrumpido y que tienes que ejecutar "sudo dpkg --configure -a" para corregir el problema.
Imagen de Sanguinario_Joe
+1
0
-1

Para los repositorios de Ubuntu (launchpad) necesitas subir el empaquetado de codigos fuente, y no solo eso, debe ir firmado con la huella de tu ordenador (que debes haber creado y pasado a launchpad).

Basicamente el proceso es el siguiente:

1.- Creas la sigui9entee carpeta:

~/debian

Dentro copias la carpeta donde tengas tu programa (el makefile debe estar en el directorio root)

2.- Ejecutas el siguiente comando en la carpeta de tu programa (dentro de debian):

dh_make -e tuemail@email.com -c gpl3 -r

-e para poner el mail del autor
-c para poner el tipo de licencia (GPL3 en este caso)
-r para crear una copia de los originales (los necesitaras para desempaquetar).

3.- Se te crea una subcarpeta llamada debian, alli debes editar los archivos de configuracion (hay un monton de tutoriales). Solo ten cuidado con:

- En changelog, la distribucion debe ser lucid, o aquella en la que estes compilando.
- En control ten cuidado de que la seccion exista.
- En control asegurate de poner todas las dependencias (distintas para construir el paquete que para instalarlo). Si no haces esto bien, el servidor de launchpad no podra compilar el paquete.

De todas formas, si tratas de subir algo invalido a launchpad, te responderan un mail rechazandola, y la razon.

4.- Edita el make file para que tenga un directorio destino valido.

En la parte donde instalas (i.e.- sudo make install) tendras algo como esto:

cp -f -R bin $(PREFIX)/share/SonSilentSea

Donde PREFIX valdra por defecto /usr, pues debes añadir delante la variable $(DESTDIR). Esta variable no vale nada generalmente, asi que no cambia nada, pero cuando construyes el paquete si que tiene un valor, y sirve para meterlo en una subcarpeta de debian que sera tomada como el directorio raiz (i.e.- /)

cp -f -R bin $(DESTDIR)$(PREFIX)/share/SonSilentSea

4.- Ejecuta el siguiente comando para construir el paquete (en el mismo sitio donde ejecutastes el anterior, donde tienes el makefile).

dpkg-buildpackage -rfakeroot -pgpg -TuClavePGP

Alli debes poner tu clave PGP que tienen guardada en launchpad. Durante el proceso te pedira tu contraseña (la que usaste al construir la clave pgp) un par de veces.

5.- Deconstruye el paquete con el comando:

debuild -S -rfakeroot -pgpg -TuClavePGP

6.- Envialo a launchpad mediante los comandos:

cd ..
dput ppa:UsuarioLaunchpad/NombrePPA PaqueteAEnviar_source.changes

7.- Launchpad lo extraera, instalara todas las dependencias, lo compilara, y creara el paquete precompilado con todos los binarios. Si algo va mal te escribiran devolviendote el logfile de la compilacion.

8.- Si todo va bien, en unas horas (maximo 4) lo tendras en la red, listo para instalar con apt-get!

Saludos!!!

+1
0
-1
Imagen de dvspeed
+1
0
-1

Ok, muchas gracias, ya he conseguido subir mi paquete

+1
0
-1