¿Cómo actualizo los paquetes de Ubuntu desde la fuente?

8

Me gustaría crear una versión actualizada del paquete network-manager-openconnect en Ubuntu. Aparentemente necesito obtener la última fuente del paquete:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head

¿Y que? El paquete parece tener una manera de actualizarse desde el último código ascendente usando git. Pero, ¿cómo consigo que haga eso?

James Ward
fuente
Pensé que bzr significaba bazar - bazaar.canonical.com/en
Paul

Respuestas:

6

La construcción de un paquete actualizado desde una sucursal de bzr tiende a diferir en una cantidad justa dependiendo de quién mantiene las sucursales o cómo funciona el paquete en general. Sin embargo, aquí hay algunas pautas para una actualización rápida y sucia de casi cualquier paquete, que se enviará a un PPA:

Consigue la sucursal:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head

Luego cambie a él y actualice el registro de cambios:

dch -i

dch -i simplemente abrirá una nueva entrada en debian / changelog, aumentando la revisión de la versión en uno. Si desea agregar un parche, eso es perfecto, pero si desea actualizar a una versión más reciente del software ascendente, deberá actualizar el número de versión antes del guión (-). Digamos, una versión en 1.2-0ubuntu1 , si inicia dch -i cambiará a 1.2-0ubuntu2 , lo cual es bueno para parchar , pero si necesita una nueva versión, es probable que desee cambiar eso a 1.3-0ubuntu1 .

Si necesita parchear, ahora es el momento de agregar sus cambios. En las ramas que solo tienen un directorio debian / , puede usar bzr bd-do (requiere el paquete bzr-builddeb) para cambiar a un árbol de trabajo donde puede hacer cambios, usar quilt o cualquier sistema de parches, luego "salir 0" para haga que se vuelvan a copiar sus cambios.

Si desea una nueva versión ascendente, una vez que se haya cambiado el registro de cambios, es probable que ejecute un comando similar a este:

debian/rules get-orig-source

Por lo general, esto descargará el tarball correcto del editor principal para comenzar. Si es necesario realizar más cambios, proceda como se indica arriba para "parchar" o cambiar otros archivos en el directorio debian / , de lo contrario ya casi ha terminado:

bzr bd -S

bzr bd se encargará de la construcción. Llamarlo sin argumentos comienza a construirse en su sistema, mientras que llamarlo con -S le dice que prepare un paquete fuente, que incluirá un archivo ..._ source.changes que es lo que desea cargar en su PPA (use dput ppa: <su nombre> / <nombre de su ppa> <cambia el archivo> para hacer eso).


Para los paquetes de NetworkManager, es un poco diferente. Echemos un vistazo a openconnect específicamente:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head network-manager-openconnect

Asegúrese de tener también todas las dependencias de compilación: sudo get-build-deps

Con la rama recuperada, esto leerá el archivo debian / control e intentará descargar todo lo que necesita para construir network-manager-openconnect. Sin embargo, es posible que también necesites git. Una vez hecho esto, ejecute get-orig-source para obtener solo el tarball de la última instantánea de git:

debian/rules get-orig-source

Verás que pasa el texto y aparece un tarball con un número de versión largo. Ese es el último código que puede obtener para nm-openconnect.

Luego deberá actualizar el registro de cambios con el número de versión del tarball, simplemente manteniendo intacto el sufijo -0ubuntu1 .

O bien, cambie debian / changelog con el número de versión específico que desee, luego ejecute: debian / rules get-current-source

Dado que los complementos no cambian mucho, debería poder construir el paquete desde allí, utilizando bzr bd como se indicó anteriormente. De lo contrario, aplique los cambios necesarios como se indicó anteriormente.

No se olvide de bzr commit después de haber realizado cambios.

Primero olvidé agregar, no dude en utilizar el sistema de propuesta de fusión ( Proponer para vincular la página de su sucursal en LP) cuando los cambios que está realizando podrían beneficiar a otros. Por lo general, puede proponer la fusión contra la rama en la que se basa la suya (por ejemplo, lp: ~ network-manager / network-manager / openconnect-ubuntu.head en este caso).

