Red de conocimiento informático - Material del sitio web - Cómo crear paquetes de Ubuntu utilizables a partir del código fuente

Cómo crear paquetes de Ubuntu utilizables a partir del código fuente

Utilice dpkg-source -x para crear el directorio de trabajo foo.dsc a partir de foo.orig.gz y foo.diff.gz

foo.dsc: un directorio de código fuente sin la distribución, más el directorio debian y Los metaarchivos en el directorio constituyen un directorio de trabajo de código fuente que puede generar paquetes binarios deb. De hecho, el directorio tomado de apt-get

source ha sido descomprimido por dpkg-source -x. Las funciones principales de dpkg-source

-x son: 1. Descomprimir 2. Aplicar el parche en foo.diff.gz al archivo original. De esta manera, los archivos fuente en el directorio foo han sido parcheados con el paquete de código fuente deb.

En el directorio foo, ejecute dpkg-buildpackage -us

-uc para compilar el paquete. Los parámetros -us y -uc no están firmados y son adecuados para uso local en compilaciones locales. Este comando tiene dos salidas, una es el paquete binario deb y la otra es el paquete fuente. ¿Por qué necesita generar un paquete de código fuente? Debido a que puede cambiar algunos archivos, se generará un nuevo diff.gz para registrar todos los cambios en el código fuente original. Es más conveniente publicar o guardar los cambios. La próxima vez solo necesitará generar un nuevo .dsc. dpkg-source -x en el archivo generará un código fuente idéntico. Si no realiza ningún cambio, el nuevo paquete fuente será el mismo que tenía cuando creó el código fuente. También puede utilizar los parámetros -b y -S para controlar si esta compilación produce sólo paquetes binarios o sólo paquetes fuente.

Los dos metaarchivos más importantes, debian/control y debian/rules, determinan qué paquetes binarios se construirán a partir de este directorio de código fuente. Simplemente bloquee los paquetes binarios que no desea compilar. Las dependencias de tiempo de ejecución para paquetes binarios también se pueden ver en la declaración del paquete, y los archivos de control también declaran dependencias para el proceso de compilación, pero puede pasar el parámetro -d a dpkg-buildpackage para ignorar las dependencias de compilación.

El archivo debian/rules es en realidad un Makefile. Puede ejecutar make -f debian/rules target para ejecutar un destino por separado. Un archivo de reglas es básicamente una colección de llamadas a funciones de script de debhelper (como dh_*), que son responsables de la mayor parte del proceso de compilación. Los objetivos de limpieza e instalación de uso común también se encuentran en el archivo de reglas. Parte del trabajo realizado en el Makefile basado en el paquete de código fuente, como make clean, debe reemplazarse con make -f debian/rules clean.

Ligeramente diferente del proceso Make en el sentido tradicional, de forma predeterminada, cada vez que se compila dpkg-buildpackage, en realidad completará la generación del script de configuración desde configure.ac, generará el Makefile y compilará el código fuente. El código hace todo el trabajo de instalar los binarios, incluso si no cambia configure.ac o cambia el archivo .c del código fuente, lo hará automáticamente si falla la compilación. Si la compilación falla, debe intentar modificar el código fuente para reconstruirlo. A veces es necesario probar este proceso hasta que la compilación sea exitosa. Si el paquete es muy grande, llevará mucho tiempo pasar el parámetro -nc. para permitir que dpkg-buildpackage conserve los resultados de la compilación actual. Al igual que el make tradicional, se reiniciará donde lo dejó. Por supuesto, una vez que finalice la modificación del código fuente, debe ejecutar el comando "dpkg-buildpackage -us -uc" sin el parámetro -nc nuevamente para reconstruir completamente el paquete; de ​​lo contrario, se producirá un error al generar el paquete fuente. .

dpkg-buildpackage no tiene que preocuparse por cambiar automáticamente los archivos fuente (es decir, los archivos generados por dpkg-source

-x), siempre que, por supuesto, realmente cambie el archivos "fuente", por ejemplo,

Al crear software, el enfoque más común es ajustar los parámetros /configure según las necesidades del sistema, como -enable-xxx o -disable-xxx. y agregue un prefijo de anulación al destino predeterminado en el archivo de reglas para personalizar los parámetros. El número de versión del paquete binario de salida en realidad se extrae del registro de cambios (en lugar de escribirse en el archivo de control).