Как мне обновиться до systemd-241 в Disco?

Как мне обновиться до systemd-241 в Disco?

В systemd-240 есть ошибка, которая влияет на jackdbus, что ломает всю мою аудионастройку. Ошибка была исправлена ​​в systemd-241. Есть ли способ обновиться до systemd-241?

решение1

Другим вариантом будет перекомпиляция systemd-240 с примененным патчем, предполагая, что он полностью применим к systemd-240.

Если это возможно, то это действительно просто. Вам просто нужно добавить ваш патч в список патчей, которые уже используются в Ubuntu.

решение2

Отказ от ответственности

Я не предлагаю этот метод как хорошее решение проблемы. Попробуйте на свой страх и риск.

Более того, Ubuntu 19.10 поставляется с systemd 242, поэтому, если вы планируете обновиться до Ubuntu 19.10, нет смысла пробовать это.

Исправление «поверх» текущей установки

В основном это идея, которая находится вответ solsTiCe: пропатчить исходный код дистрибутива. Но тогда: не переустанавливайте всю systemdсистему. Заменить только systemdисполняемый файл — это можно сделать, поскольку патч влияет только на код systemd. Таким образом я уверен, что не испорчу сильно текущую установку.

Мой путь к решению не был таким «линейным», как я собираюсь его описать, потому что сначала я хотел пропатчить исходную систему v240 (используя нужные биты из v241), собрать ее и установить вручную. Затем я перешел к использованиюpbuilder.

Следующее описание написанобудтоЯ понял это просто. Надеюсь, я не забыл детали в процессе очистки шагов.

Следоватьэто руководствоустановитьpbuilder, подготовьте среду для сборки ( sudo pbuilder create --distribution disco --debootstrapopts --variant=buildd), загрузите исходный код ( apt-get source systemd). Вы получите три файла (два архива и .dsc) и каталог. Поэтому, скорее всего, вы захотите выполнить команду apt-get в совершенно новой папке, чтобы избежать загрязнения файлов в текущем каталоге.

Затем клонируйтерепозиторий systemd githubи проверьте тег v241 ( git checkout tags/v241).

Теперь diff -uмежду Ubuntu src/core/main.cи темой тега v241 для получения патча, скажем my.patch. Я отредактировал его, чтобы удалить вещи, которые могут повлиять не только на ограничение memlock (аналогичное исправление было сделано также для количества открытых файловых дескрипторов, и я сохранил и его), а также чтобы получить заголовки в правильном виде:

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

Вместо aand b, конечно, можно использовать другие имена.

Внутри папки systemd-240(полученной при запуске apt-get source systemd) есть debian/patches. Скопируйте my.patchтуда и добавьте имя файла в конец debian/patches/series.

Попробуйте собрать пакет ( sudo pbuilder build systemd_240-6ubuntu5.dsc); он также должен получить зависимости, и если все в порядке, у вас есть in .deb; /var/cache/pbuilder/result/но это «оригинал».

Смените каталог systemd-240и запустите pdebuild --use-pdebuild-internal.

Через некоторое время… /var/cache/pbuilder/resultтам новый .deb(то же имя, что и раньше…), но на этот раз это пропатченный. Вы должны увидеть строку, если вы это сделаете

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

при условии, что вы назвали свой патч my.patchи что он tar.xzназван так же.

Теперь распакуйте .debв a-folder( dpkg-deb -R systemd_240-6ubuntu5_amd64.deb a-folder), и как root скопируйте a-folder/lib/systemd/systemdв /lib/systemd/. Не забудьте сделать резервную копию оригинала /lib/systemd/systemd(я переименовал его в __systemd). Если что-то пойдет не так, вы можете заменить новый на старый, скорее всего, из оболочки восстановления.

После перезагрузки ulimit -lдолжно появиться сообщение unlimited(в зависимости от вашей конфигурации, но я полагаю, вы дочитали до этого места, потому что это то, что вы ожидаете от своего пользователя в аудиогруппе).

Ресурсы

  • система v240 исправлена; Я не компилировал и не пробовал это — если выможети хотите обновиться systemdс оригинальных версий, то я предлагаю использовать последнюю версию, выбрав последний тег, например, сегодняв243.
  • патч каксуть на github, этот применён к исходному коду Ubuntu systemd, версия 240-6ubuntu5.7.

Этот патч не создается так, как описано в предыдущем разделе, потому что яразличалисьисходный код Ubuntu с уже пропатченными версиями main.cвы можете найти ввышеупомянутая ветвь. Конечный результат не должен сильно отличаться.

Заключительное замечание

Когда я впервые заметил эту проблему, некоторое время назад, проверив, что конфигурация в порядке, я решил подождать, пока Ubuntu исправит ее (мне не удалось связать ее с ошибкой systemd).

Но сегодня это помешало мне сделать то, что я действительно хотел, поэтому я решил, что пришло время что-то с этим сделать.

Здесьвкомментарий 7вот где я нашелошибка systemdупомянул впервые, тогда я и нашел этот вопрос.

Несколько часов спустя я увидел также объявление двухдневной давности от 19.10.

Нет нужды указывать, что замена исполняемого файла в «системе, контролируемой пакетами» — не обязательно очень хорошая идея. В данном случае, однако, меня это устраивает.

Связанный контент