Mathieu Trudel-Lapierre
fuente
Pensé que tenía que olvidar algo: ¡no tenga miedo de mencionar sus cambios para fusionarse en la rama de empaquetado principal si se trata de una reparación de empaque (esto también incluye parches), para que todos puedan beneficiarse de los cambios! :)
Mathieu Trudel-Lapierre
2

Ok actualizado sobre cómo extraer el código de la plataforma de lanzamiento

bzr branch lp: ~ administrador de red / administrador de red / openconnect-ubuntu.head

Lo que esta dosis es extraer el código del lp (servicio de alojamiento de launchpad). Necesitamos encontrar dónde está el código.

man
bzr 343 #type 343 a medida que aparece la página man.

bzr branch FROM_LOCATION [TO_LOCATION]        
       If  the TO_LOCATION is omitted, the last component of the FROM_LOCATION
       will be used.  In other words, "branch ../foo/bar" will attempt to cre‐
       ate  ./bar.   If the FROM_LOCATION has no / or path separator embedded,
       the TO_LOCATION is derived from the FROM_LOCATION by stripping a  lead‐
       ing   scheme   or  drive  identifier,  if  any.  For  example,  "branch
       lp:foo-bar" will attempt to create ./foo-bar.

Intente cambiar al directorio en el que desea trabajar o agregue el directorio donde usted y el código deben ir.

cd / home / [su nombre de usuario] / [ruta al directorio de desarrollo]
o bzr branch lp: ~ network-manager / network-manager / openconnect-ubuntu.head / home / [su nombre de usuario] / [ruta al directorio de desarrollo]
por ejemplo, bzr branch lp: ~ network-manager / network-manager / openconnect-ubuntu.head / home / joe / projects / network-manger / dev

Si ya ha hecho esto, probablemente tenga un directorio en su directorio de inicio

ls ~
./openconnect-ubuntu.head

Debería haber un campo README en ese directorio para ver qué debería estar allí, eche un vistazo al código del proyecto , aquí hay un enlace a README.source

README debe tener instrucciones sobre cómo construir ese proyecto individual.

Otras herramientas útiles de bzr para instalar

sudo apt-get install bzr-builddeb bzr-builder edredón bzr-explorer

El bzr-explorere te permitirá explorar tus repositorios de bzr que has creado en tu máquina en una interfaz gráfica de usuario.

Otra nota. Es posible que necesite extraer toda la fuente del administrador de red para construir la conexión abierta de un componente. Puede haber muchas dependencias y entre diferentes componentes.

Debe crear una solución para el paquete actual de opneconnect y luego crear un parche utilizando todas las herramientas de diferencias que utiliza. Y envíelo al mantenedor del paquete.

O si desea utilizar su nuevo paquete de arreglos localmente, desea crear un archivo de paquete .deb.

Crear un paquete esto es bastante complicado leer los siguientes enlaces

nelaaro
fuente
Gracias. Pero todavía no estoy seguro de cómo extraer el último código de network-manager-openconnect de git. Los archivos que extraje con bzr tienen un script en debian / rules que parece ser capaz de hacer el git pull pero no sé cómo ejecutar el script correctamente.
James Ward,
@james launchpad extrae la fuente ascendente de la reposicion git del proyecto nework-manager que es alojado por la comunidad gnome. Por lo tanto, no necesita usar git para extraer el repositorio. lea la documentación de bzr y haga algunos de los tutoriales para tener una idea de cómo funciona bzr. Otro sabio echa un vistazo a git en stackoverflow
nelaaro
@james más simple podría ser simplemente descargar el archivo .tar.gz al final de esta página o directamente usando este enlace
nelaaro
Parece que bzr tiene una forma simple de ramificarse y luego actualizar a la última fuente original.
James Ward,