Tengo la fuente de un programa (tomado de cvs / svn / git / ...) y me gustaría construir un paquete Debian / Ubuntu para él. El paquete está presente en los repositorios, pero:
- Es una versión anterior (sin las funciones que necesito)
- Necesito opciones de compilación ligeramente diferentes a las predeterminadas.
¿Cuál es la forma más sencilla de hacerlo? Me preocupan un par de cosas
- ¿Cómo puedo comprobar si he enumerado todas las dependencias correctamente? (Puedo obtener algunas sugerencias al ver de qué dependía la versión anterior, pero es posible que se hayan agregado nuevas dependencias).
- ¿Cómo puedo evitar que el sistema de actualización instale la versión anterior en el repositorio en una actualización?
- ¿Cómo puedo evitar que el sistema instale una versión más nueva (cuando esté disponible), sobrescribiendo mi paquete personalizado?
Respuestas:
puede usar el paquete especial "checkinstall" para todos los paquetes que aún no están en debian / ubuntu.
Puede usar "uupdate" (
apt-get install devscripts
) para construir un paquete desde la fuente con las fuentes debian existentes:Ejemplo de libdrm2:
fuente
libdrm-2.3.1
exactamente? También de dóndelibdrm-2.4.1.tar.gz
vino (mi suposición inicial es que es el binario compilado de la aplicación que queremos empaquetar en un deb, pero reemplazando la versión existente, ¿es correcto?)You must put some 'source' URIs in your sources.list
, elimine el comentario de las líneas deb-src en su/etc/apt/sources.list
Primero, la pregunta del título: Asumiendo que el directorio debian ya está allí, esté en el directorio fuente (el directorio que contiene el directorio debian) e invoque dpkg-buildpackage. Me gusta ejecutarlo con estas opciones:
lo que significa que no firme el resultado y no limpie.
Obtener las dependencias es un arte negro. La forma "oficial" es comprobar que la compilación depende si el paquete se compila solo con el sistema base, los paquetes "esenciales para la compilación" y las dependencias de compilación que ha especificado. No conozco una respuesta general para las dependencias regulares, solo ingrese :)
Mi conocimiento puede estar desactualizado en este caso, pero para abordar ambos: use dpkg --set-selections. Suponiendo que nullidentd era el paquete que deseaba quedarse, ejecútelo como root
Alternativamente, dado que está construyendo desde la fuente, puede usar una época para establecer el número de versión artificialmente alto y nunca más lo molestará. Para usar una época, agregue una nueva entrada al archivo debian / changelog y coloque un 99: delante del número de versión. Dado mi ejemplo nullidentd, la primera línea de su registro de cambios actualizado leería:
El enlace de Bernard es bueno, especialmente si tiene que crear el directorio debian usted mismo; también son útiles la referencia para desarrolladores y la página de recursos generales . El enlace de Adam también se ve bien, pero no estoy familiarizado con él.
fuente
Para lo que quiera hacer, probablemente quiera usar la fuente diff de debian, por lo que su paquete es similar al oficial, aparte de la versión anterior utilizada. Puede descargar el diff de origen de packages.debian.org , o puede obtenerlo junto con el archivo .dsc y el archivo de origen original usando "apt-get source".
Luego descomprime tu nueva versión de la fuente original, cambia a ese directorio y aplica la diferencia que descargaste haciendo
Luego, realice los cambios que deseaba para compilar las opciones y compile el paquete haciendo
fuente
Ejemplo de compilación basada en Ubuntu para ccache:
Más detalles: http://blog.aplikacja.info/2011/11/building-packages-from-sources-in-debianubuntu/
fuente
fuente
Yo creo esto es el paquete Debian 'bible'.
Bueno, es la guía para nuevos mantenedores de Debian, por lo que gran parte de ella no se aplicará, pero cubren lo que va a donde ir.
fuente
Si está utilizando Ubuntu, consulte el proyecto pkgcreator: http://code.google.com/p/pkgcreator
fuente
Aquí hay un tutorial para construir un paquete Debian.
Básicamente, necesitas:
Por lo general, hago todo esto en mi Makefile, así que puedo escribir make para escupir el binario y empaquetarlo de una vez.
fuente
El
pbuilder
es una excelente herramienta para el control de ambas dependencias de construcción y dependencias mediante la creación de un sistema de base limpia dentro de un entorno chroot. Al compilar el paquete dentro de pbuilder, puede verificar fácilmente las dependencias de compilación y, al probarlo dentro de un entorno de pbuilder, puede verificar las dependencias.fuente
Si desea una forma rápida y sucia de instalar las dependencias de compilación, use:
Esto instala las dependencias. Necesita líneas de fuentes en su sources.list para esto:
Si está transfiriendo paquetes de prueba a estable, tenga en cuenta que las dependencias pueden haber cambiado. El comando apt-get build-deb instala las dependencias para los paquetes fuente en su repositorio actual.
Pero, por supuesto, dpkg-buildpackage -us -uc le mostrará las dependencias desinstaladas.
Si desea compilar con más frecuencia, use cowbuilder.
Luego crea un área de construcción:
sudo DIST = squeeze ARCH = amd64 cowbuilder --crear
Luego compile un paquete fuente:
Observe dónde pone cowbuilder el paquete resultante.
¡Buena suerte!
fuente