¿Cómo puedo actualizar a systemd-241 en Disco?

¿Cómo puedo actualizar a systemd-241 en Disco?

Hay un error en systemd-240 que afecta a jackdbus, lo que interrumpe toda mi configuración de audio. El error se solucionó en systemd-241. ¿Hay alguna manera de actualizar a systemd-241?

Respuesta1

Otra opción sería recompilar systemd-240 con el parche aplicado, suponiendo que se aplique limpiamente a systemd-240.

Si es posible, es realmente sencillo. Sólo tienes que agregar tu parche a la lista de parches ya utilizados por ubuntu.

Respuesta2

Descargo de responsabilidad

No recomiendo este método como una buena solución al problema. Inténtalo bajo tu propio riesgo.

Además, Ubuntu 19.10 viene con systemd 242, por lo que si planeas actualizar a Ubuntu 19.10, no hay razón para intentar esto.

Una solución "sobre" la instalación actual

Básicamente es la idea que está enLa respuesta de solsticio.: parchea la fuente de la distribución. Pero entonces: no reinstale todo el systemdsistema. Reemplace solo el systemdejecutable; se puede hacer porque el parche afecta solo el código de systemd. De esta manera me aseguro de no estropear mucho la instalación actual.

Mi camino hacia la solución no fue tan “lineal” como lo voy a describir porque al principio quería parchear el sistema original v240 (usando los bits correctos del v241), compilarlo e instalarlo de forma personalizada. Luego me desvié al uso deconstructor.

La siguiente descripción está escrita.como siLo entendí sin rodeos. Espero no haber olvidado detalles en el proceso de limpieza de los pasos.

Seguireste cómoinstalarconstructor, prepare el entorno para la compilación ( sudo pbuilder create --distribution disco --debootstrapopts --variant=buildd), descargue la fuente ( apt-get source systemd). Obtienes tres archivos (dos archivos y un .dsc) y un directorio. Por lo tanto, es probable que desee ejecutar el comando apt-get en una carpeta nueva para evitar la contaminación de archivos en su directorio actual.

Luego, clonarel repositorio github systemdy consulte la etiqueta v241 ( git checkout tags/v241).

Ahora diff -uentre el de Ubuntu src/core/main.cy el de la etiqueta v241 para obtener un parche, digamos my.patch. Lo he editado para eliminar cosas que pueden afectar algo más que el límite de memlock (también se realizó una solución similar para la cantidad de descriptores de archivos abiertos, y también mantuve esto), y también para obtener los encabezados correctamente en forma de :

--- a/src/core/main.c ....
+++ b/src/core/main.c ....

En lugar de ay b, por supuesto, puedes tener otros nombres.

Dentro de la carpeta systemd-240(que se obtiene ejecutando apt-get source systemd) hay debian/patches. Copie my.patchallí y agregue el nombre del archivo al final de debian/patches/series.

Intente construir el paquete ( sudo pbuilder build systemd_240-6ubuntu5.dsc); esto también debería obtener las dependencias, y si todo está bien, tienes el .debin /var/cache/pbuilder/result/; pero es el “original”.

Cambie de directorio systemd-240y ejecute pdebuild --use-pdebuild-internal.

Después de un tiempo… /var/cache/pbuilder/resulthay uno nuevo .deb(mismo nombre que antes…) pero esta vez es el parcheado. Deberías ver una línea si lo haces.

tar -tJf /var/cache/pbuilder/result/systemd_240-6ubuntu5.debian.tar.xz |grep my.patch

siempre que haya nombrado su parche my.patchy que tar.xzasí se llame.

Ahora, descomprima el archivo .debin a-folder( dpkg-deb -R systemd_240-6ubuntu5_amd64.deb a-folder) y, como raíz, cópielo a-folder/lib/systemd/systemden /lib/systemd/. No olvides hacer una copia de seguridad del original /lib/systemd/systemd(le cambié el nombre a __systemd). Si algo sale mal, puedes reemplazar el nuevo por el antiguo, probablemente desde un shell de recuperación.

Después de reiniciar ulimit -ldebería decir unlimited(dependiendo de tu configuración, pero supongo que has leído hasta ahora porque es lo que esperas de tu usuario en el grupo de audio).

Recursos

  • sistema v240 parcheado; No he compilado ni probado este, sipodery desea actualizar systemddesde sus versiones originales, le sugiero utilizar la última versión seleccionando la etiqueta más reciente, por ejemplo, hoy esv243.
  • el parche comoesencia en github, este se aplicó en la systemdfuente de Ubuntu, versión 240-6ubuntu5.7.

Este parche no se genera como se explica en la sección anterior, porque hediferenciadoEl código fuente de Ubuntu con el ya parcheado main.clo puedes encontrar en elsucursal antes vinculada. El resultado final no debería diferir mucho.

nota final

Cuando noté este problema por primera vez, hace algunas veces, después de verificar que la configuración estaba bien, decidí esperar a que Ubuntu lo solucionara (no pude rastrearlo hasta un error de systemd).

Pero hoy me impidió hacer cosas que realmente quería, así que decidí que era hora de hacer algo al respecto.

Aquíencomentario 7es donde encontréel error del sistemaMencioné por primera vez, luego encontré esta pregunta.

Pocas horas más tarde vi también un anuncio de hace dos días de las 19.10.

No es necesario señalar que reemplazar un ejecutable en un “sistema controlado por paquetes” no es necesariamente una muy buena idea. En este caso, sin embargo, por mí está bien.

información relacionada