Cómo crear deb con dpkg-buildpackage -rfakeroot (desde un programa compilado previamente desde código fuente)(ejemplo Inkscape 1.0)

Tal vez usted se pregunte ¿para qué hacer esto?, bueno es que ya no están actualizando mucho las versiones de programas de 32 bits (y hasta los están dejando de compilar) así que esta es la mejor manera de poder tener actualizada la aplicación para tener las últimas correcciones y mejoras y creando el deb uno puede instalar el programa en varios ordenadores e incluso compartirlo en Internet  

Nota: Este tutorial también sirve para 64 bits.
 
 

Añadir el nombre del Mantenedor o Responsable a su Sistema para que se compile con ese nombre (Opcional)

Esto es totalmente opcional

Para hacer esto ponga en una terminal lo siguiente (teniendo instalado Gedit):

gedit ~/.bashrc 

allí debe llegar hasta abajo y con enter hacerse un espacio::


 y allí debe de poner lo siguiente:

DEBEMAIL="your.email.address@example.org"
DEBFULLNAME="Firstname Lastname"
export DEBEMAIL DEBFULLNAME

y cambiar con sus datos, a mi me queda así:

 

ahora cierro Gedit y reinicio el ordenador. Con esto una vez que usted haya creado el deb al revisarlo en Synaptic se verá allí su nombre y su correo en la descripción (Pestaña: Comunes / Responsable o Mantenedor).
 

Paso 1.- Compilar con anterioridad el programa

Primero usted debe haber compilado antes su programa y asegurarse de que funciona correctamente. Para este ejemplo he compilado Inkscape desde código fuente en el siguiente tutorial:

Compilar Inkscape 1.0 desde código fuente en MX Linux 19, antiX 19 de 32 bit (basado en Debian 10 Buster)
https://facilitarelsoftwarelibre.blogspot.com/2020/05/compilar-inkscape-1-desde-codigo-fuente.html

ustedes lo pueden usar como ejemplo ese tutorial para instalar algún otro programa, aunque algunos programas puedan ser diferentes igual para que tengan una idea. También les cuento que después de compilarlo deben desinstalarlo para probar correctamente el deb generado (allí en el tutorial al final les explico).

Pienso que siempre que ustedes quieran usar "dpkg-buildpackage -rfakeroot" al programa deben de haberlo compilado antes pues es más fácil encontrar las dependencias faltantes.

Información sobre esta instalación:

- Laptop Dell Inspiron 1750
- MX Linux 19.3 de 32 bits



 

Construir desde código fuente

Paso 2.- Crear GPG Key (Opcional)

El siguiente paso si lo desea lo puede omitir. 

Poner en la terminal:

 

gpg --gen-key

 

aparecerá en la terminal:

 

Ponga sus datos, yo aquí pongo los míos:




 a continuación aparecerá una ventana donde hay que escrbir una contraseña, creela con letras mayusculas y minuscula, numeros y algún caracter dificil pero esta ventana congela las demás ventanas así que aconsejo en un cuaderno escribir la contraseña y luego escribirla en la ventana:

y aparecerá así:


Recuerde guarde sus datos porque se le pedirán luego.


Paso 3.- Preparando el entorno

Es necesario instalar los siguientes paquetes (esto es necesario hacer independientemente del programa en el que vaya a crear el deb):

sudo apt-get install build-essential autoconf automake \
autotools-dev dh-make debhelper devscripts fakeroot \
xutils lintian pbuilder


Paso 4.- Obtener y preparar el código fuente

Entrar en la siguiente dirección para descargar el código fuente de Inskcape:

https://inkscape.org/es/release/all/source/archive/xz/


Nota: Con el paso del tiempo aparecerán más versiones

 

Consejo.- No use el administrador de archivo Dolphin, pues más abajo hay un momento en que usted va a manipular el código fuente, y  el problema es que Dolphin crea un archivo de configuración llamado:

.directory

el cual está oculto (se puede ver con Alt + .), y luego si usted por curiosidad entra en el código fuente desde Dolphin éste creará el archivo y cuando usted vaya a compilar le va a aparecer un error diciendole lo siguiente:



Crear la carpeta build

Cree una carpeta en su HOME con el nombre build (con minuscula), así:


Éntre allí y ponga allí el código fuente. 

Pasos para compilar el código fuente sin modificarlo.- Los siguientes pasos son para compilar el código fuente sin modificarlo, digo esto pues el comando a usar es para eso, pero en caso de que usted quiera modificar algo del código fuente más abajo le indico como.

Ahora hay que descomprimirlo:



 

Nota: Dentro de la carpeta build usted va a poder poner más carpetas de otros programas y dentro de cada carpeta de programa una carpeta con un nombre de versión correspondiente

queda así:


ahora para ver mejor las cosas a thunar yo le voy a poner la vista "Detalles":

 

