En esta guía paso a paso, veamos cómo crear paquetes Debian desde el origen en Debian, Ubuntu y otros sistemas basados en APT como Linux Mint.
Debian y los sistemas basados en Debian como Ubuntu utilizan la herramienta de paquete avanzado o APT en resumen, para instalar, actualizar, actualizar y eliminar software desde la línea de comandos.
Por lo general, el administrador de paquetes APT almacena la lista de repositorios en el archivo llamado /etc/apt/sources.list
y en cualquier archivo con el sufijo .list
en el directorio /etc/apt/sources.list.d/
.
Cuando instalamos un paquete, apt
El comando recupera la versión binaria o precompilada del paquete dado de estos repositorios.
Además de instalar paquetes binarios, APT también puede permitirle descargar el código fuente de un paquete. Entonces puede agregar algunas funciones en el código fuente, compilar el paquete a partir del código fuente y finalmente instalar la versión modificada del paquete.
¿Por qué deberíamos construir un paquete desde la fuente?
Puede haber muchas razones para crear un paquete desde el origen. Aquí hay algunas razones por las que podría pensar ahora:
- Inspeccione el código fuente para encontrar un error.
- Agregue nuevas funciones en los paquetes que ya no se desarrollan activamente.
- Instala la versión más reciente de un paquete desde la fuente. En general, los paquetes en los repositorios oficiales pueden ser un poco antiguos.
- Y lo que es más importante:aprenda a compilar paquetes Debian desde el código fuente.
Instalar las herramientas de compilación necesarias
Para compilar un paquete binario desde el código fuente, primero debemos instalar las herramientas de compilación necesarias. Dependiendo de la herramienta de línea de comandos para compilar el paquete binario, es posible que deba instalar cualquiera de los siguientes paquetes:
- dpkg-dev
- scripts de desarrollo
Estos paquetes proporcionan numerosas herramientas para crear paquetes binarios a partir del código fuente.
Para instalar "dpkg-dev"
, ejecuta:
$ sudo apt install dpkg-dev
El comando para instalar "devscripts"
el paquete es:
$ sudo apt install devscripts
Habilitar repositorios de origen
Asegúrese de haber habilitado los repositorios de origen.
Para hacerlo, abra /etc/apt/sources.list
archivo:
$ sudo vim /etc/apt/sources.list
Verá algunas líneas en él como a continuación:
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://in.archive.ubuntu.com/ubuntu focal main restricted # deb-src http://in.archive.ubuntu.com/ubuntu focal main restricted [...]
En el archivo anterior, todas las líneas que comienzan con uno o dos hashes (#) son solo comentarios, solo para información. Y las líneas sin hashes son los repositorios aptos .
En el repositorio de apt, las líneas que comienzan con "deb" son relativas a paquetes binarios, que los usuarios pueden instalar utilizando el administrador de paquetes apt. Y las líneas que comienzan con "deb-src" son relativas a los paquetes fuente. Esto es útil para los desarrolladores. De forma predeterminada, "deb-src" está comentado en la lista de fuentes.
Para descargar los paquetes fuente, debe descomentar la línea "deb-src". Eliminar el # símbolo para descomentar una línea. Después de descomentar, las líneas del repositorio deberían tener el siguiente aspecto:
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://in.archive.ubuntu.com/ubuntu focal main restricted deb-src http://in.archive.ubuntu.com/ubuntu focal main restricted [...]
Guarde y cierre el archivo. Actualice la lista de repositorios usando el comando:
$ sudo apt update
Descargar paquetes fuente
Descarga el código fuente de un paquete usando "apt source <package-name>"
dominio. Por ejemplo, el siguiente comando descargará el código fuente de "Hello World!"
programa:
$ apt source hello
Salida de muestra:
Reading package lists... Done Need to get 734 kB of source archives. Get:1 http://in.archive.ubuntu.com/ubuntu focal/main hello 2.10-2ubuntu2 (dsc) [1847 B] Get:2 http://in.archive.ubuntu.com/ubuntu focal/main hello 2.10-2ubuntu2 (tar) [726 kB] Get:3 http://in.archive.ubuntu.com/ubuntu focal/main hello 2.10-2ubuntu2 (diff) [6560 B] Fetched 734 kB in 2s (336 kB/s) dpkg-source: info: extracting hello in hello-2.10 dpkg-source: info: unpacking hello_2.10.orig.tar.gz dpkg-source: info: unpacking hello_2.10-2ubuntu2.debian.tar.xz
Como puede ver, he descargado el código fuente del programa Hello World.
$ ls hello-2.10 hello_2.10-2ubuntu2.debian.tar.xz hello_2.10-2ubuntu2.dsc hello_2.10.orig.tar.gz
Ver el contenido real del código fuente:
$ ls hello-2.10/ ABOUT-NLS ChangeLog INSTALL NEWS README-release aclocal.m4 configure debian lib man tests AUTHORS ChangeLog.O Makefile.am README THANKS build-aux configure.ac doc m4 po COPYING GNUmakefile Makefile.in README-dev TODO config.in contrib hello.1 maint.mk src
Instalar dependencias de compilación para el paquete
A continuación, también debemos instalar las dependencias para ese paquete. Para hacerlo, ejecute:
$ sudo apt build-dep hello
Ahora hemos descargado el código fuente del paquete e instalado las dependencias requeridas para construir este paquete. A continuación, realice los cambios en el código fuente.
Modificar el código fuente de un paquete debian
Cd en el directorio que contiene el código fuente del paquete. En nuestro caso, es hola-2.10 .
$ cd hello-2.10
Modifique el código según su deseo. El código está en el archivo "hello.c"
en "src"
directorio.
$ vi src/hello.c
Modifique el código y/o realice cualquier cambio. Una vez que haya terminado de editar el código, guarde y cierre el archivo.
Ahora es el momento de crear el paquete .deb real.
Crear paquetes Debian desde el código fuente
Descargamos el código fuente y modificamos el código. Construyamos el paquete desde la fuente. Podemos hacer esto de tres maneras:
- Usando
"dpkg-buildpackage"
comando - Usando
"debuild"
comando - Descargue la fuente y compílela directamente
Método 1:uso de dpkg-buildpackage:
Asegúrese de haber instalado "dpkg-dev"
paquete.
Y luego ejecute el siguiente comando para compilar el paquete desde la fuente:
$ dpkg-buildpackage -rfakeroot -b -uc -us
Aquí,
dpkg-buildpackage
- Comando para crear paquetes binarios o fuente a partir de fuentes.-rfakeroot
- Cree un entorno fakeroot para simular privilegios de raíz (para evitar problemas de propiedad y permisos).-b
- Cree solo el paquete binario.-uc
- No firme criptográficamente el registro de cambios. es decir, no firme el.buildinfo
y.changes
archivos-us
- No firme el paquete fuente.
Asegúrese de ejecutar el comando anterior en el directorio principal del árbol de fuentes. De lo contrario, no funcionará.
Si la compilación es exitosa, verá un mensaje como el siguiente:
[...] dpkg-deb: building package 'hello' in '../hello_2.10-2ubuntu2_amd64.deb'. dpkg-deb: building package 'hello-dbgsym' in 'debian/.debhelper/scratch-space/build-hello/hello-dbgsym_2.10-2ubuntu2_amd64.deb'. Renaming hello-dbgsym_2.10-2ubuntu2_amd64.deb to hello-dbgsym_2.10-2ubuntu2_amd64.ddeb dpkg-genbuildinfo --build=binary dpkg-genchanges --build=binary >../hello_2.10-2ubuntu2_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included)
¡Felicidades! Hemos creado con éxito un paquete .deb desde la fuente. Ahora, regrese al directorio principal y verá el archivo .deb recién creado:
$ cd ..
$ ls
Salida de muestra:
hello-2.10 hello_2.10-2ubuntu2.dsc hello_2.10-2ubuntu2_amd64.deb hello-dbgsym_2.10-2ubuntu2_amd64.ddeb hello_2.10-2ubuntu2_amd64.buildinfo hello_2.10.orig.tar.gz hello_2.10-2ubuntu2.debian.tar.xz hello_2.10-2ubuntu2_amd64.changes
Método 2 - Usando debuild
Asegúrese de haber instalado "devscripts"
paquete.
Luego, cree el paquete binario ejecutando el siguiente comando desde el árbol fuente:
$ debuild -b -uc -us
Tras una compilación exitosa, el .deb
resultante el paquete se guardará en el directorio principal.
Método 3:descargar y compilar directamente
Este es el método más fácil y directo que los dos métodos anteriores. En este método, descargamos el código fuente del paquete y le pasamos el "--compile"
opción para construir el binario en una sola línea de comando a continuación:
$ sudo apt-get source --compile hello
El comando anterior descargará el código fuente de "hello"
programa y construye el .deb
paquete y guárdelo en el directorio actual.
Instalar el archivo .deb
Vaya a la ubicación donde se encuentra el .deb
el archivo está guardado e instálelo como se muestra a continuación:
$ sudo dpkg -i hello_2.10-2ubuntu2_amd64.deb
Si ve algún mensaje de error de dependencias faltantes, ejecute:
$ sudo apt install -f
Como puede ver, ¡compilar un paquete de Debian desde el código fuente en Linux es muy fácil!
Lectura relacionada:
- Cómo compilar paquetes desde el origen mediante CheckInstall
- Cómo crear fácilmente paquetes de Linux para varias plataformas
- Recrear paquetes binarios de Debian que ya están instalados en un sistema
- Cómo convertir paquetes de Linux con Alien
- Cómo convertir paquetes DEB en paquetes Arch Linux
Espero que esto ayude.