Cómo crear deb con dpkg-buildpackage -rfakeroot (desde un programa compilado previamente desde código fuente)(ejemplo Inkscape 1.0)
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í:
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.
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í:
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
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
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
Publicar un comentario