es para ver bien el nombre del archivo, ahora borre el código fuente pues esa carpeta tiene el nombre muy largo y para el momento de compilar desde el código fuente vamos a utilizar un nombre más corto:


ahora debo renombrar la carpeta y debe tener el nombre así:

nombre-version

y como vieron en la imagen de arriba la carpeta tiene un nombre muy grande pero al inicio dice así: "inkscape-1.0.1" por lo que lo renombraré:

 


 

 y lo dejaré así:


así queda:


ahora comprima esa capeta a .tar.gz así:

 
asegúrese que esté en tar.gz
 

y me queda así:


Ahora cree una carpeta con el nombre de su programa, con minúsculas, para este caso: inkscape


entre en al carpeta con el nombre de su programa, en el caso del mío inkscape y allí cree una carpeta con el número de la versión, en este caso para mi:

 

y así:


 

Bien, ahora dentro de esa carpeta hay que poner la carpeta del código fuente y el archivo .tar.gz que creamos del código fuente, is usted desea puede abrir una pestaña para desde allí buscar los archivos y hacer el procedimiento:

 


aquí les dejo una imagen de cómo me queda a mi:


Ahora debo entrar en la carpeta del código fuente:


y abrir una terminal allí:

 

y así quedo en la terminal:



 ahora allí debo yo de escribir lo siguiente:

dh_make -e wachin.id@gmail.com -f ../inkscape-1.0.1.tar.gz

ustedes deben de poner su correo y el nombre de su programa:

dh_make -e sucorreo@servidor.com -f ../suprograma-1.0.1.tar.gz

aquí les dejo una imagen de como me queda en mi caso:



y doy ENTER y me pregunta:


luego:


Allí hay un mensaje que dice:

Currently there is not top level Makefile. This may require additional tuning Done. Please edit the files in the debian/ subdirectory now

la traducción es:

Actualmente no hay Makefile en nivel superior. Esto puede requerir hacer un ajuste adicional. Edite ahora los archivos del subdirectorio debian/ 

Nota: Ese mensaje no quiere decir que está mal, avance nomás (cuidado vaya a pensar que es un mensaje de error y vaya a ya no querer seguir con el tutorial).

En nuestro directorio apareció un nuevo subdirectorio llamado "debian" que contiene los archivos necesarios para un ensamblaje posterior. Ahora debemos editar la información sobre nuestro paquete:

control


el archivo abierto está así:

este archivo es un poco complicado, no deben tocar lo siguiente:

Si quieren no lo editen aquí (se lo puede editar después de compilado).

Además en la misma carpeta "debian", encontrará un archivo "copyright" que necesita editar y poner allí el tipo de licencia.

Asegúrese de que el correo electrónico utilizado en el siguiente archivo sea correcto (debe ser el mismo que se utilizó para la generación de claves gpg):

changelog

Importante: Les cuento que la primera vez que edité el archivo control lo edité mal y ya no me quería compilar el programa, así que lo dejé así nomás y lo edité después de compilarlo.

Posible error.- Por un caso no entren en la carpeta


Compilar un código fuente modificado (opcional)

En caso de que usted quiera compilar este Inkscape haciéndole alguna modificación, ejemplo podría usted querer cambiar algún icono por otro, u otra modificación, el comando que debe usar es:

dh_make -e su.email@serviciodemensajeria.com --createorig

esto estando en una terminal ubicada en la carpeta donde estuviera el código fuente, además el codigo fuente comprimido que puede estar en tar.gz o .tar.xz que está afuera al lado de esa carpeta usted debe eliminarlo pues con este comando se va a crear otro tar.gz o .tar.xz  el cuál tendrá los cambios que usted le habrá hecho (necesario para la compilación).

Paso 5. Compilar el paquete

Bien, así usted haya o no editado los archivos indicados igual puede avanzar, ahora es necesario poner en la terminal:

dpkg-buildpackage -rfakeroot

 aquí una imágen:


Y aparece así:

 

y si en algún otro programa que usted esté compilando no se puede así, ponga 

dpkg-buildpackage -rfakeroot -b -uc -us

Donde:

      sudo: Algunos programas lo necesitan para este proceso
     dpkg-buildpackage: comando para crear paquetes binarios o fuente a partir de fuentes.
     -rfakeroot: crea un entorno fakeroot para simular privilegios de root (para evitar problemas de propiedad y permisos).
     -b: compila solo el paquete binario.
     -uc - No firma criptográficamente el registro de cambios. es decir, no firma los archivos .buildinfo y .changes
     -us: no firma el paquete fuente.

Tiempo transcurrido

A las 13H18 ha empezado la Compilación en esta Laptop Dell Inspiron 1750

A las 15H32 termina la compilación. 

restando eso da 2H12


