apt-get source nombre-paquete-fuente
. Para ello necesitará una línea deb-src
en el archivo /etc/apt/sources.list
y archivos de índice actualizados (es decir: apt-get update
). Si siguió las instrucciones en el capítulo sobre la configuración de APT (revise la Sección 6.1, “Contenido del archivo sources.list
”) debería cumplir estas condiciones. Sepa, sin embargo, que descargará los paquetes fuente de la versión Debian mencionada en la línea deb-src
. Si necesita otra versión probablemente necesite descargarla manualmente de un repositorio Debian o desde el sitio web. Para ello debe obtener dos o tres archivos (con extensiones *.dsc
— por control de fuente Debian: «Debian Source Control» — *.tar.comp
y a veces *.diff.gz
o *.debian.tar.comp
— donde el valor de comp es uno de gz
, bz2
o xz
dependiendo de la herramienta de compresión utilizada), luego ejecute dpkg-source -x archivo.dsc
. Si puede acceder directamente al archivo *.dsc
a través de una URL existe una forma más sencilla de obtener todo ejecutando dget URL
. Este programa (que puede encontrar en el paquete devscripts) obtiene el archivo *.dsc
en la dirección provista, analiza su contenido y obtiene automáticamente el o los archivos a los que hace referencia. Una vez se ha descargado todo, extrae el paquete de fuentes (a menos que se haya usado la opción -d
o --download-only
).
2:4.1.17+dfsg-2
podemos crear la versión 2:4.1.16+dfsg2falcot1
, que indica claramente el origen del paquete. Esto además hace que el número de versión del paquete sea mayor al del que provee Debian para que el paquete se instalará fácilmente como una actualización al paquete original. La mejor forma de realizar dicho cambio es con el programa dch
(por cambios Debian: «Debian CHangelog») del paquete devscripts ejecutando algo similar a dch --local falcot1
. Esto invoca un editor de texto (sensible-editor
— este debería ser tu editor favorito si es mencionado en las variables de entorno VISUAL
o EDITOR
o el editor predeterminado de lo contrario) que nos permitirá documentar las diferencias introducidas en esta recompilación. Este editor nos mostrará que dch
realmente cambió el archivo debian/changelog
.
debian/rules
, el cual se encarga de todos los pasos en el proceso de compilación del paquete. En los casos más simples, es sencillo encontrar las líneas sobre la configuración inicial (./configure …
) o la compilación en sí ($(MAKE) …
o make …
). Si no se ejecutan específicamente estos programas probablemente son un efecto secundario de otra orden explícita, en cuyo caso refiérase a la documentación de las mismas para aprender cómo cambiar el comportamiento predeterminado. Con paquetes usando dh
, puede necesitar agregar un reemplazo para los comandos dh_auto_configure
o dh_auto_build
(ver las páginas de los respectivos manuales para obtener explicaciones de cómo hacerlo).
debian/control
, que contiene una descripción de los paquetes generados. En particular, este paquete contiene líneas Build-Depends
que controlan la lista de dependencias que se deben cumplir en el momento de compilar un paquete. Éstas líneas generalmente hacen referencia a las versiones de los paquetes que se encuentran en la distribución de la que proveen los paquetes fuente pero que pueden no estar disponibles en la distribución en la que estamos recompilando. No hay una forma automatizada para determinar si una dependencia es real o sólo está presente para garantizar que sólo se intente compilar con la última versión de una biblioteca — esta es la única forma de forzar que autobuilder utilice una versión específica de un paquete durante su compilación, por lo que los desarrolladores Debian frecuentemente utilizan dependencias de compilación con versiones estrictas.
INSTALL
— le ayudarán a encontrar las dependencias adecuadas. Idealmente, podrá satisfacer todas las dependencias en la distribución que utilice para recompilar; de lo contrario, comienza un proceso recursivo en el que debemos retroadaptar los paquetes mencionados en el campo Build-Depends
antes de poder finalizar con el paquete deseado. Algunos paquetes pueden no necesitar ser retroadaptados y puede instalarlos tal cual durante el proceso de compilación (un ejemplo notable es debhelper). Sepa que el proceso de retroadaptación puede volverse muy complejo rápidamente si no tiene cuidado. Por lo tanto, debe mantener al mínimo las retroadaptaciones siempre que sea posible.
.deb
). El programa dpkg-buildpackage
gestiona todo el proceso.
Build-Depends
o si no están instalados los paquetes relacionados. En tal caso, es posible evitar este chequeo con la opción -d
de dpkg-buildpackage
. Sin embargo, al ignorar explícitamente estas dependencias corre el riesgo de que el proceso de compilación falle en una etapa posterior. Lo que es peor, el paquete puede parecer compilar correctamente pero no ejecutar correctamente: algunos programas desactivan automáticamente algunas de sus funcionalidades cuando una biblioteca necesaria no está disponible al momento de compilarlo.
debuild
; éste ejecuta dpkg-buildpackage
normalmente, pero también agrega una invocación de un programa que ejecuta muchos chequeos para validar el paquete generado según la normativa Debian. Este script también limpia el entorno para que las variables de entorno locales no «contaminen» la compilación del paquete. El programa debuild
es una de las herramientas de devscripts, que comparte un poco de consistencia y configuración para facilitar la tarea del desarrollador.