Bueno yo había salido de casa, parece que debía aparecer una ventana par poner la clave gpg pero no importa:


allí al final hay un mensaje que dice: "fallo", en realidad no se para qué es eso, parecería ser que es para enviar el deb por internet a algún servidor, bueno, lo que importa para mi es que está generado el .deb en el directorio en un nivel anterior:


y allí ahora están los archivos generados:


ahora voy a poner la vista detalles:




6.- Cómo editar un .deb

En caso que alguna vez usted necesite editar un deb, se puede, en el caso de este deb voy a copiar el nombre:

y lo pego en algún editor de texto:

 

inkscape_1.0.1-1_i386.deb
 

ahora abrimos una terminal allí en esa ruta donde está el deb:

 


y para editar el archivo control preparo el siguiente texto con el nombre completo del .deb así:

dpkg-deb -x inkscape_1.0.1-1_i386.deb tmpdir
dpkg-deb --control inkscape_1.0.1-1_i386.deb tmpdir/DEBIAN
gedit tmpdir/DEBIAN/control
dpkg -b tmpdir inkscape_1.0.1-1_i386_OK.deb


copio todas las cuatro lineas y las pego allí en la terminal:



y se abrirá gedit con el archivo control abierto. Ejemplo, si el deb no tenía nombre usted se lo puede poner, o le puede poder algúna sección https://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections


 

y como ven allí arriba en las flechas sólo editaré esas partes, luego regreso a la terminal y doy enter en la cuarta línea que está sin ejecutarse:

 

y listo se habrán guardado los cambio en el deb

También les explico que manualmente pueden realizar cualquier cambio a cualquier archivo que esté dentro de la carpeta: tmpdir

la siguiente imagen es de cuando el cambio ya está hecho:

 


 

Ejemplos de cambios a realizar, añadir información mime

Si desean pueden ver cómo está construido el deb original que esté subido a los servidores del programa en el sistema operativo linux que sea, ejemplo para este es MX Linux entonces como está construido con debian debo de buscar aquí:

https://www.debian.org/distrib/packages


allí está inkscape:

https://packages.debian.org/buster/inkscape

allí puedo descargar el deb que ellos han construido y puedo ver si me falta algún archivo a mi para scarlo de allá y ponerlo en el mío

Ejemplo el equipo de Escuelas Linux me explicaban que a mi archivo generado le faltaba el archivo mime:



  

ver hacerca de mime en:

Creating new mime types in a shortcut Debian packaging | plashless
https://plashless.wordpress.com/2013/08/29/creating-new-mime-types-in-a-shortcut-debian-packaging/

y como ven efectivamente hay una carpeta con ese archivo la cual no se generó, pero el deb (se lo descomprime con clic derecho extraer aquí) de Debian Buster si lo tiene:


y ese se lo copio a mi proyecto y como explico arriba lo puse en la carpeta tmpdir y luego si di ENTER en la cuarta línea en la terminal y listo generado correctamente.

También puede usar los deb desde

https://packages.ubuntu.com/

 

IMPOSIBILIDAD EN LA COMPILACIÓN POR EL ARCHIVO RULES (POSIBLE SOLUCIÓN)

Traté de crear el deb de ffmpeg 4.2.4 pero me aparece esto:


  y lo que pasa es que al archivo rules en este caso le faltan más instrucciones las cuales investigué y no las encontré

Pero hay otra manera de poer crear el deb sin necesidad del archivo rules, pero es bastante extenso el tutorial que he hecho:

Creando paquete deb del editor de Markdown "VNote" en MX Linux 21 al estilo Alien (este método podría servir para crear el deb desde cualquier programa Qt si no tiene el archivo rules ni install_manifest.txt )
https://facilitarelsoftwarelibre.blogspot.com/2022/11/creando-paquete-deb-de-vnote-en-mx-linux-21.html


Dios les bendiga

Basado en:

How to create debian package from source (Example)
https://coderwall.com/p/urkybq/how-to-create-debian-package-from-source?fbclid=IwAR0WUM-6L1ce7HtEPYWVH87irWQjvy19Vh1Pwa7oGvUZPj53X9KFfdxBdqY

Guide for Debian Maintainers
https://www.debian.org/doc/manuals/debmake-doc/index.en.html
Chapter 3. Tool Setups
https://www.debian.org/doc/manuals/debmake-doc/ch03.en.html#email-setup

3.1. Email address
Various Debian maintenance tools recognize your email address and name to use by the shell environment variables $DEBEMAIL and $DEBFULLNAME.
Let’s setup these packages by adding the following lines to ~/.bashrc [7].

Add to the ~/.bashrc file.

DEBEMAIL="your.email.address@example.org"
DEBFULLNAME="Firstname Lastname"
export DEBEMAIL DEBFULLNAME}

Comentarios